배경
열두 동전 문제는 면접에서 일반적으로 사용되는 고전적인 균형 퍼즐 입니다. 퍼즐은 1945 년에 처음 나타 났으며 할아버지가 어머니와 결혼 해달라고 부탁했을 때 아버지 께 제기되었습니다! 퍼즐에는 12 개의 동전이 있으며 그중 하나는 다른 것보다 무겁거나 가볍습니다 (당신은 어느 것을 모릅니다). 문제는 고유 동전을 결정하기 위해 저울을 세 번 사용하는 것입니다. 어떤 변형에서, 동전이 더 무거운 지 또는 더 가벼운지를 식별 할 필요가있다.
여기서 과제 는 최악의 경우 가능한 가장 적은 무게를 사용하여 n 개의 동전 과 관련된 일반적인 문제 를 해결하는 것 입니다. 동전이 더 무겁거나 더 가벼운 지 식별 할 필요는 없으며 어느 동전인지 알 수 있습니다. 또한, 주어진 세트 이외의 추가 동전에 액세스 할 수 없습니다 (흥미롭게도 차이가 있습니다).
k 계량은 최대 (3 ^ k-1) / 2 동전에 충분하다는 것이 밝혀졌습니다 (따라서이 변형에서 4 계량은 실제로 13 동전을 처리 할 수 있음). 더욱이 (그리고 놀랍게도) 미래의 계량이 과거 결과에 의존하지 않고 전체 계량 세트를 미리 선택할 수 있습니다 (여기서는 필수는 아님). 가능한 두 가지 솔루션에 대한 설명은 이 백서 및 Quora 답변을 참조하십시오 .
직무
STDIN, 명령 행 인수 또는 함수 인수를 통해 입력으로 정수 n 을 사용 하여 함수 또는 프로그램을 작성 하면 최악의 경우 가능한 최소 계량을 사용하여 n 코인 의 문제를 해결할 수 있습니다. 프로그램은 :
- 저울의
1,2,3-4,5,6
각면에 동전 목록을 표시하기 위해 형식으로 STDOUT에 계량을 인쇄 합니다. 무게가 측정되지 않은 동전은 언급하지 않아야합니다. 코인은 암시 적으로 1에서 n 까지 번호가 매겨지며 숫자 순서로 인쇄 할 필요가 없습니다 (2,1-3,4
와 동일1,2-3,4
). - 되어야 STDIN 통해 입력 기다려야 프로그램 각각 계량 한 후에
<
,=
또는>
스케일의 좌측이 우측보다 가벼운 동일한 또는 중질인지를 나타낸다. - 마지막 계량 결과 후에 프로그램은 고유 동전의 번호를 인쇄하거나 반환해야합니다.
- 프로그램은 사용자의 일관성없는 결과 입력을 처리 할 필요가 없습니다.
- 프로그램은 n 보다 작은 n을 처리 할 필요가 없습니다 .
출력 예
>> 3
1-2
>> =
1-3
>> <
3
# using Quora algorithm
>> 13
1,2,3,4-5,6,7,8
>> <
1,2,5-3,4,6
>> >
3-4
>> <
3
# using paper algorithm
>> 13
1,2,3,4-5,6,7,8
>> <
2,6,7,9-3,8,10,11
>> >
6,8,10,12-4,5,7,11
>> =
3
채점
가장 짧은 코드가 승리합니다. 표준 규칙이 적용됩니다.