Sfida
Date le dimensioni della griglia, le posizioni degli ostacoli, la posizione del giocatore e la posizione del bersaglio, il tuo compito è quello di trovare un percorso per il giocatore per raggiungere il bersaglio ed evitare gli ostacoli allo stesso tempo (se necessario).
Ingresso
- N : dimensione della griglia
N x N
- P : Posizione del giocatore
[playerposx, playerposy]
- T : posizione del bersaglio
[targetposx, targetposy]
- O : posizioni degli ostacoli
[[x1, y1], [x2, y2],...,[xn, yn]]
Produzione
Percorso : un giocatore di percorso può usare per raggiungere il bersaglio[[x1, y1], [x2, y2],...,[xn, yn]]
Regole
- Il punto si
[0,0]
trova nell'angolo in alto a sinistra della griglia. - La posizione del giocatore sarà sempre sul lato sinistro della griglia.
- La posizione del bersaglio sarà sempre sul lato destro della griglia.
- La griglia avrà sempre almeno un ostacolo.
- Puoi presumere che nessun ostacolo si sovrapponga al giocatore o alla posizione del bersaglio.
- Non è necessario necessariamente trovare il percorso minimo.
- Il giocatore può solo spostarsi a sinistra, a destra, in alto e in basso, non in diagonale.
- Puoi prendere l'input in qualsiasi modo conveniente.
- Puoi presumere che esista sempre un percorso per raggiungere il bersaglio.
- Ovviamente, per ogni input esistono più percorsi validi, scegline uno.
- Supponiamo che
N > 2
la griglia sia almeno3 x 3
.
Esempi
Ingresso: 9
, [6, 0]
, [3, 8]
, [[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
Possibile uscita:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
Ingresso: 6
, [1, 0]
, [3, 5]
, [[1, 2], [2, 5], [5, 1]]
Possibile uscita:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
Nota
Si noti che X
è per le righe e Y
per i col. Non confonderli con le coordinate in un'immagine.
modificare
Come sottolineato da @digEmAll, a causa delle regole #2
e #3
, playerY = 0
e targetY = N-1
. Quindi, se vuoi, puoi prendere solo come input playerX
e e targetX
(se questo accorcia il tuo codice).