Представляю вам тест! Ваш тест должен проверить. Тест состоит в том, чтобы проверить тестируемого с помощью тестов, которые вам дает тестер, в коротком тестовом объеме кода. В частности, вы дадите тест с множественным выбором, который вы получили в качестве входных данных.
В этом соревновании вы должны принять такой вклад:
1. Our site is called Programming Puzzles & Code ________.
A: Debugging
*B: Golf
C: Hockey
D: Programming
2. What is the *most* popular tag on our site?
A: [debug]
B: [program]
*C: [code-golf]
D: [number]
E: [c++]
3. We are part of the ________ Exchange network.
*A: Stack
B: Code
C: Programmer
D: Hockey
4. Is this the first question?
A: Yes
*B: No
5. Is this the last question?
*A: Yes
B: No
И вот пример прохождения теста:
1. Our site is called Programming Puzzles & Code ________.
A: Debugging
B: Golf
C: Hockey
D: Programming
answer: B
correct!
2. What is the *most* popular tag on our site?
A: [debug]
B: [program]
C: [code-golf]
D: [number]
E: [c++]
answer: C
correct!
3. We are part of the ________ Exchange network.
A: Stack
B: Code
C: Programmer
D: Hockey
answer: B
incorrect! the answer was A
4. Is this the first question?
A: Yes
B: No
answer: B
correct!
5. Is this the last question?
A: Yes
B: No
answer: B
incorrect! the answer was A
overview:
3 correct, 2 incorrect (60%)
3. We are part of the ________ Exchange network.
you chose B: Code
the answer was A: Stack
5. Is this the last question?
you chose B: No
the answer was A: Yes
Формальная спецификация:
- вход
- Если строка начинается с числа, за которым следуют точка и пробел, это вопрос с этим числом. Числа всегда будут начинаться с 1 и увеличиваться на 1 каждый вопрос.
- Если строка начинается с необязательной звездочки, буквы, двоеточия, а затем пробела, это ответ. Ответы также всегда будут последовательными. На каждый вопрос будет только один правильный ответ.
- Строка не будет начинаться каким-либо иным способом, кроме упомянутых ранее.
- Ввод может быть принят любым способом (чтение из файла, стандартный ввод и т. Д.), Но не должен быть жестко задан в вашей программе.
- Выход (фаза прохождения теста)
- Сначала распечатайте каждый вопрос последовательно. Напечатайте вопрос и его ответы, полученные на входе, но не печатайте звездочку, указывающую правильные ответы.
- Затем выведите новую строку и
"answer: "
. Ждите ввода пользователя. Пользовательский ввод всегда будет соответствовать ответу. - Если правильный ответ (со звездочкой) совпадает с ответом, введенным пользователем, выведите
"correct!"
. В противном случае вывод"incorrect! the answer was " + correct_letter
. - Разделите каждый вопрос пустой строкой, затем повторяйте предыдущие шаги вывода до тех пор, пока больше не будет вопросов.
- Выход (обзорная фаза)
- Распечатать
"overview: "
и затем новую строку. - Печать
"{number of correct answers} correct, {incorrect answers} incorrect ({percent correct, rounded to the nearest whole number}%)"
(конечно, подставляя фразы в фигурные скобки с соответствующими значениями). Затем напечатайте пустую строку для пробелов. - Теперь для каждого неправильного вопроса выведите вопрос (не его ответы), затем в новой строке
"you chose " + answer_you_chose
и в другой строке"the answer was " + correct_answer
. Разделите обзор каждого неправильного ответа пустой строкой.
- Распечатать
- Чтобы уменьшить мошенничество путем буквального толкования, при наличии того же вывода здесь и того же ввода в фазе тестирования, ваша программа должна выводить то же самое, что и пример вывода.
Это код-гольф ; самый короткий код выигрывает! (И получает A + (зеленая галочка)!)
\d\.
,\w:
и\*
в середине вопросов / ответов. (Например, в настоящее время*
можно устранить с помощьюy/*//
, в то время как правильный путь является длинным, какs/^\*//
.)Ответы:
Perl 5, 279
Примечание. Новые строки необходимы для форматирования вывода.
Каждый раз, когда я думаю, что больше не могу играть в гольф, я узнаю что-то новое! Это постепенно становится больше пунктуации, чем разборчивый текст ... Я думаю, что это хорошо?
Использование:
perl -e '...' test.txt
илиperl test.pl test.txt
.Если вы выберете опцию, не представленную в списке, вы получите неверный вывод в обзоре (скажем,
you chose: 1. Our site is called Programming Puzzles & Code ________.
например).Пример запуска
источник
Mathematica 144
Это может быть неверной попыткой. Я отделил вопрос от каждого ответа на входе. Я также указал правильный ответ письмом в отдельном поле, а не звездочкой перед альтернативой.
Тем не мение...
Данные
Код
Ответ на каждый вопрос вводится через диалоговое окно. Вопросы, ответы и отзывы печатаются.
Тестовое задание
источник
g@{a_,b_}:=Print[If[(r=ChoiceDialog[Print[""<>a,"\nanswer: "];""<>a,Rest@a~StringTake~1])==b,r<>"\ncorrect!",r<>"\nincorrect, the answer is "<>b]]
Print@If[...]
вместоPrint[If[...]]
.Ява - 1210
отформатирован: 1980
Это, конечно, не будет самым коротким, но все это автономно
источник
Хаскелл, 598
Намного дольше, чем хотелось бы. Это вики, так что имейте это!
Увы, мы теряем 32 символа из-за сброса стандартного вывода. Еще 38 символов могут быть сохранены, если тестовый скрипт был прочитан из фиксированного файла с именем «t», а не указан в командной строке.
При запуске на входе дано в вопросе:
источник