Forscher entdeckten kürzlich eine interessante Bienenkolonie, die in einem unendlichen Wabenfeld lebt:
Jede Zelle kann eine Biene beherbergen oder nicht. Tatsächlich scheint das Leben dieser Kreaturen ein bisschen ... chaotisch zu sein. Es könnte berechnet werden, dass eine Kolonie immer mit dem folgenden Muster beginnt:
(Biene gezeichnet von Emmanuel Boutet auf Wikimedia Commons . Dieses Waben-Bienen-Bild wird also unter CC-By-SA veröffentlicht . Murren )
Danach werden die Lebenszyklen der Bienen in sogenannte Generationen unterteilt. Jede Generation alter Bienen stirbt und neue schlüpfen, und das hängt in erster Linie von den Nachbarn ihrer Zelle ab:
- Wenn eine Biene weniger als zwei Nachbarn hat, stirbt sie an Einsamkeit.
- Wenn eine Biene mehr als drei Nachbarn hat, stirbt sie an Überfüllung.
- Wenn eine Zelle zwei, drei oder vier lebende Bienen in benachbarten Zellen hat, schlüpft dort in der nächsten Generation eine neue Biene.
Sterbende Bienen sterben erst am Ende einer Generation ab, daher wirken sie sich immer noch auf umliegende Zellen aus, die Bienen in der nächsten Generation ausbrüten könnten.
Jetzt, da wir wissen, wie eine solche Kolonie funktioniert, können wir sie über eine beliebige Anzahl von Generationen simulieren.
Eingang
Die Eingabe ist eine einzelne Zahl N , die bei der Standardeingabe angegeben wird und durch einen Zeilenumbruch abgeschlossen wird. 0 ≤ N ≤ 150. Dies ist die Anzahl der zu simulierenden Generationen.
Ausgabe
Die Ausgabe ist eine einzelne Zahl in der Standardausgabe und optional gefolgt von einem einzelnen Zeilenumbruch, der die Anzahl der lebenden Bienen nach N Generationen darstellt.
Zusätzliche Ausgabe bei Standardfehler wird ignoriert.
Beispieleingaben
0
5
42
100
Beispielausgaben
6
44
1029
5296
Gewinnbedingung
Der kürzeste Code gewinnt, wie es im Golf üblich ist. Bei einem Gleichstand gewinnt die frühere Lösung.
Testfälle
Es gibt zwei Testskripte mit identischen Testfällen:
Der Aufruf erfolgt in beiden Fällen: <test script> <my program> [arguments]
zB ./test ruby beehive.rb
oder ./test.ps1 ./beehive.exe
.
Ich weiß, dass es statt 151 nur 22 Tests gibt (hauptsächlich, weil Lösungen oft sehr langsam sind). Bitte unterlassen Sie es, die genauen Testfälle einzubetten, anstatt die Aufgabe zu lösen. Mit diesen Skripten können Sie bequem testen, ob das Programm nach einer Änderung immer noch korrekt reagiert. nicht, dass Sie Ihren Code an die spezifischen Testfälle anpassen können.
Noch ein Hinweis
Diese Aufgabe war Teil eines Golfwettbewerbs an meiner Universität im Zeitraum 2011-24. Die Partituren und Sprachen unserer Teilnehmer waren wie folgt:
- 336 - C
- 363 - C
- 387 - C
- 389 - Haskell
- 455 - C
Unsere eigene Lösung war
- 230 - Rubin