バックグラウンド
12コインの問題は、就職の面接で一般的に使用される古典的なバランスパズルです。このパズルは1945年に初めて登場し、祖父が母と結婚するように頼んだときに父に提示されました!パズルには12個のコインがあり、そのうちの1つは他のものよりも重いか軽い(どちらかはわかりません)。問題は、バランススケールを3回使用して一意のコインを決定することです。いくつかのバリエーションでは、コインが重いか軽いかを識別することも必要です。
ここでのタスクには、最悪の場合に可能な限り少ない計量を使用して、n個のコインを含む一般的な問題を解決することが含まれます。コインが重いか軽いかを識別する必要はなく、どちらかだけです。さらに、指定されたセット以外の追加のコインにはアクセスできません(奇妙なことに、違いが生じます)。
最大で(3 ^ k-1)/ 2個のコインに対してk個の計量で十分であることがわかります(したがって、このバリエーションでは4個の計量で実際に13個のコインを処理できます)。さらに(そして驚くべきことに)、将来の計量が過去の結果に依存するのではなく、計量の完全なセットを事前に選択することが可能です(ただし、ここでは必要ありません)。2つの可能なソリューションの説明については、このペーパーとこのQuoraの回答を参照してください。
仕事
STDIN、コマンドライン引数、または関数引数を介して整数nを入力として関数またはプログラムを作成します。これにより、最悪の場合に可能な限り少ない計量を使用してnコインの問題を解決します。プログラムは:
- 計量器の
1,2,3-4,5,6
両側にあるコインのリストを示す形式で計量を標準出力に印刷します。計量されていない硬貨については言及しないでください。コインには暗黙的に1からnまでの番号が付けられ、番号順に印刷する必要はありません(2,1-3,4
と同じ1,2-3,4
です)。 - 各プログラムを秤量した後であるべき、STDINを介して入力を待つ必要があり
<
、=
または>
、スケールの左側は、ライター同じ、または右側よりも重いかどうかを示します。 - 最後の計量結果の後、プログラムは一意のコインの番号を印刷または返す必要があります。
- プログラムは、ユーザーからの一貫性のない結果入力を処理する必要はありません。
- プログラムは3未満の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
得点
最短のコードが優先されます。標準ルールが適用されます。