Una metafora.
In questa settimana ci sono entrato, ho l'impressione di esserne a metà, ma non riesco ad individuare l'uscita, tra impressions, visitors, revenues: non è StarTrek, ma somiglia a un labirinto, questo si.
Ma dai labirinti si può uscire, l'algoritmo lo conosco e l'ho pure provato. E quindi uscirò anche da questa settimana, non fosse altro che perché venerdì sera arriva, qualunque cosa succeda.
E a proposito di labirinti, c'è chi ne ha fatto, da tempo, una professione: Adrian Fisher. Labirinti in tutto il mondo, sei primati nel Guinness, ma non ho voglia di andare a controllare di che si tratta.
I labirinti deve averli proprio impressi nella mente, perché guardate cosa si inventa quando non ha niente da fare: nel labirinto dell'immagine si entra dalla casella nera al centro in basso, poi ci si può spostare, in alto, in basso, a destra o a sinistra, non in diagonale, ma solo di un numero di caselle pari a quello riportato nella casella in cui ci si trova. Ad esempio, alla prima mossa ci si può spostare solo di una casella ("1" nella casella nera). Supponiamo di andare nella casella rossa immediatamente a sinistra, c'è un due, quindi alla prossima mossa ci si può spostare di due caselle, e così via. Obiettivo: raggiungere la casella a scacchi bianchi e neri al centro. Spero che esista una soluzione.
Nel sito mazepuzzle.com se ne tovano di carini, da provare.
Buon mercoledì a todos, incluso chi sta in ferie.
Mi spiego: un problema "bello" avrebbe previsto o una sola soluzione, oppure almeno una soluzione particolare, che so, una che prevedesse di passare per tutte le caselle. Invece no, ci sono più soluzioni, la più corta di undici passi, la più lunga di diciannove. Sempre che il programmino in "ubasic" che ho fatto sia corretto ...
In genere questo tipo di problema si approccia cominciando o dall'inizio, o dal fondo. Dall'inizio c'è subito una complicazione: dalla casella inziale è possibile muovere un singolo passo in ben tre direzioni. Troppo complicato da seguire.
Allora ho provato dal fondo: alla casella finale si può arrivare solo dalla "1" rossa appena sopra. A questa si può arrivare solo dalla "2" rossa due passi a dx. A questa dalla blu "3" tre passi a sx. A questa dalla "2" blu due passi sotto. A questa dalla "2" blu due passi a dx. A questa dalla "3" rossa tre passi a sx. A questa, purtroppo, si può arrivare in due modi: dalla "4" rossa quattro passi a dx, o dalla "1" blu un passo sopra. E qui viene la complicazione, occorre tener traccia di due possibili percorsi.
A questo punto ho abbandonato il tentativo manuale, e ho scritto il programmino (se qualcuno ha voglia di dargli un'occhiata trovo il modo per postarlo, è un file testo).
Abbastanza semplice, prova tutte le strade possibili, abbandona il tentativo se ripassa da un punto già toccato. Salvo errori, il cammino più breve è, partendo dalla casella nera:
dx-sx-up-dw-dw-dx-sx-up-dx-sx-dw-*
Poi c'è un percorso in 12 passi:
sx-dx-sx-up-dw-dw-dx-sx-up-dx-sx-dw-* (c'è solo il primo passo in più)
Poi tre da 13, due da 14, nove da 16, quattro da 17, quattro da 18, quattro da 19.
Mi ricordo che qualcuno mi disse, a proposito di labirinti del genere, che per uscirne occorresse rasentare sempre la parete a destra. Prima o poi se ne sortiva. O forse era nello stesso film che si svelava la via d'uscita?
Ciao!