Правила
Пришло время создать тест скорости набора текста на выбранном вами языке!
1 . Вы предоставляете файл со словарем выбора (каждое слово в нем должно быть разделено новой строкой). Передайте его через stdin
или укажите его имя в качестве аргумента командной строки.
a в состоянии около над отсутствие ...
2 . Выберите 10 случайных слов из файла (дубликаты не должны быть разрешены) и распечатайте их следующим образом:
-> прямой -> земля -> следующий -> пять ...
3 . Начните измерять время, проведенное с этого момента!
4 . Позвольте пользователю набрать все десять слов как можно быстрее (заканчивается переводом каретки). Печатайте, OK
когда у вас есть совпадение, печатайте, WRONG
когда у нас есть ошибка ввода (или слово уже было успешно набрано в этом цикле).
5 . Останови часы! Теперь распечатайте CPM (Caracters в минуту) тесте, который рассчитывается следующим образом : (sum of the characters of the chosen words / time spent typing (seconds)) * 60
. Округлите до ближайшего целого числа и воспроизведите следующий (пример) вывод:
-> Вы набрали 344 CPM!
Пробный прогон
-> урегулировать -> сторона -> открыть -> министр -> риск -> цвет -> корабль -> то же самое -> размер -> меч селиться хорошо сторона хорошо открыть хорошо # ...................... некоторые строки обрезаны ...................... слово НЕПРАВИЛЬНО меч хорошо -> Вы набрали 298 CPM!
Победитель
Это код colf, выигрывает самая короткая запись (в количестве символов исходного кода), получайте удовольствие!
Ответы:
К, 146
Предполагается файл словаря с именем 'd' в текущем рабочем каталоге.
источник
K
которую я видел (здесь, на codegolf.se) ...Баш -
217212199196 символовНе выиграю, но было весело
До 200 символов сейчас!
Принимает файлспискаслов в качестве аргумента.Теперь принимает список слов при стандартном вводе. Вставьте его в терминал и нажмите ^ DРеализовано предложение от manatwork
источник
$SECONDS
переменную оболочки, чтобы упростить подсчет истекшего времени.:
расширение значения параметра по умолчанию; 2)$
передSECONDS
арифметической оценкой. На самом деле есть еще один дополнительный символ, символ новой строки в и из файла.Рубин (
189178171168)Довольно простой, я уверен, что есть улучшения, которые нужно сделать. Принимает имя файла словаря в качестве аргумента командной строки.
РЕДАКТИРОВАТЬ : несколько мелких изменений, в основном, вокруг сохранения перевода строки из словаря. В результате для корректной работы файла потребуется завершающий символ новой строки.
источник
C 305
309347символовСпасибо @ugoren за советы по улучшению. Использование «11-го слова» для отбрасывания входящих словарных статей было большой победой над моим предыдущим подходом strcpy-if-selected.
Вот неопрятный источник:
источник
main(n,v)char**v;{...
. 2.stdin
может бытьchar *
.fgets(buf,len,stdin)
=gets(buf)
(не говоря уже о переполнении буфера). 3. Что не так сrand()%i
?RAND_MAX
не нужен 4. Почемуlong
?t=time(0)
->time(&t)
. 2)n*60/(time(0)-t)
круглые скобки , которые должны идти -*60
может быть перемещенn+=60*printf
, тоn/=time(0)-t
. 3) Заменитьb
на дополнительный элементw
, заменитьstrcpy
на чтение непосредственно вw
.fgets()
сgets()
потребностями дополнительного кода сделки с новой строкой в словаре; это оказалось короче.rand()%i
не достаточно; фактический расчет есть(double)i*rand()/RAND_MAX
. Перемещение*60
к Printf также означает изменение-4
к-240
так это в конечном счете завершаться потери. Ваши другие пункты являются действительными, хотя (я верю). О, иlong
это потому, что time_t традиционно долго. То, что мы играем в гольф, не означает, что мы не можем быть портативными.4
->240
... Переносимость и гольф не сочетаются друг с другом. Но определениеi,t;
(неявно int) в порядке вплоть доMAX_INT
секунд (если вы не используетеtime(&t)
). Сrand()
, все, что вам нужно, это10/i
шанс, иrand()%i<10
делает это.rand()%10>10
, что дает 100%.rand()%(i+1)>9
лучше (но вместо этого, если%(i+1)
сделатьi++>9?
. Также двигаться,*stdin
чтобы быть первым и сохранить место.C # 401
Работающая версия здесь: http://ideone.com/Nt6Id
источник
Python (
256235)Это в Python 2.x, в 3.x я могу сбрить еще 4 символа с помощью функции печати.
Новые строки включены
источник
z=lambda x:
todef z(x):
.len(x)
иdef z(x):return
это еще 5 символов: /input()
вместоsys.argv[1].read()
PHP 187 байт
Новые строки были добавлены для ясности:
Принимает имя файла словаря в качестве аргумента командной строки. Файл словаря должен заканчиваться символом новой строки.
источник
Скала (
319306304302)источник