Eu apresento a você um teste! Seu teste é para testar. O teste é testar o testado com testes que um testador fornece, na quantidade de código do teste de curta duração . Especificamente, você fará um teste de múltipla escolha que você recebeu como entrada.
Neste desafio, você deve receber uma entrada como esta:
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
E aqui está um exemplo do teste sendo realizado:
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
Especificação formal:
- Entrada
- Se uma linha começa com um número seguido de um ponto e um espaço, é uma pergunta com esse número. Os números sempre começam de 1 e aumentam 1 em cada pergunta.
- Se uma linha começa com um asterisco opcional, uma letra, dois pontos e depois um espaço, é uma resposta. As respostas também serão sempre seqüenciais. Haverá apenas uma resposta correta por pergunta.
- Uma linha não começará de nenhuma outra maneira além das maneiras mencionadas anteriormente.
- A entrada pode ser aceita de qualquer forma (leitura de um arquivo, stdin, etc.), mas não deve ser codificada no seu programa.
- Saída (fase de realização do teste)
- Primeiro, imprima cada pergunta sequencialmente. Imprima a pergunta e suas respostas como recebidas na entrada, mas não imprima o asterisco indicando respostas corretas.
- Em seguida, imprima uma nova linha e
"answer: ". Aguarde a entrada do usuário. A entrada do usuário sempre corresponderá a uma resposta. - Se a resposta correta (aquela com um asterisco) for a mesma que a entrada do usuário, emita
"correct!". Caso contrário, saída"incorrect! the answer was " + correct_letter. - Separe cada pergunta com uma linha em branco e repita as etapas de saída anteriores até que não haja mais perguntas.
- Saída (fase de síntese)
- Imprima
"overview: "e depois uma nova linha. - Imprimir
"{number of correct answers} correct, {incorrect answers} incorrect ({percent correct, rounded to the nearest whole number}%)"(é claro, substituindo as frases entre chaves com seus respectivos valores). Em seguida, imprima uma linha em branco para espaçamento. - Agora, para cada pergunta que estava errada, imprima a pergunta (não suas respostas), depois em uma nova linha
"you chose " + answer_you_chosee em outra linha"the answer was " + correct_answer. Separe a visão geral de cada resposta errada com uma linha em branco.
- Imprima
- Para reduzir a trapaça interpretando as coisas literalmente, quando é fornecida a mesma saída aqui e a mesma entrada na fase de teste, seu programa deve produzir exatamente a mesma coisa que a saída de amostra.
Isso é código-golfe ; o menor código vence! (E recebe um A + (marca de seleção verde)!)

\d\.,\w:e\*no meio de perguntas / respostas. (Por exemplo, actualmente o*pode ser eliminado comy/*//, enquanto a forma correcta é moroso comos/^\*//.)