Alphys, il Royal Scientist di Underground, ha terminato un prototipo per un nuovo puzzle. Tuttavia, non riesce a trovare qualcuno disposto a testarlo.
Le regole del suo puzzle sono le seguenti:
L'obiettivo è quello di raggiungere il lato destro, a partire dalla tessera più centrale sul lato sinistro. Per i puzzle con altezze pari, inizia dalla parte inferiore delle due tessere centrali. (Esempi: in un array 4x4 con indice zero, la posizione iniziale sarebbe [2,0] - riga 2, colonna 0. In un array 5x5 con indice zero la posizione iniziale sarebbe [2,0] - riga 2, colonna 0.)
Ogni piastrella colorata ha la sua funzione "sadica":
- Le tessere rosa e verde (rappresentate come "P" e "G") non fanno nulla
- Le tessere rosse e gialle ("R", "Y") sono impraticabili.
- Le tessere arancioni ("O") fanno sembrare il giocatore come arance
- Le tessere viola ("U") costringono il giocatore alla tessera successiva nella direzione in cui sono rivolte e le fanno odorare di limoni
- Le tessere blu ("B") sono accettabili purché il giocatore non abbia odore di arance.
Per chiarire la meccanica del sapore, l'odore di un giocatore persisterà indefinitamente o fino a quando non sarà sovrascritto da una tessera di odore diverso, cioè se un giocatore calpesta una tessera arancione sentirà l'odore di arance finché non calpesterà una tessera viola.
Inoltre, una tessera gialla posizionata verticalmente o orizzontalmente adiacente a una tessera blu farà diventare impraticabile anche la tessera blu.
Il tuo compito è quello di scrivere un programma o una funzione che accetta un array di caratteri bidimensionali (o array di stringhe 1D o qualche altro formato valido) che rappresenti il layout del puzzle come input e produca sia il puzzle originale che il puzzle risolto, con asterischi o alcuni altro personaggio che mostra il percorso corretto. Supponiamo che il puzzle dato sia risolvibile.
Usa questo puzzle come esempio:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
Il tuo programma produrrà:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
BGYBG
PGPBG
*****
OUGYB
PPOPP
Qualsiasi puzzle usato deve essere generato usando questo .
Si applicano le regole standard per il golf. Le migliori risposte saranno le più brevi per ogni lingua. Le risposte devono contenere la lingua, il numero di byte e tre casi di test. I primi due possono essere qualsiasi layout tu scelga, ma il terzo deve essere:
RRRR
RPPR
PUOR
RPBP