Saya mempersembahkan kepada Anda ujian! Tes Anda adalah untuk menguji. Tes ini untuk menguji peserta ujian dengan tes yang diberikan tester kepada Anda, dalam jumlah kode uji waktu. Khususnya, Anda akan memberikan tes pilihan ganda yang telah Anda terima sebagai input.
Dalam tantangan ini, Anda harus mengambil input seperti ini:
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
Dan ini adalah contoh dari tes yang diambil:
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
Spesifikasi formal:
- Memasukkan
- Jika sebuah garis dimulai dengan angka diikuti dengan titik dan spasi, itu adalah pertanyaan dengan angka itu. Angka akan selalu mulai dari 1 dan naik 1 setiap pertanyaan.
- Jika sebuah baris dimulai dengan tanda bintang opsional, huruf, titik dua, dan kemudian spasi, itu adalah jawaban. Jawaban juga akan selalu berurutan. Hanya akan ada satu jawaban yang benar per pertanyaan.
- Garis tidak akan dimulai dengan cara lain selain cara yang disebutkan sebelumnya.
- Input dapat diterima dengan cara apa pun (membaca dari file, stdin, dll.) Tetapi tidak boleh di-hardcode ke dalam program Anda.
- Output (fase pengambilan tes)
- Pertama, cetak setiap pertanyaan secara berurutan. Cetak pertanyaan dan jawabannya sebagai masukan yang diterima, tetapi jangan cetak tanda bintang yang menunjukkan jawaban yang benar.
- Kemudian, cetak baris baru dan
"answer: "
. Tunggu input pengguna. Input pengguna akan selalu sesuai dengan jawaban. - Jika jawaban yang benar (yang bertanda bintang) sama dengan yang di input pengguna, keluaran
"correct!"
. Kalau tidak, output"incorrect! the answer was " + correct_letter
. - Pisahkan setiap pertanyaan dengan baris kosong, lalu ulangi langkah-langkah output sebelumnya sampai tidak ada lagi pertanyaan.
- Output (fase ikhtisar)
- Cetak
"overview: "
dan kemudian baris baru. - Cetak
"{number of correct answers} correct, {incorrect answers} incorrect ({percent correct, rounded to the nearest whole number}%)"
(tentu saja mengganti frasa dalam kurung kurawal dengan nilai masing-masing). Kemudian cetak garis kosong untuk penspasian. - Sekarang, untuk setiap pertanyaan yang salah, cetak pertanyaan (bukan jawabannya), lalu pada baris baru
"you chose " + answer_you_chose
, dan pada baris lain"the answer was " + correct_answer
. Pisahkan setiap ikhtisar jawaban yang salah dengan baris kosong.
- Cetak
- Untuk mengurangi kecurangan dengan menginterpretasikan hal-hal secara harfiah, ketika diberi output yang sama di sini, dan input yang sama dalam fase tes, program Anda harus menampilkan hal yang persis sama dengan output sampel.
Ini adalah kode-golf ; menang kode terpendek! (Dan mendapat nilai A + (tanda centang hijau)!)
\d\.
,\w:
dan\*
di tengah pertanyaan / jawaban. (Misalnya saat ini*
dapat dihilangkan dengany/*//
, sementara cara yang benar panjang sepertis/^\*//
.)Jawaban:
Perl 5, 279
Catatan: Baris baru diperlukan untuk pemformatan output.
Setiap kali saya pikir saya tidak bisa bermain golf lagi, saya belajar sesuatu yang baru! Ini perlahan menjadi lebih banyak tanda baca daripada teks yang dapat dibaca ... Saya pikir itu hal yang baik?
Penggunaan:
perl -e '...' test.txt
atauperl test.pl test.txt
.Jika Anda memilih opsi yang tidak disajikan dalam daftar, Anda akan mendapatkan output yang salah dalam ikhtisar (itu akan mengatakan
you chose: 1. Our site is called Programming Puzzles & Code ________.
misalnya).Contoh dijalankan
sumber
Mathematica 144
Ini mungkin upaya yang tidak valid. Saya memisahkan pertanyaan dari setiap jawaban dalam input. Saya juga menunjukkan jawaban yang benar dengan surat di bidang yang terpisah, bukan tanda bintang sebelum alternatif.
Bagaimanapun...
Data
Kode
Jawaban untuk setiap pertanyaan dimasukkan melalui kotak dialog. Pertanyaan, jawaban, dan umpan balik dicetak.
Uji
sumber
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[...]
daripadaPrint[If[...]]
.Jawa - 1210
diformat: 1980
Ini tentu saja tidak akan menjadi yang terpendek tetapi semuanya serba lengkap
sumber
Haskell, 598
Jauh lebih lama dari yang saya inginkan. Sudah diatur wiki jadi miliki!
Sayangnya, kami kehilangan 32 karakter untuk stushing. 38 karakter lainnya dapat disimpan jika skrip uji dibaca dari file tetap bernama "t" daripada ditentukan pada baris perintah.
Saat dijalankan pada input yang diberikan dalam pertanyaan:
sumber