Нещодавно дослідники виявили цікаву бджолину колонію, яка живе в нескінченному полі соти:
Кожна клітина може розмістити бджолу чи ні. Насправді життя цих істот виглядає трохи ... хаотично. Можна обчислити, що колонія завжди починається з наступної схеми:
(Бі намальовано Еммануель BOUTET на Вікісховища . Це стільники-і-бджола зображень , таким чином , випускаються під CC-BY-SA . Бурчання )
Після цього життєві цикли бджіл діляться на так звані покоління. Кожне покоління старі бджоли гинуть, а нові вилуплюються, і це в першу чергу залежить від сусідів їхніх клітин:
- Якщо бджола має менше двох сусідів, вона гине через самотність.
- Якщо бджола має більше трьох сусідів, вона гине через переповнення.
- Якщо в клітині є дві, три або чотири живі бджоли в сусідніх клітинах, то в наступному поколінні висиджується нова бджола.
Вмираючі бджоли не гинуть до кінця покоління, тому вони все ще впливають на навколишні клітини, які можуть вилупитися бджіл у наступному поколінні.
Тепер, коли ми знаємо, як працює така колонія, ми можемо моделювати її через будь-яку кількість поколінь.
Вхідні дані
Введення - це єдине число N , яке задається на стандартному вході, що закінчується розривом рядка. 0 ≤ N ≤ 150. Це кількість поколінь для моделювання.
Вихідні дані
Вихід - це одне число, на стандартному виході та необов'язково супроводжується перервою на одній лінії, яка представляє кількість живих бджіл після N поколінь.
Додатковий вихід при стандартній помилці ігнорується.
Зразки входів
0
5
42
100
Зразки виходів
6
44
1029
5296
Умова виграшу
Найкоротший код виграє, як це прийнято в гольфі. У разі вирівнювання виграє раніше рішення.
Тестові справи
Є два сценарії тестів, що містять однакові тестові випадки:
Закликання є в обох випадках: <test script> <my program> [arguments]
наприклад, ./test ruby beehive.rb
або ./test.ps1 ./beehive.exe
.
Я знаю, що є лише 22 тести замість 151 (в основному тому, що рішення часто бувають досить повільними). Будь ласка, не укладайте точні тестові випадки, а не вирішуйте завдання. Ці сценарії зручні для вас, щоб перевірити, чи зміна все-таки спричиняє поведінку програми правильно; не те, що ви можете адаптувати свій код до конкретних тестових випадків.
Ще одна примітка
Це завдання було частиною змагань з гольфу, які проводилися в моєму університеті протягом 2011 -24. Оцінки та мови наших учасників конкурсу були такими:
- 336 - С
- 363 - С
- 387 - С
- 389 - Хаскелл
- 455 - С
Наше власне рішення було
- 230 - Рубі