Immagina un incendiario che cammina per la città e raccoglie le sue vittime secondo uno schema molto specifico (o, in alternativa, immagina un'ape che vola intorno al giardino e raccoglie i suoi fiori per impollinare secondo uno schema molto specifico ). Diciamo che la città è una matrice N × N , dove N è un numero intero maggiore o uguale a 2 . L'incendiario inizia dall'angolo in alto a sinistra e imposta successivamente i punti M della casa davanti a loro (dove M è il numero della casa in cui si trovano attualmente), mentre cambia la direzione in cui si sta muovendo dopo ogni incendio, nell'ordine Est ⟶ Sud ⟶ Ovest ⟶ Nord ⟶ Est ⟶ Sud ... e così via. La ninna nannadel piromane è il valore di M che li fa uscire dalla città (ovvero l'ultima casa che visitano prima di fermare l'abominio). Questo è molto più facile da capire con un esempio. Prendi ad esempio la seguente matrice:
3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Iniziamo nell'angolo in alto a sinistra, quindi M = 3 (
X
segna la posizione attuale e precedente dell'incendiario):X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Secondo l'ordine noto, per prima cosa va a est M (3) punti e atterra su un 2, quindi M cambia di conseguenza:
X 2 3 X 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Quindi va a sud di 2 punti e M ora è 1 :
X 2 3 X 7 3 1 4 1 6 2 5 3 X 1 4 4 3 2 4 1 1 1 1 1
- Ora si sposta di 1 punto verso ovest e M diventa 3 :
X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
- Dopo che si è spostato di 3 punti verso nord, esce dalla città! Pertanto, 3 è la ninna nanna di questo incendiario:
X X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
Data una matrice N × N (puoi anche prendere N come input), trova la ninna nanna del piromane. Ho scritto un programma con il quale è possibile generare più casi di test e visualizzare il percorso del piromane: provalo online!
- Si può supporre che l'incendiario ha una ninna nanna (che è, in realtà può uscire dalla matrice).
- La matrice conterrà solo numeri interi positivi inferiori o uguali a 9 (cifre), per semplicità. Le soluzioni che gestiscono qualsiasi numero intero positivo sono completamente benvenute.
- Nota che l'incendiario può atterrare in un punto che hanno già bruciato, nel caso in cui il senso in cui si muovono sia diverso dalla prima volta. In uno scenario del genere, prendi semplicemente il valore di quell'elemento e muoviti di nuovo come al solito.
- Puoi competere in qualsiasi linguaggio di programmazione e puoi prendere input e fornire output attraverso qualsiasi metodo standard , tenendo presente che queste scappatoie sono vietate per impostazione predefinita. Questo è code-golf , quindi vince l'invio più breve (in byte) per ogni lingua .
Casi test
------------- 9 2 3 1 7 2 8 7 6 Ninna nanna: 9 ------------- 2 1 2 1 3 1 1 2 1 2 2 1 1 1 1 3 Ninna nanna: 2 ------------- 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 Ninna nanna: 3 ------------- 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 Ninna nanna: 2 ------------- 3 2 1 2 1 1 1 2 3 2 3 2 1 1 2 1 1 1 3 1 2 3 1 1 1 1 1 1 4 5 2 3 1 1 1 1 2 1 2 1 2 2 1 2 2 3 2 1 2 Ninna nanna: 3 -------------
Le matrici in un formato diverso:
[[9, 2, 3], [1, 7, 2], [8, 7, 6]] [[2, 1, 2, 1], [3, 1, 1, 2], [1, 2, 2, 1], [1, 1, 1, 3]] [[3, 2, 3, 2, 7], [3, 1, 4, 1, 6], [2, 5, 3, 1, 1], [4, 4, 3, 2, 4], [ 1, 1, 1, 1, 1]] [[1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2]] [[3, 2, 1, 2, 1, 1, 1], [2, 3, 2, 3, 2, 1, 1], [2, 1, 1, 1, 3, 1, 2], [ 3, 1, 1, 1, 1, 1, 1], [4, 5, 2, 3, 1, 1, 1], [1, 2, 1, 2, 1, 2, 2], [1, 2, 2, 3, 2, 1, 2]]
Il quinto caso di test è molto interessante da visualizzare .