introduzione
Jonny vuole interpretare Frogger. Tuttavia, non è molto bravo. In realtà, proverà solo ad andare avanti e solo dopo che le piattaforme si saranno mosse.
Scopri se la rana di Jonny riesce a raggiungere la fine del percorso o se muore sulla sua strada.
Sfida
Il programma riceverà come input una griglia Frogger composta da 0
s e 1
s, con il seguente formato:
- La griglia avrà una larghezza e una lunghezza casuali e almeno 3x3
1
rappresenta le piattaforme0
rappresenta l'acquaF
rappresenta la posizione iniziale della rana- Ogni prima e ultima riga della griglia sarà composta solo da
1
s, e non si muoverà, e dalla ranaF
verrà posizionata a caso sull'ultima riga - Ogni strato intermedio si muoverà sempre e avrà un
<
o>
alla fine di ogni linea che indica se si sposta a sinistra o a destra
Sostituire questi simboli con i tuoi è permesso, purché siano tutti distinti e tu specifichi i rimpiazzi nella tua risposta.
L'input può essere in qualsiasi formato compatibile (stringa con interruzioni di riga, matrice di stringhe, matrice di caratteri, ...).
Regole della sfida
- Ad ogni giro, tutte le piattaforme si sposteranno di un quadrato, in base alla direzione indicata dalla
<
o>
segno - Le piattaforme riappaiono dall'altra parte della griglia se vengono spinte fuori dallo "schermo"
- Se la rana si trova su una piattaforma mobile, si sposterà con essa
- Dopodiché, la rana salterà un quadrato verso la fila superiore. La rana si muoverà ogni turno.
- La rana muore se salta in acqua (
0
) o tocca il lato della griglia insieme a una piattaforma mobile
Il tuo programma deve produrre un valore veritiero se la rana sopravvive e un valore falso altrimenti.
Questo è code-golf , quindi vince la risposta più breve in byte. Si applicano scappatoie standard.
Esempi
Esempio 1
Ingresso
11111
00111>
00101<
1F111
Produzione
1
Esecuzione
Girare 1:
11111
10011
01010
1F111
11111
10011
0F010
11111
Turno 2:
11111
11001
F0100
11111
11111
F1001
10100
11111
Girare 3:
11111
1F100
01001
11111
1F111
11100
01001
11111
Esempio 2
Ingresso
11111
00100<
00100<
1F111
Produzione
0
Esecuzione
Girare 1:
11111
01000
01000
1F111
11111
01000
0F000
11111
Turno 2:
11111
10000
F0000
11111
11111
F0000
10000
11111
Girare 3:
11111
00001
00001
11111
<
o >
alla fine.
0
fronte o aspetta il prossimo 1
? Se può aspettare, andrà avanti su tutti 1
o può aspettare in modo intelligente? Vale a dire con il caso di prova 11111 00001< 00011< 11F11
, sarà falso perché salta in acqua ( pasta di passi ); sarà falso perché si sposta fuori dalla cornice ( pasta di passi ); o sarà vero perché attende in modo intelligente la seconda piattaforma prima di saltare in avanti ( incolla di passi )?
0
.
<
o>
così possiamo prendere array rettangolari come input? A proposito, bella sfida!