Следующая революция в наборе текста на ноутбуках была выпущена SwiftKey первого апреля 2014 года . Тем не менее, я хочу быть первым, кто напишет наноклон для просмотра, но, так как я не могу найти хороший текст в библиотеке реального текста и не могу их ждать, я спрашиваю здесь.
задача
Напишите программу, которая принимает текст свайпом и выводит эквивалент реального текста. Пример:
Input: hgrerhjklo
Output: hello
Когда пользователь делает:
Другие примеры:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
правила
- Программа возьмет одно слово «слово» на стандартный ввод или argv
- Первая и последняя буква введенного пальца будет соответствовать первой и последней букве реального слова.
- Вы можете предположить, что пользователь будет делать достаточно прямые линии, но вы можете использовать данные образца для проверки этого (я сделал данные образца, и я сделаю окончательные данные теста)
- Для неоднозначного ввода, вы можете сделать выбор любого выхода, но я постараюсь устранить всю неоднозначность из тестовых данных
- Это слово будет в этом списке слов (но сильно ударил). Список слов будет находиться в текущем каталоге и может быть прочитан (разделены новой строкой, будет иметь имя
wordlist
, без расширения). - Размах будет содержать только строчные буквенные символы
- Размах может содержать дублированные символы, если пользователь делает паузу на клавише
- Программа должна выводить на стандартный вывод (регистр не имеет значения)
- Программа должна вернуться
0
как код возврата - Вы должны указать команду запуска, команду компиляции (если необходимо), имя и какой входной путь использовать
- Применяются стандартные лазейки (хотя они могут не помочь)
- Не допускаются не встроенные библиотеки
- Предпочтительны детерминированные, не гольфовые / запутанные решения
- Нет записи файла, сети и т. Д.
- Ваш код должен выполняться за одну секунду или меньше (ваш код запускается один раз за слово)
- Оценки выполняются на процессоре Intel i7 Haswell с 4 виртуальными кодами (2 реальных), поэтому вы можете использовать потоки, если вам нужно
- Максимальная длина кода 5000 байтов
- Используемый язык должен иметь бесплатную (не пробную) версию для Linux (Arch Linux, если это имеет значение)
Критерий победы
- Победителем является наиболее точное решение (оценивается контрольной программой с использованием предоставленного списка тестов)
- Популярность это разрыв связи
- Таблица очков будет обновляться каждые несколько дней
- Тайм-ауты и сбои считаются сбоями
- Это испытание будет выполняться в течение двух или более недель, в зависимости от популярности.
- В окончательной оценке будет использоваться другой, случайно выбранный список слов (той же длины, из того же списка слов)
Другие
- Вы можете использовать управляющую программу для проверки вашей программы
- Если вы нетерпеливы и хотите, чтобы ваша программа обновлялась / добавлялась быстро, начните выпуск или запрос по запросу по адресу https://github.com/matsjoyce/codegolf-swipe-type/blob/master.
- Записи поддерживаются на https://github.com/matsjoyce/codegolf-swipe-type/blob/master/entries
- Журналы каждого запуска программы ведутся по адресу https://github.com/matsjoyce/codegolf-swipe-type/blob/master/logs.
- Основной журнал по адресу https://github.com/matsjoyce/codegolf-swipe-type/blob/master/log.log
- Положение каждого ключа будет указано в виде csv-файла в текущем каталоге
keypos.csv
, где значения x и y указаны относительноQ
(см. Https://github.com/matsjoyce/codegolf-swipe-type/blob/master/. keypos.csv ) - Каждая клавиша имеет размер 1,5 х 1,5 см (такая же единица, как в keypos.csv)
Текущие табло
список тестов ( логи ):
Three Pass Optimizer:Errors: 0/250 Fails: 7/250 Passes: 243/250 Timeouts: 0/250
Corner Sim: Errors: 0/250 Fails: 9/250 Passes: 241/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 17/250 Passes: 233/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 19/250 Passes: 231/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 63/250 Passes: 187/250 Timeouts: 0/250
Corner Sim: Errors: 0/250 Fails: 10/250 Passes: 240/250 Timeouts: 0/250
Three Pass Optimizer:Errors: 2/250 Fails: 14/250 Passes: 234/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 16/250 Passes: 234/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 17/250 Passes: 233/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 67/250 Passes: 183/250 Timeouts: 0/250
Финальный забег
список тестов ( логи ):
Corner Sim: Errors: 0/250 Fails: 14/250 Passes: 236/250 Timeouts: 0/250
Three Pass Optimizer:Errors: 0/250 Fails: 18/250 Passes: 232/250 Timeouts: 0/250
Direction Checker: Errors: 0/250 Fails: 20/250 Passes: 230/250 Timeouts: 0/250
Turnaround: Errors: 0/250 Fails: 23/250 Passes: 227/250 Timeouts: 0/250
Discrete Fréchet Distance:Errors: 0/250 Fails: 30/250 Passes: 220/250 Timeouts: 0/250
Regex Solver: Errors: 0/250 Fails: 55/250 Passes: 195/250 Timeouts: 0/250
Молодцы всем и hgfdsasdertyuiopoiuy swertyuiopoijnhg!
l