Naukowcy odkryli niedawno ciekawą kolonię pszczół, która żyje w nieskończonej dziedzinie plastra miodu:
Każda komórka może pomieścić pszczołę lub nie. W rzeczywistości życie tych stworzeń wydaje się być trochę ... chaotyczne. Można obliczyć, że kolonia zawsze zaczyna się od następującego wzoru:
(Pszczoła narysowana przez Emmanuela Bouteta na Wikimedia Commons . Ten obraz o strukturze plastra miodu i pszczół został wydany na licencji CC-By-SA . Narzeka )
Następnie cykle życia pszczoły dzielą się na tak zwane pokolenia. Z każdym pokoleniem stare pszczoły giną, a nowe wykluwają się i zależy to przede wszystkim od sąsiadów ich komórek:
- Jeśli pszczoła ma mniej niż dwóch sąsiadów, umiera z powodu samotności.
- Jeśli pszczoła ma więcej niż trzech sąsiadów, umiera z powodu przeludnienia.
- Jeśli komórka ma dwie, trzy lub cztery żywe pszczoły w sąsiednich komórkach, wykluwa się tam nowa pszczoła w następnym pokoleniu.
Umierające pszczoły nie umierają do końca pokolenia, więc nadal wpływają na otaczające komórki, które mogą wykluć się w następnym pokoleniu.
Teraz, gdy wiemy, jak działa taka kolonia, możemy ją symulować przez wiele pokoleń.
Wejście
Wejście to pojedyncza liczba N , podana na standardowym wejściu, zakończona przerwaniem linii. 0 ≤ N ≤ 150. Jest to liczba pokoleń do symulacji.
Wynik
Wyjście to pojedyncza liczba, na standardowym wyjściu i opcjonalnie po niej następuje pojedyncza przerwa, która reprezentuje liczbę żywych pszczół po N pokoleniach.
Dodatkowe dane wyjściowe dotyczące błędu standardowego są ignorowane.
Przykładowe dane wejściowe
0
5
42
100
Przykładowe wyniki
6
44
1029
5296
Warunki wygranej
Wygrywa najkrótszy kod, jak to zwykle jest w golfie. W przypadku remisu wygrywa wcześniejsze rozwiązanie.
Przypadki testowe
Istnieją dwa skrypty testowe, zawierające identyczne przypadki testowe:
Wywołanie jest w obu przypadkach: <test script> <my program> [arguments]
np . ./test ruby beehive.rb
Lub ./test.ps1 ./beehive.exe
.
Wiem, że są tylko 22 testy zamiast 151 (głównie dlatego, że rozwiązania są często dość powolne). Proszę powstrzymać się od osadzania dokładnych przypadków testowych zamiast rozwiązywania zadania. Te skrypty są dla Ciebie wygodnym narzędziem do testowania, czy zmiana nadal powoduje prawidłowe działanie programu; nie że możesz dostosować swój kod do konkretnych przypadków testowych.
Kolejna uwaga
To zadanie było częścią konkursu golfowego, który odbył się na mojej uczelni w latach 2011-W24. Wyniki i języki naszych zawodników były następujące:
- 336 - C
- 363 - C
- 387 - C
- 389 - Haskell
- 455 - C
Nasze własne rozwiązanie było
- 230 - Rubinowy