Quiz Program Compiler

7

A fun programming exercise is to write a program that quizzes the user from a set list of questions and answers. However, this task goes a level beyond that.

Your task

  • Write a program/func/etc. that takes two lists: A list of questions and a list of answers.
  • Output a program that quizzes the user.
  • The output program should ask each question on a separate line, which each question with a colon and space at the end like, What is 2+2:.
  • After the user answers all the questions, output a newline, and then one on each line, questions correct, questions wrong, and percentage calculation (rounded to 2 decimal places) as such (the brackets are user input):


What is the meaning of life, the universe, and everything: <42>
Am I awesome(Yes/No): <No>
What is 2+2: <4>

Number Correct: 2
Number Wrong: 1
Score: 2 / 3 * 100 = 66.67%

Scoring

  • You are scored on the size of your compiler program.
  • This is so shortes code in bytes wins!
  • Bonus: Score *.9 if you implement a flag in your compiler that makes the output program randomize question order.

Maltysen

Posted 2015-11-25T01:45:38.143

Reputation: 25 023

If none are correct, or all are wrong, should that line be skipped? – Ypnypn – 2015-11-25T05:28:45.473

@Ypnypn no, they should always be there. – Maltysen – 2015-11-25T12:04:25.683

Answers

3

CJam, 105 99 bytes

{{": "+ol}%.=_:+\,:LX$-X$LX$e2Ld/]"
Number Correct: %d
Number Wrong: %d
Score: %d / %d * 100 = %.2f%%"e%}

This defines an anonymous function.

The code is 110 bytes long and qualifies for the × 0.9 randomization bonus.

Test run

$ cat qna.cjam
[
  [
    "42"
    "Yes"
    "4"
  ]

  [
    "What is the meaning of life, the universe, and everything"
    "Am I awesome(Yes/No)"
    "What is 2+2"
  ]
]

{zmrz~{": "+ol}%.=_:+\,:LX$-X$LX$e2Ld/]"
Number Correct: %d
Number Wrong: %d
Score: %d / %d * 100 = %.2f%%"e%}

~

$ cjam qna.cjam
What is 2+2: 4
Am I awesome(Yes/No): No
What is the meaning of life, the universe, and everything: 42

Number Correct: 2
Number Wrong: 1
Score: 2 / 3 * 100 = 66.67%

Dennis

Posted 2015-11-25T01:45:38.143

Reputation: 196 637

Wow, this is the longest CJam answer I have ever seen! – J Atkin – 2015-11-25T03:13:05.317

Not even close. :) – Dennis – 2015-11-25T03:24:28.500