Наступна революція у наборі текстів на ноутбуках була випущена першого квітня 2014 року SwiftKey . Однак я хочу бути першою людиною, яка написала розмахуючий нано-клон, але, оскільки я не можу знайти хорошого перенесення тексту до бібліотеки реального тексту, і я не можу їх чекати, я прошу тут.
Завдання
Напишіть програму, яка бере шрифт тексту та виводить еквівалент реального тексту. Приклад:
Input: hgrerhjklo
Output: hello
Коли користувач робить:
Інші приклади:
Input: wertyuioiuytrtjklkjhgfd
Output: world
Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg
Output: programming
Input: poiuygfdzxcvhjklkjhgres
Output: puzzles
Input: cvhjioiugfde
Output: code
Input: ghiolkjhgf
Output: golf
Правила
- Програма займе одне промальоване слово на stdin чи argv
- Перша і остання літера прокладеного введення буде дорівнювати першій і останній літери справжнього слова
- Ви можете припустити, що користувач зробить досить прямі лінії, але ви можете використовувати зразки даних для підтвердження цього (я зробив вибіркові дані, і я зроблю остаточні дані тесту)
- Для неоднозначного введення можна зробити вибір будь-якого виводу, але я спробую усунути всю неоднозначність з даних тесту
- Це слово буде в цьому списку слів (але проведіть пальцем). Список слів буде у поточному каталозі і може бути прочитаний (розділений новий рядок, буде названо
wordlist
, без розширення). - Проведення пальцем буде містити лише рядкові букви
- Проведення пальцем може містити дублюються символи, якщо користувач робить паузу на клавіші
- Програма повинна виводити на stdout (випадок не має значення)
- Програма повинна повернутися
0
як код повернення - Ви повинні надати команду run, команду компіляції (за потреби), назву та шлях введення для використання
- Застосовуються стандартні лазівки (хоча вони можуть не допомогти)
- Не дозволяється використовувати вбудовані бібліотеки
- Переважними є детерміновані рішення, що не мають гольфу та затуманені
- Немає написання файлів, створення мереж тощо.
- Ваш код повинен працювати протягом однієї секунди або менше (ваш код запускається один раз на слово)
- Виконання балів проводиться на процесорі 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
, яка не подвоюється.