Je vous présente un test! Votre test est de tester. Le test est de tester la testee avec les tests d' un testeur vous donne, dans le Shor test de quantité de code. Plus précisément, vous effectuerez un test à choix multiples que vous avez reçu en entrée.
Dans ce défi, vous devez prendre une entrée comme celle-ci:
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
Et voici un exemple du test effectué:
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
Spécification formelle:
- Contribution
- Si une ligne commence par un nombre suivi d'un point et d'un espace, c'est une question avec ce nombre. Les nombres commenceront toujours par 1 et monteront 1 à chaque question.
- Si une ligne commence par un astérisque facultatif, une lettre, un deux-points, puis un espace, c'est une réponse. Les réponses seront également toujours séquentielles. Il n'y aura qu'une seule bonne réponse par question.
- Une ligne ne commencera pas autrement que par les voies mentionnées précédemment.
- L'entrée peut être acceptée de n'importe quelle manière (lecture à partir d'un fichier, stdin, etc.) mais ne doit pas être codée en dur dans votre programme.
- Sortie (phase de test)
- Tout d'abord, imprimez chaque question séquentiellement. Imprimez la question et ses réponses telles qu'elles ont été reçues en entrée, mais n'imprimez pas l'astérisque indiquant les bonnes réponses.
- Ensuite, imprimez une nouvelle ligne et
"answer: ". Attendez l'entrée de l'utilisateur. L'entrée utilisateur correspondra toujours à une réponse. - Si la bonne réponse (celle avec un astérisque) est la même que celle entrée par l'utilisateur, sortez
"correct!". Sinon, sortez"incorrect! the answer was " + correct_letter. - Séparez chaque question par une ligne vierge, puis répétez les étapes de sortie précédentes jusqu'à ce qu'il n'y ait plus de questions.
- Sortie (phase de présentation)
- Imprimez
"overview: "puis une nouvelle ligne. - Imprimer
"{number of correct answers} correct, {incorrect answers} incorrect ({percent correct, rounded to the nearest whole number}%)"(en remplaçant bien sûr les phrases entre accolades par leurs valeurs respectives). Imprimez ensuite une ligne vierge pour l'espacement. - Maintenant, pour chaque question erronée, imprimez la question (pas ses réponses), puis sur une nouvelle ligne
"you chose " + answer_you_choseet sur une autre ligne"the answer was " + correct_answer. Séparez l'aperçu de chaque mauvaise réponse par une ligne vierge.
- Imprimez
- Afin de réduire la tricherie en interprétant les choses littéralement, lorsque la même sortie est donnée ici et la même entrée dans la phase de test, votre programme doit produire exactement la même chose que la sortie d'échantillon.
C'est du code-golf ; le code le plus court gagne! (Et obtient un A + (coche verte)!)

\d\.,\w:et\*au milieu des questions / réponses. (Par exemple, actuellement, le*peut être éliminé avecy/*//, tandis que le bon chemin est long commes/^\*//.)