Randomizuj test

21

Jestem nauczycielem i za kilka dni muszę dać moim uczniom test. Teraz zawsze martwię się o to, że moi najpiękniejsi studenci zostaną skrzywdzeni przez najmniej kochanych, gdy oszukują, dlatego chcę losowo przeprowadzać testy, aby nikt nie mógł oszukiwać nikogo.

W tej chwili mam zapisane testy w tym formacie:

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
  ++

Oznacza to, że pytania są oddzielone pojedynczym pustym wierszem, a odpowiedzi są poprzedzone dwoma spacjami. Oto wynik, którego potrzebuję:

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

Oznacza to, że każda odpowiedź na pytanie w losowej kolejności, a także losowa kolejność pytań. Pamiętaj, że jeśli odpowiedź brzmi „Żadne z powyższych”, powinna pozostać na dole. Każde pytanie ma zawsze dokładnie cztery odpowiedzi, a „Żadne z powyższych” nie pojawia się tylko jako ostatni wybór odpowiedzi - i nigdy nie pojawia się jako substrat wyboru odpowiedzi, który nie jest „Żadnym z powyższych”. Niestety nie mogę przepisać wszystkich moich testów, więc musisz wziąć je w tym formacie. Ponadto moi uczniowie muszą być w stanie to przeczytać, więc nie mogę tak naprawdę pobrać wyników w żaden inny sposób (z wyjątkiem opisanych poniżej).

Nie potrzebuję, żeby był całkowicie przypadkowy. Tak długo, jak jest blisko.

Standardowe luki są zabronione.


Premia

Teraz moi uczniowie są przyzwyczajeni do tego zwykłego formatu, ale jeśli możesz sprawić, aby wyglądał tak

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

Zdejmę 25% twojego końcowego wyniku. Dostaniesz jednak dane w ten sam sposób.

To znaczy, jeśli numerujesz pytania i oznaczysz odpowiedzi. Należy pamiętać, że pytania powinny zaczynać się od 1, a odpowiedzi są od A do D.


NB: Przykłady różnią się od tych w odpowiedziach, ponieważ zmieniłem je po fakcie. Konkretne przykłady i tak nie mają sensu; odpowiedzi musiały działać z dowolnymi dowolnymi pytaniami.

Powództwo Fund Moniki
źródło
Bonusy w golfie kodowym są generalnie odradzane . Żadne z obecnych zgłoszeń nie przyjmuje premii (oprócz tej , ale z premią jest gorszy wynik niż bez), więc jest to całkiem dobry wskaźnik, że wyzwanie byłoby lepsze bez premii.
Mego
@Mego Pasuje do tematu pytania i jest łatwy do zrozumienia. Nie ma w tym żadnej szkody.
Pozew funduszu Moniki

Odpowiedzi:

7

Pyth - 48 42 41 39 bajtów

Będzie pakowany sznurek.

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

Wypróbuj online tutaj .

Maltysen
źródło
Zaakceptowanie tej odpowiedzi, ponieważ to pytanie było [code-golf] i ta odpowiedź jest najkrótsza. Dobra robota!
Pozew Fund Moniki w dniu
4

JavaScript ES6, 170 bajtów

To anonimowa funkcja, nazwij ją. Uwaga: używa to metody sortowania losowego, która nie jest całkowicie losowa , ale jest wystarczająca, pod warunkiem, że nie jesteś nauczycielem prawdopodobieństwa.

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`

`

Z premią 180,75 bajtów

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`

`

Przetestuj to!

Conor O'Brien
źródło
Czy próbowałeś skorzystać z bonusu?
CalculatorFeline
@CatsAreFluffy Nie, jeszcze netto;)
Conor O'Brien
1
@CatsAreFluffy Cóż, to bardzo techniczna ... rzecz.
Conor O'Brien,
3
Co jest wysoko Co jest Co to jest techniczne? Co to jest Co to jest ...? Co pozostało 493 znaków?
CalculatorFeline
1
@ fond42518 Cała przyjemność po mojej stronie! Jednak w tym losowym sortowaniu zapisuję funkcję _=>.5-Math.random()do zmiennej r, do której odwołuję się później w piątej linii. Właściwie wykonuję dwa losowe rodzaje: jeden na przedmiotach, a drugi na pytaniach. Jeśli chcesz dowiedzieć się więcej o ES6, proponuję przeczytać tutaj .
Conor O'Brien
2

CJam, 54 53 55 52 bajtów

Zapisano 1 bajt z późniejszego wydania (dostępne w TIO). Zyskałem 2 bajty, ponieważ zapomniałem losowo uporządkować pytania. Zapisano 2 bajty z kolejnego błędu naprawionego w TIO.

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

Wypróbuj online!

GamrCorps
źródło
Zyskane tylko dwa bajty? o_O
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ lol tak, podzieliłem na podstawie pytań na początku, a następnie dodałem mroperator (losowanie), aby losowo uporządkować kolejność pytań, zanim nastąpi logika odpowiedzi.
GamrCorps