Un elicottero che inizia nell'angolo in alto a sinistra sta scendendo (in uno spazio 2D, ai fini di questa domanda) verso il suolo. Ha una modalità pilota automatico e una modalità manuale.
La modalità autopilota si comporta come segue:
- Se lo spazio direttamente sotto è libero, scendi ad esso.
- Altrimenti sposta un passo a sinistra o a destra, totalmente a caso. (Può spostare più passaggi in questo modo.)
E continua a ripetere questi due passaggi fino a quando non colpisce il terreno. La modalità manuale è più intelligente e troverà il percorso ottimale verso terra, anche se ciò richiede un movimento verso l'alto o qualche manovra abile.
Il tuo compito è determinare se
- L'autopilota passerà nello scenario indicato,
- Il pilota automatico potrebbe non funzionare nello scenario indicato,
- L'autopilota fallirà, ma passerà la modalità manuale, o
- Entrambe le modalità falliranno (non esiste un percorso valido verso terra).
Ingresso
- Dato scenario come un array non vuoto 1d o 2d, usando due caratteri diversi per rappresentare spazi liberi e bloccati. Punteggiatura opzionale.
- Opzionale: dimensioni dell'array
Produzione
Uno dei quattro caratteri predefiniti che indicano quale dei casi si è verificato.
Dati di esempio
Utilizzando 0 (vuoto) e 1 (bloccato) in ingresso, 1 2 3 4 in uscita (come numerato sopra)
0 0 0 0
0 1 0 0
0 0 0 1
1 1 0 0
Produzione: 1
0 0 1 0
1 0 0 1
0 0 0 0
0 1 1 0
0 0 0 1
Output: 2
(L'elicottero incontrerà l'1 nella quarta fila ed è possibile che si intrappoli alla fine della riga 5, se in modalità autopilota)
0 0 0 1 0
0 1 1 0 0
0 1 0 0 0
0 0 0 1 0
1 1 1 1 0
Output: 3
(questo richiede di spostarsi verso l'alto, quindi l'autopilota fallisce)
1 0 0
0 0 0
Produzione: 4
0 0 0 0 1
1 1 1 0 0
1 0 0 1 0
0 1 0 0 0
0 0 1 1 1
Produzione: 4