xkcdに触発されました。
あなたの課題は、ゲーム2048で数字が良い組み合わせになるかどうかを判断することです。入力は次のような数字になります。
8224
そして、出力はその数は、この入力のためになる良い2048コンボ、になるだろうかどうだろうtrue
かyes
または1
または陽性の結果を示す任意の他の方法を。
ゲームに慣れていない人のために、簡単な説明があります[2] [2]
。次のように、2のべき乗がグリッド上に配置されています。タイルは任意の方向に移動でき、2つの同一のタイルが出会うと、それらは次の2の累乗になります([2] [2]
左または右に移動するとになります[4]
)。または、ここでゲームを試すことができます。
「良い2048の組み合わせ」とはどういう意味ですか?これは、ゲーム内で「2048」であった場合、1つの数字に結合できる任意の数字を意味します。(ゼロは空のスペースを意味し、必要に応じて無視できます。)数字が複数の桁になる可能性があることに注意してください!ただし、数字は移動ごとに変更してはなりません。次に、いくつかの例/テストケースを示します(「良い」は良い組み合わせを示し、「悪い」は良くないことを意味します)。
- 良い:8224(8224-> 844-> 88-> 16)
- 良い:2222(2222-> 44-> 8)
- 良い:22048(22048-> 448-> 88-> 16)
- 悪い:20482(外側の2を組み合わせることはできず、2048と2を組み合わせることもできません)
- 良い:20482048(20482048-> 4096)
- 悪い:210241024(210241024-> 22048ですが、これは[2] [2048]になり、数字は移動ごとに変更できないため、結合できません)
- 良い:2048(すでに1つの番号です)
- 悪い:2047(2のべき乗ではありません)
- 悪い:11(ゲームに1はありません)
- 良い:000040000000(ゼロは空のスペースです)
その他の規則:
- 入力は、合理的な場所(STDIN、関数の引数、ファイルなど)から行うことができます。
- 出力は、合理的な場所(STDOUT、関数の戻り値、ファイルなど)でもかまいません。
- グリッドサイズを無視します-
22222222
それでもtrueが出力されるはずです。 - 2の累乗である限り、sの数に上限はありません。したがって、可能な数は0より大きい2の累乗です。
- あいまいさの原因となるゼロが心配な場合は、そうではありません。たとえば、またはの
22048
いずれかとして解析できます。最初のものは機能しませんが、2番目のものは機能するため、trueを出力する必要があります。[2] [2048]
[2] [2] [0] [4] [8]
- これはcode-golfなので、バイト単位の最短コードが勝ちます!
22048
出力するはずですgood
が、そうではありません。あなたはコンバイン傾ける2
と2048
、グリッドがある4x4
すべての数字は、あなたが5個の細胞を得るでしょう別々である必要があります。だから多分あなたは削除する必要があり0
ますか?また、あなたの第五の例では、ゲームがで停止しますので、無効のようです2048
:)
1