Номер комнаты Локатор
Я столкнулся с интересной техникой решения проблем на своей работе, когда мне дали номер комнаты коллеги для встречи. Время от времени, по пути на встречу, член моей команды будет отправлять мне неправильный номер комнаты, как правило, потому что они торопятся за своим столом и толстым пальцем ошибаются ключом.
Интересно, что по прибытии в ту комнату, я обычно могу догадаться, какую комнату они действительно имели в виду, представляя цифровую клавиатуру :
и угадав соседний номер они хотели нажать.
Вызов
Ваша задача состоит в том, чтобы написать функцию, которая берет номер офисного здания (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
вход
Трехзначное число: 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
Это код-гольф , поэтому выигрывает самый короткий код в байтах для каждого языка.
933
поэтому я исправил это.