Para peneliti baru-baru ini menemukan koloni lebah yang menarik yang hidup di bidang sarang lebah yang tak terbatas:
Setiap sel dapat menampung lebah atau tidak. Faktanya, kehidupan makhluk-makhluk itu tampak sedikit ... kacau. Dapat dihitung bahwa suatu koloni selalu dimulai dengan pola berikut:
(Lebah digambar oleh Emmanuel Boutet di Wikimedia Commons . Gambar sarang lebah dan lebah ini dirilis di bawah CC-By-SA . Menggerutu )
Setelah itu siklus hidup lebah dibagi menjadi beberapa generasi. Setiap generasi lebah tua mati dan yang baru menetas dan itu terutama tergantung pada tetangga sel mereka:
- Jika seekor lebah memiliki kurang dari dua tetangga, ia mati karena kesepian.
- Jika seekor lebah memiliki lebih dari tiga tetangga, ia mati karena kepadatan yang berlebihan.
- Jika sel memiliki dua, tiga atau empat lebah hidup di sel tetangga, lebah baru menetas di sana pada generasi berikutnya.
Lebah yang sekarat tidak mati sampai akhir generasi sehingga mereka masih mempengaruhi sel-sel di sekitarnya yang mungkin menetas pada generasi berikutnya.
Sekarang kita tahu bagaimana koloni bekerja, kita dapat mensimulasikannya melalui beberapa generasi.
Memasukkan
Input adalah angka tunggal N , diberikan pada input standar, diakhiri oleh jeda baris. 0 ≤ N ≤ 150. Ini adalah jumlah generasi yang disimulasikan.
Keluaran
Output adalah angka tunggal, pada output standar dan secara opsional diikuti oleh satu baris break, yang mewakili jumlah lebah hidup setelah generasi N.
Output tambahan pada kesalahan standar diabaikan.
Input sampel
0
5
42
100
Output sampel
6
44
1029
5296
Kondisi menang
Kode terpendek menang, seperti kebiasaan dalam golf. Dalam kasus seri, solusi sebelumnya menang.
Uji kasus
Ada dua skrip pengujian, yang berisi kasus pengujian yang identik:
Doa dalam kedua kasus:, <test script> <my program> [arguments]
misalnya ./test ruby beehive.rb
atau ./test.ps1 ./beehive.exe
.
Saya tahu hanya ada 22 tes, bukan 151 (terutama karena solusi sering sangat lambat). Harap jangan menyematkan kasus uji yang tepat alih-alih menyelesaikan tugas. Skrip ini adalah kemudahan bagi Anda untuk menguji apakah suatu perubahan masih menyebabkan program berperilaku dengan benar; bukan berarti Anda dapat menyesuaikan kode Anda dengan kasus uji tertentu.
Catatan lain
Tugas ini adalah bagian dari kontes golf yang diadakan di universitas saya selama 2011-W24. Nilai dan bahasa kontestan kami adalah sebagai berikut:
- 336 - C
- 363 - C
- 387 - C
- 389 - Haskell
- 455 - C
Solusi kami sendiri adalah
- 230 - Ruby