部屋番号ロケーター
会議で同僚から間違った部屋番号を与えられたとき、私は仕事で興味深い問題解決テクニックに出会いました。時々、会議に向かう途中で、私のチームのメンバーが間違った部屋番号を送信します。これは通常、デスクで急いでいて、太い指で間違ったキーを押しているためです。
おもしろいことに、間違った部屋に着くと、私は通常、テンキーを想像することで彼らが本当に意味した部屋を推測できます:
そして、隣接する数字を推測することにより、彼らは押すことを意図していました。
チャレンジ
あなたの課題は、同僚が1桁しか入力しないと仮定して、建物のオフィス番号(000〜999)を受け取り、可能なタイプミスを出力する関数を記述することです。
次の表に、数字キーパッドで隣接する数字を示します。
0 -> 1,2
1 -> 0,2,4
2 -> 0,1,3,5
3 -> 2,6
4 -> 1,5,7
5 -> 2,4,6,8
6 -> 3,5,9
7 -> 4,8
8 -> 5,7,9
9 -> 6,8
入力
3桁の数字: 000-999
。正確に3桁の入力を想定しています。数値が100未満または10未満の場合、先行ゼロが与えられます。(つまり、004および028)。
出力
可能な部屋のリスト。部屋番号の間に区切り記号がある限り、これは任意の形式にすることができます。(つまり、スペース、コンマ、改行など。)数値が100未満または10未満の場合、出力として先行ゼロを使用できるかどうかは、ユーザー次第です。(つまり、004は004 04 4
、028は028 28
)
テストケース(先行ゼロはオプション):
008 -> 108, 208, 018, 028, 005, 007, 009
123 -> 023, 223, 423, 103, 113, 133, 153, 122, 126
585 -> 285, 485, 685, 885, 555, 575, 595, 582, 584, 586, 588
777 -> 477, 877, 747, 787, 774, 778
963 -> 663, 863, 933, 953, 993, 962, 966
555 -> 255, 455, 655, 855, 525, 545, 565, 585, 552, 554, 556, 558
これはcode-golfであるため、各言語のバイト単位の最短コードが優先されます。
933
そうだったはずなので、修正しました。