Alla fine del libro "Harry Potter e la pietra filosofale" c'è un rompicapo interessante. Harry e Hermione entrano in una stanza, dopo di che gli ingressi vengono bloccati da un fuoco magico, e possono uscirne solo risolvendo il seguente indovinello:
Davanti a te c'è pericolo, e dietro c'è salvezza,
Ti aiuteranno due, che troverai tra noi;
Con una delle sette continuerai il tuo cammino
L'altra ti riporterà immediatamente indietro.
In due di noi troverai solo vino di ortica,
Ma tre portano morte, stando in fila di nascosto.
Quindi scegli, quale assaporare è destinato a te,
Per questo diamo quattro suggerimenti.
Inutilmente il veleno ha cercato di nascondere il suo calore mortale,
Lo troverai sempre a sinistra del vino,
E sappi che coloro che ai margini, portano doni diversi,
Ma se desideri andare oltre, nessuno aiuterà.
Noi ci distacchiamo in dimensione, tutti, da un margine all'altro,
Non è lì che risiede la tua morte, né è in un'altra.
Il secondo dalla destra e il secondo dalla sinistra
Al gusto — come gemelli, anche se non sembrano simili.
[da "traduzione popolare" del libro "Harry Potter e la pietra filosofale"]

In parole semplici, devono capire in quali bottiglie si trovano quali pozioni.
In questo articolo risolveremo tutti i 42 possibili scenari di questo rompicapo tramite programmazione e disegneremo un diagramma dei risultati (come nell'immagine sopra, solo di dimensioni molto maggiori).
Un attimo, ma da dove vengono 42 scenari?
Tutto dipende dal fatto che le posizioni della pozione "più piccola" e "più grande" non sono specificate. La più grande può trovarsi in uno dei sette posti, lasciando 6 opzioni per la più piccola, per un totale di 7 * 6 = 42. Non sarà possibile sapere quale disposizione esatta avesse in mente J.K. Rowling nel creare questo indovinello, a meno che non lo racconti sul suo Twitter. Ma per ora, finché quel giorno inevitabile non è arrivato, possiamo scegliere una versione casuale e lavorarci. Tuttavia, non ci saranno garanzie sulla sua risolvibilità, quindi lavoriamo per il bene comune, risolvendo tutte le 42 versioni dell'indovinello (o dimostrando la loro insolubilità).
Dai, RISOLVI GIÀ
Innanzitutto, ecco tutte le limitazioni dell'indovinello, riformulate in modo semplice:
- Ci sono due pozioni innocue, 3 avvelenate, una che permette di andare avanti e una che permette di tornare indietro.
- A sinistra di ciascuna delle due pozioni innocue c'è una velenosa.
- Le pozioni ai due estremi sono diverse e nessuna di esse consente di avanzare.
- La bottiglia più grande e la più piccola non contengono veleno.
- La seconda bottiglia a sinistra e la seconda bottiglia a destra contengono la stessa pozione.
Cosa fare in questo caso? Consideriamo la seguente opzione. Notiamo che, come dice l'enigma, nella fila c'è 1 bottiglia più piccola di tutte le altre e 1 bottiglia più grande di tutte le altre.

Proviamo a esaminare tutte le opzioni – prendiamo una bottiglia alla volta e combiniamo tutte le possibili opzioni di contenuto.
Ad esempio, nella prima bottiglia non può esserci una pozione che ci fa avanzare a causa della restrizione n. 3. Inoltre, non contiene una pozione sicura a causa della restrizione n. 2 – a sinistra non può esserci un veleno. Questo ci lascia con opzioni di pozioni avvelenate e pozioni che riportano indietro. Proviamo entrambe le opzioni.
Nei successivi schemi, le pozioni verdi indicano veleno, le arancioni – bevande sicure, le blu – pozioni che riportano indietro, e la purpurea – quella che avanza.


Ripetiamo questo processo per entrambe le opzioni di lavoro – prendiamo la seconda bottiglia e proviamo alternativamente tutte le opzioni di contenuto consentite. Questo ci darà quanto segue:




Continuando in questo modo e escludendo tutte le opzioni di lavoro in cui una bottiglia non può essere riempita con una pozione senza violare le restrizioni elencate, arriviamo all'unica opzione consentita:

Naturalmente, non avevamo garanzie di trovare una soluzione. Potrebbe non esserci alcuna soluzione, oppure potrebbero essercene più di una (e se hai più soluzioni, è equivalente a non poter risolvere l'enigma, poiché non si sa quale delle pozioni sia quella corretta).
L'applicazione dell'algoritmo a tutte le opzioni ci dà le seguenti soluzioni. 8 opzioni dell'enigma sono risolvibili, 8 non hanno soluzioni e 26 hanno più soluzioni.

Ulteriori dettagli sulle soluzioni
C'è qualcosa di comune tra tutte le varianti della domanda? Sì! Notate che la bottiglia più piccola o più grande si trova al 2° o al 6° posto. Questo ci permette di concludere che la 2ª e la 6ª bottiglia contengono pozioni sicure a causa delle restrizioni n. 4 e n. 5. Senza questo passaggio non possiamo escludere la possibilità che in queste bottiglie ci sia veleno, e alla fine arriviamo a diverse possibili soluzioni. Inoltre, le varianti risolvibili richiedono che la seconda bottiglia “speciale” (la più piccola o la più grande) si trovi al 3° o al 4° posto. Altrimenti, non riusciamo a trovare la posizione esatta della pozione che ci muove in avanti.
Conclusioni
Concluderò con una citazione dal libro.
Hermione sospirò rumorosamente, e Harry notò con stupore che sorrideva: era l'ultima lezione che gli sarebbe potuta venire in mente. «Geniale», disse Hermione. «Non è magia, è logica, un enigma. Molti dei più grandi maghi non hanno neppure un grammo di logica, e sarebbero bloccati qui per sempre».
Ma, aspetta un momento – forse possiamo capire la versione canonica dell'enigma basandoci sul dialogo del libro:
«Capito», disse lei. «La bottiglia più piccola ci porterà attraverso il fuoco nero, e verso la Pietra».
…
«E quale ti permetterà di tornare attraverso il fuoco porpora?»
Hermione indicò una bottiglia rotonda sul lato destro della fila.
Accidenti. Questa variante ci offre comunque diverse soluzioni. Scrivete tweet, DR.
Codice
Se siete interessati al codice per risolvere questo enigma e disegnare diagrammi, potete .
Fonte: habr.com
