I ricercatori hanno recentemente scoperto un'interessante colonia di api che vive in un campo infinito di favi:
Ogni cellula può ospitare un'ape o no. In effetti, la vita di quelle creature sembra essere un po '... caotica. Si potrebbe calcolare che una colonia inizia sempre con il seguente schema:
(Ape disegnata da Emmanuel Boutet su Wikimedia Commons . Questa immagine a nido d'ape e le api viene quindi rilasciata sotto CC-By-SA . Brontola )
Successivamente i cicli di vita dell'ape si dividono in cosiddette generazioni. Le vecchie api di ogni generazione muoiono e quelle nuove si schiudono e dipende principalmente dai vicini delle loro cellule:
- Se un'ape ha meno di due vicini, muore a causa della solitudine.
- Se un'ape ha più di tre vicini, muore a causa del sovraffollamento.
- Se una cellula ha due, tre o quattro api viventi nelle celle vicine, una nuova ape si schiude lì nella generazione successiva.
Le api morenti non muoiono fino alla fine di una generazione, quindi influenzano ancora le cellule circostanti che potrebbero schiudere le api nella generazione successiva.
Ora che sappiamo come funziona una tale colonia, possiamo simularla attraverso un numero qualsiasi di generazioni.
Ingresso
L'input è un singolo numero N , dato sull'input standard, terminato da un'interruzione di riga. 0 ≤ N ≤ 150. Questo è il numero di generazioni da simulare.
Produzione
L'output è un singolo numero, sull'output standard e facoltativamente seguito da una singola interruzione di riga, che rappresenta il numero di api viventi dopo N generazioni.
L'output aggiuntivo in caso di errore standard viene ignorato.
Ingressi campione
0
5
42
100
Output di esempio
6
44
1029
5296
Condizioni vincenti
Vince il codice più corto, come è consuetudine nel golf. In caso di pareggio, vince la soluzione precedente.
Casi test
Esistono due script di test, contenenti casi di test identici:
Invocazione è in entrambi i casi: <test script> <my program> [arguments]
ad esempio ./test ruby beehive.rb
o ./test.ps1 ./beehive.exe
.
So che ci sono solo 22 test invece di 151 (principalmente perché le soluzioni sono spesso piuttosto lente). Si prega di astenersi dall'incorporare i casi di test esatti invece di risolvere l'attività. Questi script sono utili per testare se una modifica provoca ancora il corretto funzionamento del programma; non che puoi adattare il tuo codice a specifici casi di test.
Un'altra nota
Questo compito faceva parte di una gara di golf tenutasi nella mia università durante il 2011-W24. I punteggi e le lingue dei nostri concorrenti erano i seguenti:
- 336 - C
- 363 - C
- 387 - C
- 389 - Haskell
- 455 - C
La nostra soluzione era
- 230 - Rubino