Телефонная клавиатура
Оригинал: Phone KeypadУ меня один из тех старых телефонов, где текст набираешь цифровыми клавишами: например, чтобы ввести «Y», трижды нажимаешь девятку. В некоторых словах буквы, соответствующие одной цифре, идут подряд. Когда это происходит, приходится делать паузы между буквами, так что при наборе такие слова весьма раздражают. Какое английское слово содержит наибольшее количество букв с одной клавиши?
— Стюарт Бишоп
На этот вопрос можно ответить с помощью следующей головоломной shell-команды, которая одновременно вызывает головную боль и находит в заданном списке все слова, в которых буквы с одной клавиши встречаются несколько раз подряд:
cat wordlist.txt | perl -pe 's/^(.*)$/\L$& \U$&/g' | \
tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' '2223334445556667777888999' | \
grep -P "(.)\1\1\1\1\1"
Если верить этому скрипту, победитель — слово nonmonogamous («немоногамный»), при вводе которого придётся набрать одну за другой семь букв (nonmono), «живущих» на клавише «6»[1].↲У этого слова ничья с nonmonotonic («немонотонный»). Несомненно, оба победителя проигрывают более неочевидным словам, которых не было в моих списках.
Предложения для телефонной клавиатуры
Редко встретишь слово, все буквы которого соответствуют одной цифре; распространённые слова[2]↲Такие, как "tutu".↳ с этим свойством не длиннее нескольких букв. И всё же, мы можем составить из них «a high def MMO on TV» («MMO в высоком разрешении по телевизору») — фразу, каждое слово которой задействует единственную клавишу.
Таких фраз сколько угодно, но некоторые из них слегка перегибают палку:
Подобные проблемы с набором текста характерны не только для старых телефонных клавиатур. Для любой системы ввода можно найти фразы, набирать которые неудобно.
QWERTY-клавиатуры
Гикам печатного слова хорошо известен тот факт, что stewardesses («стюардессы») — это самое длинное слово, которое можно набрать на QWERTY-клавиатуре только левой рукой.
В сущности, не используя правую руку, можно вводить целые предложения. Попробуйте, например, набрать такое: «We reserved seats at a secret Starcraft fest» («Мы забронировали места на тайном Starcraft-фестивале»). Неудобно, мм?
Давайте посмотрим ещё несколько предложений (сочинённых при помощи куда более запутанных shell-команд и скриптов на Python[3]),↲Я составил эти предложения следующим образом: искал по текстовым логам фрагменты, удовлетворяющие некоторым условиям, а затем соединял их в случайном порядке с помощью цепей Маркова. Код, который я использовал, можно посмотреть здесь.↳ которые удовлетворяют всевозможным ограничениям:
Только левая рука
Только правая рука
Только средний ряд
Только верхний ряд
И наконец, если кто-нибудь спросит, почему вы свернули активность в социальных сетях, вам хватит верхнего ряда, чтобы объяснить:
От переводчиков
Стоп-стоп-стоп, а как же русская раскладка?
— Все читатели «Что если?»
Если пользоваться русским словарём из состава myspell, то аналогом nonmonogamous в русском языке будет «симпомпончик». Чтобы набрать «мпомпон», нужно 7 раз нажать на клавишу «5». Рецепт получения слов пришлось слегка адаптировать для работы с многобайтовыми кодировками и русской телефонной раскладкой:
cat wordlist.txt | sed -e 's/^\(.*\)$/\L\1 \U\1/' | \
sed -e 'y/АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ/222233333444455556666777788889999/' | \
grep -P "(.)\1\1\1\1\1"
Классический алгоритм, использующий цепи Маркова, выдаёт для русского текста не такие замечательные результаты, как для английского. Перемешав в случайном порядке фрагменты предложений, гораздо проще получить связный английский текст, грамматика русского страдает сильнее. Ещё хуже ситуация становится, если наложить ограничение на встречающиеся буквы. И всё же, слегка модифицировав алгоритм и «скормив» ему Ильфа и Петрова, Толстого и ещё кое-что, а потом разобрав вывод вручную, можно получить интересные результаты.
Только левая рука
Только средний ряд