Testi rastgele


21

Ben bir öğretmenim ve birkaç gün içinde öğrencilerime bir test vermem gerekiyor. Şimdi, her zaman en güzel öğrencilerimin hile yaptıklarında en az sevdiklerinden zarar gördüğü için endişeleniyorum, bu yüzden testleri kimsenin aldatmaması için testleri rastgele yapmak istiyorum.

Şu anda, testlerim bu biçimde kaydedildi:

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

Yani, sorular tek bir boş satırla ayrılır ve cevapların hepsinden önce iki boşluk gelir. İhtiyacım olan çıktı:

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

Yani, bir soru üzerine rastgele bir sıradaki her cevap ve soru sırası da rasgele olarak sıralanmıştır. Cevap seçiminin "Yukarıdakilerin hiçbiri" olmaması durumunda, en altta kalması gerektiğini unutmayın. Her sorunun tam olarak dört yanıtı vardır ve "yukarıdakilerin hiçbiri" sadece en son cevap seçeneği olarak görünmez - ve asla "yukarıdakilerin hiçbiri" olmayan bir cevap seçeneğinin alt metni olarak görünmez. Ne yazık ki, tüm testlerimi yeniden yazamıyorum, bu yüzden onları bu biçimde almanız gerekecek. Ayrıca, öğrencilerimin okuyabilmesi gerekiyor, bu yüzden başka bir şekilde çıktı alamam (aşağıda açıklananlar dışında).

Tamamen rastgele olmak zorunda değilim. Yakın olduğu sürece.

Standart boşluklar yasaklandı.


Bonus

Şimdi, öğrencilerim bu düz biçime alışıklar, ancak eğer böyle görünmesini sağlayabilirseniz ...

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

Son puanının% 25'ini alacağım. Yine de aynı şekilde girdi alacaksınız.

Yani, soruları numaralandırıp cevapları etiketlerseniz. Lütfen soruların 1'de başlaması gerektiğini ve cevapların A'dan D'ye olduğunu unutmayın.


Not: Örnekler cevaplardakilerden farklıdır, çünkü ben onları değiştirdikten sonra değiştirdim. Özel örnekler zaten önemli değil; cevaplar herhangi bir soru (lar) ile çalışmak zorunda kaldı.


Kod golf bonusları genellikle önerilmez . Geçerli gönderimler hiçbiri (hariç ikramiye almak bu bir , ama bonus olmadan daha kötü bir puandır) o meydan ikramiye olmadan daha iyi olacağını oldukça iyi bir gösterge yüzden.
Mego,

@Mego Sorunun konusuna uyar ve anlaşılması kolaydır. İçinde zarar yok.
Fon Monica'nın Davası

Yanıtlar:



4

JavaScript ES6, 170 bayt

Adsız bir işlevdir, adlandırın. Not: Bu, bir olasılık öğretmeni olmamanız koşuluyla, tamamen rastgele olmayan ancak yeterli olan rastgele sıralama yöntemini kullanır .

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`

`

Bonus ile, 180.75 bayt

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`

`

Test et!


Bonusu almaya çalıştınız mı?
Hesap MakinesiFeline

@CatsAreFluffy Hayır, henüz net;)
Conor O'Brien

1
@CatsAreFluffy Çok teknik bir şey.
Conor O'Brien,

3
Yüksek olan nedir? Bir şey nedir Teknik nedir? Nedir Ne ... 493 karakter kalan ne?
Hesap MakinesiFeline

1
@ fond42518 Benim zevkim! Ancak, bu rastgele sıralamada, işlevi daha sonra beşinci satırda referans _=>.5-Math.random()gösterdiğim değişkene rkaydediyorum. Aslında iki rastgele sıralama yapıyorum: biri nesnelere diğeri sorular üzerine. Daha fazla ES6 öğrenmek istiyorsanız, burada okumayı öneririm .
Conor O'Brien,

2

CJam, 54 53 55 52 bayt

Daha sonraki bir sürüm kullanarak 1 bayt kaydedildi (TIO'da kullanılabilir). 2 bayt kazandım çünkü soru sırasını rastgele seçmeyi unuttum. TIO'da düzeltilen başka bir hatadan 2 bayt kaydedildi.

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

Çevrimiçi deneyin!


Sadece iki bayt kazanıldı? o_O
Conor O'Brien,

@ CᴏɴᴏʀO'Bʀɪᴇɴ lol evet, başlangıçta sorulara dayanarak böldüm, sonra mrcevap mantığı gerçekleşmeden önce soru sırasını rastgele ayarlamak için sadece operatörü ekledim (randomize).
GamrCorps
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.