테스트 무작위 화


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까지입니다.


NB : 예제는 사실 이후에 변경 되었기 때문에 답변의 예제와 다릅니다. 구체적인 예는 요점이 아닙니다. 답변은 임의의 질문과 함께 작동해야했습니다.


코드 골프의 보너스는 일반적으로 권장하지 않습니다 . 현재 제출물 중 어느 것도 보너스를 얻지 못합니다 (이 것을 제외하고 보너스가없는 것이 점수가없는 것보다 더 나쁜 점수입니다).
Mego

@Mego 질문의 주제에 맞고 이해하기 쉽습니다. 그것에 해가 없습니다.
기금 모니카의 소송

답변:



4

자바 스크립트 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
내 기쁨! 그러나 그 무작위 정렬에서 함수 _=>.5-Math.random()를 변수에 저장하고 있습니다 .이 변수 r는 나중에 다섯 번째 줄에서 참조합니다. 실제로 두 가지 무작위 정렬을 수행하고 있습니다. 하나는 항목과 다른 하나는 질문에 대한 것입니다. ES6에 대해 더 자세히 알고 싶다면 여기를 읽으 십시오 .
Conor O'Brien

2

CJam, 54 53 55 52 바이트

이후 릴리스를 사용하여 1 바이트를 절약했습니다 (TIO에서 사용 가능). 질문 순서를 무작위로 잊어 버렸기 때문에 2 바이트를 얻었습니다. TIO에서 수정 된 또 다른 버그에서 2 바이트를 절약했습니다.

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

온라인으로 사용해보십시오!


두 바이트 만 얻었습니까? o_O
코너 오브라이언

@ CᴏɴᴏʀO'Bʀɪᴇɴ lol 네, 처음에 질문을 기반으로 분할 한 다음 mr, 응답 논리가 발생하기 전에 질문 순서를 무작위 화하기 위해 연산자 (무작위 화)를 추가했습니다 .
GamrCorps
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.