Randomisieren Sie den Test

21

Ich bin ein Lehrer und in ein paar Tagen muss ich meinen Schülern einen Test geben. Jetzt mache ich mir immer Sorgen, dass meine schönsten Schüler von den am wenigsten schönen verletzt werden, wenn sie schummeln. Deshalb möchte ich die Tests nach dem Zufallsprinzip sortieren, damit niemand jemanden betrügen kann.

Im Moment habe ich meine Tests in diesem Format gespeichert:

When was Java invented?
  Why does this matter?
  1941
  War was beginning
  None of the above

What is the increment operator in Java?
  Stack Overflow>how 2 incrememnt
  Google>how 2 incrememnt
  increment
  ++

Das heißt, die Fragen werden durch eine einzelne Leerzeile getrennt, und den Antworten werden jeweils zwei Leerzeichen vorangestellt. Dies ist die Ausgabe, die ich brauche:

What is the increment operator in Java?
  ++
  increment
  Google>how 2 incrememnt
  Stack Overflow>how 2 incrememnt

When was Java invented?
  War was beginning
  1941
  Why does this matter?
  None of the above

Das heißt, jede Antwort auf eine Frage in einer zufälligen Reihenfolge und die Fragenreihenfolge ebenfalls in zufälliger Reihenfolge. Beachten Sie, dass die Antwort unten bleiben sollte, wenn "Keine der oben genannten Antworten" ausgewählt wurde. Jede Frage hat immer genau vier Antworten, und "Keine der oben genannten Antworten" wird immer nur als letzte Antwortauswahl angezeigt - und wird nie als Teil einer Antwortauswahl angezeigt, die nicht "Keine der oben genannten Antworten" ist. Leider kann ich nicht alle meine Tests umschreiben, daher müssen Sie sie in diesem Format ablegen. Außerdem müssen meine Schüler in der Lage sein, es zu lesen, damit ich die Ausgabe nicht wirklich auf andere Weise verarbeiten kann (außer wie unten beschrieben).

Ich brauche es nicht, um vollkommen zufällig zu sein. Solange es nah ist.

Standardlücken sind verboten.


Bonus

Nun, meine Schüler sind an dieses einfache Format gewöhnt, aber wenn Sie es so aussehen lassen können ...

1. What is the increment operator in Java?
  A. ++
  B. increment
  C. Google>how 2 incrememnt
  D. Stack Overflow>how 2 incrememnt

2. When was Java invented?
  A. War was beginning
  B. 1941
  C. Why does this matter?
  D. None of the above

Ich werde 25% von Ihrem Endergebnis abziehen. Sie werden jedoch auf die gleiche Weise eingegeben.

Das heißt, wenn Sie die Fragen nummerieren und die Antworten benennen. Bitte beachten Sie, dass die Fragen bei 1 beginnen sollten und die Antworten von A bis D sind.


NB: Die Beispiele unterscheiden sich von denen in den Antworten, weil ich sie nachträglich geändert habe. Die spezifischen Beispiele sind sowieso nicht der Punkt; Antworten mussten mit jeder beliebigen Frage funktionieren.

Fund Monica Klage
quelle
Boni im Codegolf werden im Allgemeinen nicht empfohlen . Keiner der aktuellen Einsendungen erhält den Bonus (außer diesem , aber mit dem Bonus ist die Punktzahl schlechter als ohne), was ein ziemlich guter Indikator dafür ist, dass die Herausforderung ohne den Bonus besser wäre.
Mego
@Mego Es passt zum Thema der Frage und ist leicht zu verstehen. Es ist kein Schaden daran.
Fund Monica Klage

Antworten:

7

Pyth - 48 42 41 39 Bytes

Wird String gepackt.

js.Sm++hd/D"None of the above".Stdkc.zk

Probieren Sie es hier online aus .

Maltysen
quelle
Akzeptiere diese Antwort, weil diese Frage [Code-Golf] war und diese Antwort die kürzeste ist. Gut gemacht!
Fund Monica Klage
4

JavaScript ES6, 170 Byte

Ist eine anonyme Funktion, nennen Sie es. Hinweis: Hierbei wird die Zufallssortierungsmethode verwendet, die nicht vollständig zufällig ist , aber ausreicht, sofern Sie kein Wahrscheinlichkeitslehrer sind.

t=>t.split`

`.map(x=>(x=x.split`
`,R=[],(k=x.pop())=="  None of the above"?(R=[k]):x.push(k),[x.shift(),...x.sort(r=_=>.5-Math.random()),...R].join`
`)).sort(r).join`

`

Mit dem Bonus 180,75 Bytes

t=>t.split`

`.map(x=>(x=x.split`
`,R=[],(k=x.pop())=="  None of the above"?(R=[k]):x.push(k),[x.shift(),...x.sort(r=_=>.5-Math.random()),...R].map((k,i)=>(i?`  ${" ABCD"[i]}. `:"")+k.trim()).join`
`),a=0).sort(r).map(e=>++a+". "+e).join`

`

Probieren Sie es aus!

Conor O'Brien
quelle
Hast du versucht, den Bonus zu bekommen?
CalculatorFeline
@CatsAreFluffy Noch nicht, net;)
Conor O'Brien
1
@CatsAreFluffy Nun, es ist eine sehr technische Sache.
Conor O'Brien
3
Was ist ein Hoch? Was ist eine Sache? Was ist ein technischer? Was ist ein ? Was ist ein ...? Was sind noch 493 Zeichen?
CalculatorFeline
1
@ Fond42518 Gerne! Bei dieser zufälligen Sortierung speichere ich die Funktion jedoch _=>.5-Math.random()in der Variablen r, auf die ich später in der fünften Zeile verweise. Ich führe zwei zufällige Sortierungen durch: eine für die Gegenstände und die andere für die Fragen. Wenn Sie mehr über ES6 erfahren möchten, empfehle ich, hier zu lesen .
Conor O'Brien
2

CJam, 54 53 55 52 Bytes

1 Byte durch Verwendung einer späteren Version (verfügbar bei TIO) gespart. 2 Bytes gewonnen, weil ich vergessen habe, die Reihenfolge der Fragen zufällig zu bestimmen. 2 Bytes von einem weiteren Fehler in TIO gespeichert.

qNN+/mr{N/(\mr_"  None of the above"#3e\N*N\++}%NN+*

Probieren Sie es online!

GamrCorps
quelle
Nur zwei Bytes gewonnen? o_O
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ lol yeah, ich habe am Anfang nach Fragen aufgeteilt, also habe ich den mrOperator (randomize) hinzugefügt, um die Reihenfolge der Fragen zufällig zu ordnen, bevor die Antwortlogik stattfindet.
GamrCorps