In questa sfida, ho un campo di avocado che vorrei spremere il più rapidamente e completamente possibile. Puoi scrivere un programma o una funzione per aiutarmi a capire come spremere perfettamente tutti gli avocado?
Come input, otterrai gli avocado come una griglia quadrata mx m, dove mc'è un numero intero compreso tra 3 e 6. Ogni quadrato contiene esattamente un avocado. Gli avocado hanno diverse fasi di succosità:
Fase 1: l'avocado non è stato affatto spremuto.
Fase 2: l'avocado è stato parzialmente spremuto.
Fase 3: l'avocado è stato completamente spremuto.
Fase 4: l'avocado è esploso a causa dell'eccesso di succo.
Quando si utilizza uno strumento di spremitura, gli avocado nell'area di effetto dello strumento di spremitura passano alla fase successiva. Gli avocado che esplodono hanno molta forza e distruggeranno l'intero campo di avocado, quindi assicurati che nessuno degli avocado esploda!
Ecco un esempio di una griglia di avocado. In questi esempi, ho usato le coordinate 0,0per l'angolo in basso a sinistra e le coordinate 2,2per l'angolo in alto a destra, sebbene sia possibile regolare il sistema di coordinate in base alla propria lingua.
112
221
231
L'obiettivo è quello di rendere tutti gli avocado perfettamente spremuti (cioè fase 3). Per raggiungere questo obiettivo hai tre diversi strumenti di spremitura in tuo possesso. Ogni strumento di spremitura ha una diversa area di effetto, ma tutti aumentano la succosità degli avocado colpiti di 1.
Ecco tutti gli strumenti che hai a tua disposizione. Si utilizzano gli spremiagrumi specificando la prima lettera dello strumento, quindi le coordinate che si desidera estrarre. Ad esempio, per utilizzare Slicer su square 5,2, si dovrebbe produrre S 5,2.
Affettatrice : succhi la coordinata bersaglio e l'avocado su entrambi i lati.
112 112 112
221 --> XXX --> 332
231 231 231
Grattugia : succhi la coordinata bersaglio e l'avocado sopra e sotto.
112 1X2 122
221 --> 2X1 --> 231 --> kaboom!
231 2X1 241
Lanciarazzi : succhi la coordinata bersaglio e tutti gli avocado adiacenti.
112 1X2 122
221 --> XXX --> 332
221 2X1 231
Ingressi e uscite di esempio
323
212
323
G 1,1
S 1,1
3312
3121
1213
2133
R 0,0
R 1,1
R 2,2
R 3,3
22322
22222
22222
33233
33333
G 0,3
G 1,3
G 2,2
G 3,3
G 4,3
222332
333221
222332
333222
222333
333222
S 1,5
S 1,3
S 1,1
S 4,5
S 4,3
S 4,1
G 5,4