Ich präsentiere Ihnen einen Test! Ihr Test ist zu testen. Der Test besteht darin, den Probanden mit Tests zu testen, die Ihnen ein Tester in der Shortest - Codemenge gibt. Insbesondere geben Sie einen Multiple-Choice-Test, den Sie als Eingabe erhalten haben.
In dieser Herausforderung müssen Sie eine Eingabe wie folgt vornehmen:
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
Und hier ist ein Beispiel für den Test:
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
Formale Spezifikation:
- Eingang
- Beginnt eine Zeile mit einer Zahl, gefolgt von einem Punkt und einem Leerzeichen, handelt es sich um eine Frage mit dieser Zahl. Die Zahlen beginnen immer bei 1 und steigen bei jeder Frage um 1.
- Wenn eine Zeile mit einem optionalen Sternchen, einem Buchstaben, einem Doppelpunkt und einem Leerzeichen beginnt, ist dies eine Antwort. Die Antworten werden auch immer sequentiell sein. Pro Frage gibt es nur eine richtige Antwort.
- Eine Zeile beginnt nicht anders als auf die zuvor genannten Arten.
- Eingaben können in irgendeiner Weise akzeptiert werden (Lesen aus einer Datei, stdin usw.), dürfen jedoch nicht fest in Ihr Programm codiert werden.
- Ausgang (Testphase)
- Drucken Sie zunächst jede Frage nacheinander aus. Drucken Sie die Frage und ihre Antworten wie in der Eingabe erhalten aus, aber drucken Sie nicht das Sternchen, das die richtigen Antworten angibt.
- Drucken Sie dann eine neue Zeile und
"answer: "
. Warten Sie auf Benutzereingaben. Benutzereingaben entsprechen immer einer Antwort. - Wenn die richtige Antwort (die mit einem Stern) mit der vom Benutzer eingegebenen identisch ist, wird sie ausgegeben
"correct!"
. Andernfalls wird ausgegeben"incorrect! the answer was " + correct_letter
. - Trennen Sie jede Frage mit einer Leerzeile und wiederholen Sie die vorherigen Ausgabeschritte, bis keine Fragen mehr vorhanden sind.
- Ausgabe (Übersichtsphase)
- Drucken Sie
"overview: "
und dann eine neue Zeile. - Drucken
"{number of correct answers} correct, {incorrect answers} incorrect ({percent correct, rounded to the nearest whole number}%)"
(natürlich die Phrasen in geschweiften Klammern durch ihre jeweiligen Werte ersetzen). Dann drucken Sie eine leere Zeile für den Abstand. - Drucken Sie nun für jede Frage, die falsch war, die Frage (nicht die Antworten) in einer neuen Zeile
"you chose " + answer_you_chose
und in einer anderen Zeile aus"the answer was " + correct_answer
. Trennen Sie die Übersicht jeder falschen Antwort mit einer Leerzeile.
- Drucken Sie
- Um das Schummeln zu reduzieren, indem Dinge wörtlich interpretiert werden, wenn hier dieselbe Ausgabe und in der Testphase dieselbe Eingabe erfolgt, muss Ihr Programm genau dasselbe wie die Beispielausgabe ausgeben.
Das ist Code-Golf ; kürzester Code gewinnt! (Und bekommt ein A + (grünes Häkchen)!)
\d\.
,\w:
und\*
in der Mitte von Fragen / Antworten. (Zum Beispiel kann derzeit die*
mit beseitigt werdeny/*//
, während der richtige Weg langwierig ists/^\*//
.)Antworten:
Perl 5, 279
Hinweis: Die Zeilenumbrüche sind für die Ausgabeformatierung erforderlich.
Jedes Mal, wenn ich denke, ich kann nicht mehr Golf spielen, lerne ich etwas Neues! Es wird langsam mehr Interpunktion als lesbarer Text ... Ich denke, das ist eine gute Sache?
Verwendung:
perl -e '...' test.txt
oderperl test.pl test.txt
.Wenn Sie eine Option auswählen, die nicht in der Liste aufgeführt ist, wird in der Übersicht eine falsche Ausgabe angezeigt (
you chose: 1. Our site is called Programming Puzzles & Code ________.
beispielsweise).Beispiellauf
quelle
Mathematica 144
Dies kann ein ungültiger Versuch sein. Ich habe die Frage von jeder Antwort in der Eingabe getrennt. Ich habe die richtige Antwort auch durch einen Buchstaben in einem separaten Feld und nicht durch ein Sternchen vor der Alternative angegeben.
Wie auch immer...
Die Daten
Code
Eine Antwort auf jede Frage wird über ein Dialogfeld eingegeben. Fragen, Antworten und Feedback werden gedruckt.
Prüfung
quelle
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[...]
stattdessen verwendenPrint[If[...]]
.Java - 1210
formatiert: 1980
Dies wird sicherlich nicht die kürzeste sein, aber es ist alles in sich geschlossen
quelle
Haskell, 598
Viel länger als ich möchte. Es ist Wiki so eingestellt, dass Sie es haben!
Leider verlieren wir 32 Zeichen, wenn wir stdout löschen. Weitere 38 Zeichen könnten gespeichert werden, wenn das Testskript aus einer festen Datei mit dem Namen "t" gelesen und nicht in der Befehlszeile angegeben würde.
Beim Ausführen der in der Frage angegebenen Eingabe:
quelle