研究者は最近、蜂の巣の無限のフィールドに住む興味深い蜂のコロニーを発見しました。
各セルには蜂を入れることも入れないこともできます。実際、それらの生き物の生活は少し混chaとしているように見えます。コロニーは常に次のパターンで始まると計算できます。
(ビーによって描か エマニュエルBOUTET にウィキメディアコモンズ。このハニカム・アンド・ハチ画像はこのように下でリリースされる CC-BY-SA。 grumbles)
その後、ミツバチのライフサイクルはいわゆる世代に分割されます。各世代の古いミツバチは死に、新しいミツバチはhatch化します。そして、それは主に彼らの細胞の隣人に依存します:
- ミツバチの隣人が2人以下の場合、孤独のために死にます。
- ミツバチが3つ以上の隣人を持っている場合、過密のために死にます。
- セルが隣接するセルに2つ、3つ、または4つの生きているミツバチを持っている場合、新しいミツバチが次世代でそこにthere化します。
死ぬミツバチは世代の終わりまで死なないので、次世代のミツバチをhatch化させるかもしれない周囲の細胞に影響を与えます。
そのようなコロニーがどのように機能するかがわかったので、何世代でもそれをシミュレートできます。
入力
入力は、標準入力で指定された単一の数値Nであり、改行で終了します。0≤ N ≤150これは、シミュレートする世代数です。
出力
出力は、標準出力では単一の数値であり、オプションで単一の改行が続きます。これは、N 世代後の生きているミツバチの数を表します。
標準エラーの追加出力は無視されます。
サンプル入力
0
5
42
100
サンプル出力
6
44
1029
5296
勝利条件
ゴルフで通例であるように、最短のコードが勝ちます。同点の場合、以前のソリューションが優先されます。
テストケース
同じテストケースを含む2つのテストスクリプトがあります。
呼び出しはどちらの場合でも:<test script> <my program> [arguments]
、./test ruby beehive.rb
または./test.ps1 ./beehive.exe
。
151の代わりに22のテストしかないことを知っています(主にソリューションが非常に遅いため)。タスクを解決する代わりに、正確なテストケースを埋め込むことは控えてください。これらのスクリプトは、変更によってプログラムが正しく動作するかどうかをテストするのに便利です。特定のテストケースにコードを適応できるわけではありません。
別のメモ
このタスクは、2011〜W24の間に私の大学で開催されたゴルフコンテストの一部でした。出場者のスコアと言語は次のとおりです。
- 336 – C
- 363 – C
- 387 – C
- 389 –ハスケル
- 455 – C
私たち自身のソリューションは
- 230 –ルビー