O forse non è davvero un labirinto, ma comunque.
Regole:
Ingresso è una stringa di due linee, composto da
*
,1
,x
eX
. Quella corda è un labirinto da percorrere. Le linee hanno la stessa lunghezza .È possibile prendere l'input come stringa con
,
(virgola) o qualsiasi comodo separatore tra queste due righe. Oppure potresti prendere entrambe le righe come argomenti separati per la tua funzione.L'output è il numero di passaggi che è necessario eseguire per uscire dalla stringa (l'ultimo passaggio è il passaggio che consente di uscire dalla stringa).
Inizi nell'angolo in alto a sinistra (la linea più alta), prima del primo simbolo.
Per ogni passaggio, ci si sposta in avanti di un simbolo (dall'ennesima (n + 1) alla posizione ). Quindi, a seconda del personaggio su cui calpesti, il risultato è diverso. Ecco cosa fa ogni personaggio:
*
- Niente. Lo calpesti normalmente.x
- dopo averlo calpestato, cambia la linea, ma rimani sulla stessa distanza orizzontale dall'inizio. Ad esempio, sei salito sulla terza posizione della linea superiore ex
qui hai incontrato una lettera minuscola . Quindi si passa immediatamente alla riga inferiore, ma di nuovo alla terza posizione.X
- cambia linea e vai alla posizione successiva. L'esempio è lo stesso lì, ma ti sposti anche dalla terza alla quarta posizione (quindi sei sulla seconda linea nella quarta posizione).1
- vai avanti di un'altra posizione.
Una volta che ogni personaggio fa il suo lavoro, viene sostituito con uno spazio e non "funziona" più.
Seguono esempi.
Input :
x *
Come detto prima, inizi prima del primo simbolo della prima riga. Il primo passo ti sposta sulla lettera
x
e questa lettera passa alla seconda riga. La letterax
non funziona più comex
, ma sostituita con*
. Ciò sarà più pertinente negli ultimi esempi. Ora sei su un asterisco nella riga inferiore e non ti ha fatto nulla.Il secondo passo ti sta portando avanti e tu esci dalla stringa, quindi il labirinto è completo e ha fatto 2 passi.
Uscita
2
.Input :
xX* x1*
1 ° passo : vai avanti
x
, che ti sposta sullax
riga inferiore. Ecco la regola che dice che il carattere usato è sostituito da un asterisco. Quindi si torna indietro sulla prima riga, ma non è piùx
presente, poiché è stato utilizzato ed è diventato un asterisco. Quindi ti muovi in sicurezza su questo asterisco e il passaggio è completato (ora sei nella prima posizione della prima riga).2 ° passo : vai avanti
X
, ti spinge alla linea inferiore e poi ti spinge in avanti. Ora risiedi sulla terza posizione della seconda riga (asterisco), non avendo mai visitato la seconda posizione (che contiene1
).3 ° passo : vai avanti, uscendo dalla stringa.
Uscita :
3
.
Casi test:
Ingresso:
*1* xxx
Uscita:
3
. (perché1
ti fa saltare in terza posizione). Lì non visiti mai la seconda riga, ma è necessaria una parte dell'input.Ingresso:
*X*1*x x*1xx*
Uscita:
4
.Ingresso:
1x1x ***X
Uscita:
3
.Ingresso:
1*x1xxx1*x x*x1*11X1x
Uscita:
6
.Ingresso:
xXXXxxx111* **xxx11*xxx
Uscita:
6
.
"\n\n"
è una stringa di due righe ...
1
, mentre inizi prima della 1a riga, poi vai avanti di un passo e poi finisci il labirinto ...