Натхненний викликом Google Code :
Латинський алфавіт містить 26 символів, а телефони мають лише десять цифр на клавіатурі. Ми хотіли б спростити написання повідомлення вашому другу, використовуючи послідовність натискань клавіш, щоб вказати потрібні символи. Букви відображаються на цифрах, як показано нижче. Наприклад, щоб вставити символ B, програма натискатиме 22. Для того, щоб вставити два символи послідовно з однієї клавіші, користувач повинен зробити паузу, перш ніж натиснути клавішу вдруге. Символ пробілу '' повинен бути надрукований для позначення паузи. Наприклад, 2 2 позначає AA, тоді як 22 позначає B.
Кожне повідомлення буде складатися лише з малих символів az та пробілів ''. Натискання нуля випускає пробіл.
Ваше завдання полягає в тому, щоб написати найменшу функцію, яка приймає рядок введення, і повертає послідовність натискань клавіш, необхідну для отримання введення у вигляді рядка або виведення його в stdout. Виграє функція, яка є найменшою кількістю байтів.
Приклад введення / виводу
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
працює інакше: вам потрібно клацнути кожну клавішу один раз, щоб отримати слово.