สุ่มทดสอบ


21

ฉันเป็นครูและในอีกไม่กี่วันฉันต้องให้นักเรียนของฉันทำการทดสอบ ตอนนี้ฉันกังวลเสมอเกี่ยวกับนักเรียนที่น่ารักที่สุดที่ได้รับบาดเจ็บจากคนที่น่ารักที่สุดเมื่อพวกเขาโกงดังนั้นฉันจึงต้องการที่จะสุ่มทดสอบเพื่อให้ไม่มีใครสามารถโกงใครได้

ตอนนี้ฉันบันทึกการทดสอบในรูปแบบนี้แล้ว:

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

นั่นคือคำถามจะถูกคั่นด้วยบรรทัดว่างหนึ่งบรรทัดและคำตอบทั้งหมดจะถูกนำหน้าด้วยช่องว่างสองช่อง นี่คือผลลัพธ์ที่ฉันต้องการ:

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

นั่นคือแต่ละคำตอบของคำถามในลำดับแบบสุ่มและลำดับคำถามจะถูกสุ่มเช่นกัน โปรดทราบว่าหากตัวเลือกคำตอบคือ "ไม่มีข้อใดถูก" ก็ควรอยู่ที่ด้านล่าง คำถามทุกข้อมีคำตอบสี่ข้อเสมอและ "ไม่มีข้อใดข้างต้น" ปรากฏเป็นตัวเลือกคำตอบสุดท้ายเท่านั้น - และไม่ปรากฏเป็นสตริงย่อยของตัวเลือกคำตอบที่ไม่ใช่ "ไม่มีข้อใดข้างต้น" น่าเสียดายที่ฉันไม่สามารถเขียนการทดสอบทั้งหมดของฉันใหม่ได้ดังนั้นคุณจะต้องทดสอบในรูปแบบนั้น นอกจากนี้นักเรียนของฉันจะต้องสามารถอ่านได้ดังนั้นฉันจึงไม่สามารถใช้วิธีอื่นใด (ยกเว้นตามที่อธิบายไว้ด้านล่าง)

ฉันไม่ต้องการให้มันสุ่มอย่างสมบูรณ์ ตราบใดที่มันใกล้

ช่องโหว่มาตรฐานถูกแบน


โบนัส

ตอนนี้นักเรียนของฉันคุ้นเคยกับรูปแบบธรรมดานั้น แต่ถ้าคุณทำให้มันเป็นแบบนี้ ...

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

ฉันจะลด 25% จากคะแนนสุดท้ายของคุณ คุณจะได้รับข้อมูลในลักษณะเดียวกัน

นั่นคือถ้าคุณหมายเลขคำถามและติดป้ายคำตอบ โปรดทราบว่าคำถามควรเริ่มต้นที่ 1 และคำตอบคือจาก A ถึง D


หมายเหตุ: ตัวอย่างต่างจากตัวอย่างในคำตอบเพราะฉันเปลี่ยนพวกเขาหลังจากข้อเท็จจริง ตัวอย่างที่เฉพาะเจาะจงไม่ได้เป็นประเด็น คำตอบต้องทำงานกับคำถามใด ๆ


โบนัสในสนามกอล์ฟรหัสท้อแท้ทั่วไป ไม่มีการส่งในปัจจุบันไม่มีการรับโบนัส (ยกเว้นอันนี้แต่ด้วยโบนัสที่ได้คะแนนแย่กว่าไม่มี) ดังนั้นจึงเป็นตัวบ่งชี้ที่ดีว่าการท้าทายจะดีขึ้นหากไม่มีโบนัส
Mego

@Mego มันเหมาะกับหัวข้อของคำถามและเข้าใจง่าย ไม่มีอันตรายใด ๆ
คดีกองทุนโมนิกา

คำตอบ:



4

JavaScript ES6, 170 ไบต์

เป็นฟังก์ชั่นที่ไม่ระบุชื่อตั้งชื่อมัน หมายเหตุ: วิธีนี้ใช้วิธีการเรียงลำดับแบบสุ่มซึ่งไม่ได้สุ่มทั้งหมดแต่ก็เพียงพอถ้าคุณไม่ใช่ครูน่าจะเป็น

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`

`

ด้วยโบนัส 180.75 ไบต์

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`

`

ทดสอบสิ!


คุณลองรับโบนัสไหม?
CalculatorFeline

@CatsAreFluffy ไม่, ยังสุทธิ;)
Conor O'Brien

1
@CatsAreFluffy ดีมันเป็นเรื่องทางเทคนิคอย่างมาก ...
Conor O'Brien

3
อะไรกันแน่ อะไรนะ? เทคนิคคืออะไร อะไร อะไรนะ ... เหลืออะไรอีก 493 ตัวอักษร?
CalculatorFeline

1
@ fond42518 ความสุขของฉัน! อย่างไรก็ตามในการเรียงลำดับแบบสุ่มนั้นฉันบันทึกฟังก์ชัน_=>.5-Math.random()ไปยังตัวแปรrซึ่งฉันอ้างอิงในบรรทัดที่ห้าในภายหลัง จริง ๆ แล้วฉันกำลังทำการสุ่มสองประเภท: หนึ่งรายการและอีกคำถาม หากคุณต้องการที่จะเรียนรู้ ES6 มากขึ้นผมขอแนะนำให้อ่านที่นี่
Conor O'Brien

2

CJam, 54 53 55 52 ไบต์

บันทึก 1 ไบต์จากการใช้รุ่นที่ใหม่กว่า (ใช้ได้ใน TIO) รับ 2 ไบต์เพราะฉันลืมสุ่มลำดับคำถาม บันทึก 2 ไบต์จากข้อผิดพลาดอื่นที่แก้ไขใน TIO

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

ลองออนไลน์!


ได้รับเพียงสองไบต์เท่านั้น o_O
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ lol ใช่ฉันแบ่งคำถามตามจุดเริ่มต้นดังนั้นฉันจึงเพิ่งเพิ่มmrโอเปอเรเตอร์ (สุ่ม) เพื่อสุ่มลำดับของคำถามก่อนที่ตรรกะการตอบจะเกิดขึ้น
GamrCorps
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.