У меня проблема с клавиатурой (более вероятная проблема с моим браузером). Иногда, когда я нажимаю на новое текстовое поле и начинаю печатать, весь мой текст выходит назад. Через очень короткий промежуток времени (для целей задачи мы скажем, что это 10 миллисекунд) он снова начинает печатать вперед. Кажется, что сначала мой курсор не двигается, когда я начинаю печатать, поэтому все буквы вставляются в начало текстового поля.
Например, если бы я печатал python
и набирал pyt
первые 10 миллисекунд, результат был бы
hontyp
задача
Ваша задача состоит в том, чтобы смоделировать это поведение как можно меньше байтов.
вход
Вы можете принять участие любым разумным способом. Однако вы не можете принимать входные данные как два отдельных поля. Задержка в 10 миллисекунд должна начинаться, когда программа начинает разрешать ввод. То есть вам может потребоваться предварительная обработка перед разрешением ввода, которая не должна учитываться до 10 миллисекунд.
Некоторая снисходительность допускается во времени, пока она в среднем составляет 10 миллисекунд и отключается более чем на 1 миллисекунду не более чем на 1% времени на компьютере с разумной скоростью.
Выход
Вы можете вывести строку любым удобным для вас способом. Вы можете либо обновлять в режиме реального времени, когда пользователь печатает, либо выводить результат после того, как вы закончили ввод данных (либо переводом строки, либо концом файла ^D
).
Контрольные примеры
Некоторые из них были сгенерированы этим CMC в Девятнадцатом Байте.
First 10 | after | result
bra in-flak in-flakarb
ap ple plepa
code- golf golf-edoc
no ne neon
we st stew
ai med media
draw back backward
Ответы:
VimScript,
4847 байтУ Vim есть несколько хороших встроенных функций для этого. Требуется Vim 8.
Ожидается, что текст будет введен в режиме вставки, очень разумный ввод для VimScript. Объяснение:
Мой первоначальный подход
se ri|sl10m|se ri&
не работает, потому что текст буферизуется до окончания команды сна, и я не мог найти способ обойти это.источник
HTML (JS), 96 байт
Начинает отсчет времени в течение 1 с с первого нажатия клавиши, чтобы дать вам возможность увидеть его в действии.
источник
JavaScript (ES6), 88 байт
демонстрация
Как работает фрагмент кода, вам нужно щелкнуть внутри его фрейма, чтобы он получил фокус после нажатия кнопки « Выполнить» и до того, вы сможете начать печатать.
Нет способа сделать это менее чем за 10 мс. Итак, я установил задержку на 1 секунду в этой демонстрации - и даже в этом случае, вам лучше поторопиться.
Показать фрагмент кода
источник
Обработка,
167165146 байтПринимает ввод как нажатия клавиш и выводит на консоль. Он обновляет каждый кадр.
объяснение
источник
asdf
+ghjk
. Если бы все было в одной переменной, то через 10 миллисекунд у нас была быfdsa
эта строка. После этого, когдаg
набрано, строка будет предшествоватьg
и становитсяgfdsa
. Затем, когдаh
напечатано, я не могуh
присоединиться к переменной (потому что тогда ввод по-прежнему обратный), мне нужно будет использоватьsubstring
s и вычислить значениеlength
этой строковой переменной. Это будет стоить много байтов.a
иb
). Даже если я присваиваю результат переменной temp, итоговый счет будет все же больше.C - 169 байт
Ну, C не лучший для этого, так как у него нет независимого от платформы способа сделать это. Работает под MSVC.
Немного хакерский подход, если вы можете набрать более 9 символов за 10 мс, это приведет к сбою. Обновления после символа новой строки.
источник
Python 2 ,
112106Если вы хотите, чтобы вывод был сброшенным, без затопления со строками, используйте
print'\r'+a+b,
вместоВам нужно будет убить процесс, чтобы остановить его
источник