Вдохновленный вызовом Google Code :
Латинский алфавит содержит 26 символов, а телефоны имеют только десять цифр на клавиатуре. Мы хотели бы упростить написание сообщения вашему другу, используя последовательность нажатий клавиш для обозначения нужных символов. Буквы отображаются на цифры, как показано ниже. Например, чтобы вставить символ B, программа нажимает 22. Чтобы последовательно вставить два символа с одной и той же клавиши, пользователь должен сделать паузу, прежде чем нажать клавишу еще раз. Пробел '' должен быть напечатан для обозначения паузы. Например, 2 2 обозначает AA, а 22 обозначает B.
Каждое сообщение будет состоять только из строчных букв az и пробелов ''. Нажатие ноль испускает пробел.
Ваша задача состоит в том, чтобы написать наименьшую функцию, которая принимает входную строку и возвращает последовательность нажатий клавиш, необходимую для создания ввода в виде строки или вывода его на стандартный вывод. Функция, которая является наименьшим количеством байтов, побеждает.
Пример ввода / вывода
phone("hi")
44 444
phone("hello world")
4433555 555666096667775553
Другие уточнения
- Паузы должны добавляться только при необходимости и должны быть пробелом ''.
- Каждое сообщение будет состоять только из строчных букв az и пробелов ''. Печать
0
для обозначения пробелов. - Нет внешних библиотек.
- Только входная строка может быть передана вашей функции.
- Чтобы сделать другие языки конкурентоспособными, объявление основной функции не учитывается, равно как и импорт других стандартных библиотек.
#include
S,import
S иusing
S не в счет. Все остальное делает. Это включает в себя#define
s и вспомогательные функции. См. Правило 2 в этом вопросе, если вы не уверены. - Несколько пробелов могут быть обозначены как
00
или0 0
так как вам действительно не нужно делать паузу между пробелами
{}
частью сигнатуры функции? Например, если мой код function f(){alert('hi');}
, я должен считать символы alert('hi');
или {alert('hi');}
?
t9
работает по-разному: вы должны нажать каждую клавишу один раз, чтобы получить слово.