Chọn ngẫu nhiên bài kiểm tra


21

Tôi là một giáo viên và trong một vài ngày tôi phải cho học sinh của mình kiểm tra. Bây giờ, tôi luôn lo lắng về việc những học sinh đáng yêu nhất của mình bị tổn thương bởi những người đáng yêu nhất khi họ gian lận, vì vậy tôi muốn chọn ngẫu nhiên các bài kiểm tra để không ai có thể lừa dối ai.

Ngay bây giờ, tôi có các bài kiểm tra của tôi được lưu ở định dạng này:

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

Đó là, các câu hỏi được phân tách bằng một dòng trống duy nhất và tất cả các câu trả lời đều có trước hai khoảng trắng. Đây là đầu ra tôi cần:

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

Đó là, mỗi câu trả lời cho một câu hỏi theo thứ tự ngẫu nhiên và thứ tự câu hỏi cũng ngẫu nhiên. Hãy nhớ rằng nếu lựa chọn câu trả lời là "Không có gì ở trên", thì nó nên ở dưới cùng. Mỗi câu hỏi luôn có chính xác bốn câu trả lời và "Không có câu trả lời nào ở trên" chỉ xuất hiện dưới dạng lựa chọn câu trả lời cuối cùng - và không bao giờ xuất hiện dưới dạng chuỗi con của lựa chọn câu trả lời không phải là "Không có câu trả lời nào ở trên". Thật không may, tôi không thể viết lại tất cả các bài kiểm tra của mình, vì vậy bạn sẽ phải thực hiện chúng theo định dạng đó. Ngoài ra, học sinh của tôi phải có khả năng đọc nó, vì vậy tôi thực sự không thể lấy đầu ra theo bất kỳ cách nào khác (ngoại trừ như được mô tả dưới đây).

Tôi không cần nó là hoàn toàn ngẫu nhiên. Miễn là nó gần.

Sơ hở tiêu chuẩn bị cấm.


Tiền thưởng

Bây giờ, sinh viên của tôi đã quen với định dạng đơn giản đó, nhưng nếu bạn có thể làm cho nó trông như thế này ...

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

Tôi sẽ lấy 25% số điểm cuối cùng của bạn. Bạn sẽ nhận được đầu vào theo cùng một cách, mặc dù.

Đó là, nếu bạn đánh số câu hỏi và dán nhãn cho câu trả lời. Xin lưu ý rằng các câu hỏi nên bắt đầu từ 1 và câu trả lời là từ A đến D.


NB: Các ví dụ khác với các câu trả lời vì tôi đã thay đổi chúng sau khi thực tế. Các ví dụ cụ thể không phải là điểm nào; câu trả lời phải làm việc với bất kỳ câu hỏi tùy ý.


Tiền thưởng trong mã golf thường không được khuyến khích . Không có bài nộp hiện tại nào nhận được phần thưởng (ngoại trừ phần này , nhưng với phần thưởng là điểm kém hơn không có), vì vậy đó là một chỉ số khá tốt cho thấy thử thách sẽ tốt hơn nếu không có phần thưởng.
Mego

@Mego Nó phù hợp với chủ đề của câu hỏi và rất dễ hiểu. Không có hại trong đó.
Vụ kiện của Quỹ Monica

Câu trả lời:



4

JavaScript ES6, 170 byte

Là một chức năng ẩn danh, đặt tên cho nó. Lưu ý: phương pháp này sử dụng phương pháp sắp xếp ngẫu nhiên, không hoàn toàn ngẫu nhiên , nhưng là đủ, miễn là bạn không phải là giáo viên xác suất.

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`

`

Với phần thưởng, 180,75 byte

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`

`

Kiểm tra nó ra!


Bạn đã thử đi để nhận tiền thưởng?
Máy

@CatsAreFluffy Không, mạng chưa;)
Conor O'Brien

1
@CatsAreFluffy Vâng, đó là một điều ... kỹ thuật cao.
Conor O'Brien

3
Một cao là gì? Có chuyện gì vậy? Kỹ thuật là gì? Cái gì Cái gì ...? 493 ký tự còn lại là gì?
Máy

1
@ fond42518 Niềm vui của tôi! Tuy nhiên, trong loại sắp xếp ngẫu nhiên đó, tôi đang lưu hàm _=>.5-Math.random()vào biến r, mà tôi tham chiếu sau trên dòng thứ năm. Tôi thực sự đang thực hiện hai loại ngẫu nhiên: một cho các mục và một cho các câu hỏi. Nếu bạn muốn tìm hiểu thêm ES6, tôi khuyên bạn nên đọc ở đây .
Conor O'Brien

2

CJam, 54 53 55 52 byte

Đã lưu 1 byte từ việc sử dụng bản phát hành sau (có sẵn trên TIO). Đạt được 2 byte vì tôi quên chọn ngẫu nhiên thứ tự câu hỏi. Đã lưu 2 byte từ một lỗi khác được sửa trên TIO.

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

Hãy thử trực tuyến!


Chỉ có hai byte đạt được? o_O
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ lol vâng, tôi đã phân chia dựa trên các câu hỏi lúc đầu, vì vậy tôi chỉ cần thêm mrtoán tử (ngẫu nhiên hóa) để ngẫu nhiên hóa thứ tự các câu hỏi trước khi logic trả lời diễn ra.
GamrCorps 11/03/2016
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.