Práctica: DSL: Redacción de Cuestionarios I (Sin Contexto)

Se trata de escribir un programa que redacte cuestionarios. En principio, sólo soportaremos preguntas del tipo selección múltiple:

1. ¿En que año Cristobal Colón descubrió América?
      1 - 1942
      2 - 1492
      3 - 1808
      4 - 1914
Su respuesta:
Debe definir una clase Quiz que soporte un pequeño lenguaje en el que las preguntas puedan ser especificadas. El constructor de Quiz va seguido de un bloque al que pasa como argumento el objeto e que representa al examen:

quiz = Quiz.new("Cuestionario de PFS 10/12/2011") do |e|
  e.question '¿En que año Cristobal Colón descubrió América?',
    e.wrong =>'1942',
    e.right =>'1492',
    e.wrong =>'1808',
    e.wrong =>'1914'
  
  a = rand(10)
  b = rand(10)
  e.question "#{a}+#{b} = ",
    e.wrong =>"44",
    e.wrong =>"#{a + b + 2}",
    e.right =>"#{a + b}",
    e.wrong =>"#{a + b - 2}"
end

quiz.run
El programa anterior podría producir una salida parecida a esta:

MacBookdeCasiano:chapter8ReflectionandMetaprogramming casiano$ ruby Quiz.rb 
Cuestionario de PFS 10/12/2011

¿En que año Cristobal Colón descubrió América?

  1 -  1942
  2 -  1492
  3 -  1808
  4 -  1914

Su respuesta: 3
0+8 = 

  1 -  44
  2 -  10
  3 -  8
  4 -  6

Su respuesta: 1
0 respuestas correctas de un total de 2.
MacBookdeCasiano:chapter8ReflectionandMetaprogramming casiano$

Casiano Rodriguez León 2015-01-07