Te presento una prueba! Tu prueba es para probar. La prueba consiste en evaluar al examinado con las pruebas que le da un probador, en la cantidad de código de prueba shor . Específicamente, dará una prueba de opción múltiple que ha recibido como entrada.
En este desafío, debe tomar una 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
Y aquí hay un ejemplo de la prueba que se está tomando:
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
Especificación formal:
- Entrada
- Si una línea comienza con un número seguido de un punto y un espacio, es una pregunta con ese número. Los números siempre comenzarán desde 1 y subirán 1 en cada pregunta.
- Si una línea comienza con un asterisco opcional, una letra, dos puntos y luego un espacio, es una respuesta. Las respuestas también serán siempre secuenciales. Solo habrá una respuesta correcta por pregunta.
- Una línea no comenzará de ninguna otra manera que las formas mencionadas anteriormente.
- La entrada puede ser aceptada de cualquier manera (lectura de un archivo, stdin, etc.) pero no debe estar codificada en su programa.
- Salida (fase de prueba)
- Primero, imprima cada pregunta secuencialmente. Imprima la pregunta y sus respuestas como se recibieron en la entrada, pero no imprima el asterisco que indica las respuestas correctas.
- Luego, imprima una nueva línea y
"answer: "
. Espere la entrada del usuario. La entrada del usuario siempre corresponderá a una respuesta. - Si la respuesta correcta (la que tiene un asterisco) es la misma que la entrada, salida del usuario
"correct!"
. De lo contrario, salida"incorrect! the answer was " + correct_letter
. - Separe cada pregunta con una línea en blanco, luego repita los pasos de salida anteriores hasta que no haya más preguntas.
- Salida (fase de resumen)
- Imprimir
"overview: "
y luego una nueva línea. - Imprimir
"{number of correct answers} correct, {incorrect answers} incorrect ({percent correct, rounded to the nearest whole number}%)"
(por supuesto, sustituyendo las frases entre llaves con sus respectivos valores). Luego imprima una línea en blanco para espaciar. - Ahora, para cada pregunta que estuvo mal, imprima la pregunta (no sus respuestas), luego en una nueva línea
"you chose " + answer_you_chose
y en otra línea"the answer was " + correct_answer
. Separe la descripción general de cada respuesta incorrecta con una línea en blanco.
- Imprimir
- Para reducir las trampas al interpretar las cosas literalmente, cuando se le da la misma salida aquí, y la misma entrada en la fase de toma de prueba, su programa debe emitir exactamente lo mismo que la salida de muestra.
Este es el código de golf ; el código más corto gana! (¡Y obtiene una A + (marca de verificación verde)!)
\d\.
,\w:
y\*
en medio de preguntas / respuestas. (Por ejemplo, actualmente*
se puede eliminar cony/*//
, mientras que la forma correcta es larga comos/^\*//
.)Respuestas:
Perl 5, 279
Nota: Las nuevas líneas son necesarias para el formato de salida.
¡Cada vez que pienso que no puedo jugar más al golf, aprendo algo nuevo! Poco a poco se está convirtiendo en más puntuación que texto legible ... ¿Creo que es algo bueno?
Uso:
perl -e '...' test.txt
operl test.pl test.txt
.Si elige una opción que no se presenta en la lista, obtendrá un resultado incorrecto en la descripción general (
you chose: 1. Our site is called Programming Puzzles & Code ________.
por ejemplo , dirá ).Ejecución de ejemplo
fuente
Mathematica 144
Esto puede ser un intento no válido. Separé la pregunta de cada respuesta en la entrada. También indiqué la respuesta correcta con una letra en un campo separado, en lugar de un asterisco antes de la alternativa.
De todas formas...
Los datos
Código
Se ingresa una respuesta a cada pregunta a través de un cuadro de diálogo. Se imprimen preguntas, respuestas y comentarios.
Prueba
fuente
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[...]
lugar dePrint[If[...]]
.Java - 1210
formateado: 1980
Esto ciertamente no será el más corto, pero es todo autónomo.
fuente
Haskell, 598
Mucho más de lo que me gustaría. Está configurado wiki, ¡así que tenlo!
Por desgracia, perdemos 32 caracteres por el stdout enrojecido. Se podrían guardar otros 38 caracteres si el script de prueba se leyera desde un archivo fijo llamado "t" en lugar de especificarse en la línea de comando.
Cuando se ejecuta en la entrada dada en la pregunta:
fuente