Przedstawiam wam test! Twój test to test. Test polega na przetestowaniu testowanego za pomocą testów, które daje tester, w mniejszej ilości kodu testowego . W szczególności podasz test wielokrotnego wyboru, który otrzymałeś jako wkład.
W tym wyzwaniu musisz wprowadzić następujące dane wejściowe:
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
A oto przykład przeprowadzanego testu:
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
Specyfikacja formalna:
- Wejście
- Jeśli linia zaczyna się od liczby, po której następuje kropka i spacja, jest to pytanie o tej liczbie. Liczby zawsze zaczynają się od 1 i zwiększają o 1 każde pytanie.
- Jeśli linia zaczyna się od opcjonalnej gwiazdki, litery, dwukropka, a następnie spacji, jest to odpowiedź. Odpowiedzi będą również zawsze sekwencyjne. Na każde pytanie będzie tylko jedna poprawna odpowiedź.
- Linia nie rozpocznie się w żaden inny sposób niż wcześniej wspomniane sposoby.
- Dane wejściowe mogą być akceptowane w jakikolwiek sposób (odczyt z pliku, standardowe wejście itp.), Ale nie mogą być zapisane na stałe w programie.
- Wyjście (faza testowania)
- Najpierw wydrukuj kolejno każde pytanie. Wydrukuj pytanie i jego odpowiedzi zgodnie z otrzymanymi danymi wejściowymi, ale nie drukuj gwiazdki wskazującej prawidłowe odpowiedzi.
- Następnie wydrukuj nowy wiersz i
"answer: "
. Poczekaj na dane wejściowe użytkownika. Dane wejściowe użytkownika zawsze będą odpowiadać na odpowiedź. - Jeśli poprawna odpowiedź (ta z gwiazdką) jest taka sama jak ta wprowadzona przez użytkownika, wyślij
"correct!"
. W przeciwnym razie wyjście"incorrect! the answer was " + correct_letter
. - Oddziel każde pytanie pustą linią, a następnie powtarzaj poprzednie kroki wyjściowe, aż nie będzie już żadnych pytań.
- Wyjście (faza przeglądu)
- Wydrukuj,
"overview: "
a następnie nowy wiersz. - Drukuj
"{number of correct answers} correct, {incorrect answers} incorrect ({percent correct, rounded to the nearest whole number}%)"
(oczywiście zastępując wyrażenia w nawiasach klamrowych ich odpowiednimi wartościami). Następnie wydrukuj pustą linię dla odstępów. - Teraz, dla każdego błędnego pytania, wydrukuj pytanie (nie jego odpowiedzi), a następnie w nowym wierszu
"you chose " + answer_you_chose
i w innym wierszu"the answer was " + correct_answer
. Oddziel przegląd każdej błędnej odpowiedzi pustą linią.
- Wydrukuj,
- Aby ograniczyć oszustwo poprzez dosłowną interpretację rzeczy, gdy otrzyma się tutaj takie same dane wyjściowe i takie same dane wejściowe w fazie wykonywania testu, program musi wyświetlać dokładnie to samo, co dane wyjściowe próbki.
To jest golf golfowy ; najkrótszy kod wygrywa! (I dostaje A + (zielony znacznik wyboru)!)
\d\.
,\w:
i\*
w środku pytań / odpowiedzi. (Na przykład obecnie*
można go wyeliminowaćy/*//
, podczas gdy poprawny sposób jest długi jaks/^\*//
.)Odpowiedzi:
Perl 5, 279
Uwaga: Nowe wiersze są wymagane do formatowania wyjściowego.
Za każdym razem, gdy wydaje mi się, że nie mogę już grać w golfa, uczę się czegoś nowego! Powoli staje się coraz bardziej interpunkcyjny niż czytelny tekst ... Myślę, że to dobra rzecz?
Zastosowanie:
perl -e '...' test.txt
lubperl test.pl test.txt
.Jeśli wybierzesz opcję niewymienioną na liście, otrzymasz niepoprawne dane wyjściowe w przeglądzie (powiedzą
you chose: 1. Our site is called Programming Puzzles & Code ________.
na przykład).Przykładowy przebieg
źródło
Mathematica 144
To może być niepoprawna próba. Oddzieliłem pytanie od każdej odpowiedzi na wejściu. Prawidłową odpowiedź wskazałem również literą w oddzielnym polu zamiast gwiazdki przed alternatywą.
Tak czy siak...
Dane
Kod
Odpowiedź na każde pytanie jest wprowadzana w oknie dialogowym. Pytania, odpowiedzi i opinie są drukowane.
Test
źródło
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[...]
zamiastPrint[If[...]]
.Java - 1210
sformatowany: 1980
To z pewnością nie będzie najkrótszy, ale jest samowystarczalny
źródło
Haskell, 598
Znacznie dłużej niż chciałbym. Ustawiono wiki, więc miej to!
Niestety, tracimy 32 postacie na kolorowanie stdout. Kolejne 38 znaków można by zapisać, gdyby skrypt testowy został odczytany ze stałego pliku o nazwie „t”, a nie określony w wierszu poleceń.
Po uruchomieniu na danych wejściowych podanych w pytaniu:
źródło