マンカラは、通常、プレーヤーが操作するビーズで満たされた一連のカップを含むボードゲームのファミリーの名前です。このチャレンジでは、ゲームのソリティアバリアントに特定のルールセットを使用します。
ボードは、1つの端にある「バスケット」と、それに続く1から始まる無数のカップで構成されています。一部のカップには、いくつかのビーズが含まれています。場合n
番目のカップを正確に持っているn
ことでビーズを、あなたはそれからビーズ「種をまく」ことがあります。播種とは、すべてのn
ビーズをカップから取り出し、各カップに1つずつバスケットに向かって堆積させることを意味します。最後のビーズがバスケットに入ります。ボード上のすべてのビーズがバスケットに入ったときにプレーヤーが勝利します。
明らかに、2番目のカップにビードが1つしかない場合など、勝てないボードがたくさんあります。ビーズが0個のカップはすべて播種できず、2番目のカップには播種するのに十分なビーズがないため、合法的なプレーはありません。これは明らかに面白くないので、あなたの仕事は勝てるボードを作ることです。
仕事
ビーズの数を表す正の整数が出力されると、上記のように勝てるボードを作るために各カップに入れる必要のあるビーズの数を表す非負の整数のリストが出力されます。このリストには、末尾にゼロを含めないでください。
任意の数のビーズに対して、常に1つの勝利可能なボード構成があります。
デモンストレーション
これは、4の入力と勝者のボードをプレイする方法のデモです[0, 1, 3]
。勝者のボードはです。利用可能な唯一の動きから始めて、3番目のカップからビーズを播種します[1, 2, 0]
。今、私たちは実際に選択肢を持っていますが、唯一正しいのは最初のカップを播種して、を取得することです[0, 2, 0]
。次に、2番目のカップを降伏させ[1, 0, 0]
、最後に最初のカップを再び播種して、すべての空のカップを取得します。
テストケース:
1 => [1]
2 => [0, 2]
3 => [1, 2]
4 => [0, 1, 3]
5 => [1, 1, 3]
6 => [0, 0, 2, 4]
7 => [1, 0, 2, 4]
8 => [0, 2, 2, 4]
9 => [1, 2, 2, 4]
10 => [0, 1, 1, 3, 5]
11 => [1, 1, 1, 3, 5]
12 => [0, 0, 0, 2, 4, 6]
13 => [1, 0, 0, 2, 4, 6]
14 => [0, 2, 0, 2, 4, 6]
15 => [1, 2, 0, 2, 4, 6]
16 => [0, 1, 3, 2, 4, 6]
17 => [1, 1, 3, 2, 4, 6]
18 => [0, 0, 2, 1, 3, 5, 7]
19 => [1, 0, 2, 1, 3, 5, 7]
20 => [0, 2, 2, 1, 3, 5, 7]
テストケースを生成するプログラムを作成してくれたPeterTaylorに感謝します。