Представляю вам тест! Ваш тест должен проверить. Тест состоит в том, чтобы проверить тестируемого с помощью тестов, которые вам дает тестер, в коротком тестовом объеме кода. В частности, вы дадите тест с множественным выбором, который вы получили в качестве входных данных.
В этом соревновании вы должны принять такой вклад:
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/^\*//
.)