Alla fine del libro «Harry Potter e la pietra filosofale» c'è un enigma interessante. Harry e Hermione entrano in una stanza, dopo di che gli ingressi vengono bloccati da un fuoco magico, e potranno uscirne solo risolvendo il seguente enigma:
Davanti a te c'è pericolo, e dietro c'è salvezza,
Ti aiuteranno due, che troverai tra di noi;
Con una delle sette continuerai a muoverti in avanti,
L'altra ti riporterà indietro immediatamente.
In due di noi troverai solo vino ortica,
Ma tre portano rovina, stanno in fila di nascosto.
Quindi scegli da quale assaporare è destinato,
Per questo ti diamo quattro indizi.
Invano il veleno ha cercato di nascondere il suo calore mortale,
Lo troverai sempre a sinistra del vino,
E sappi che quelli ai lati custodiscono doni diversi,
Ma se vuoi andare oltre, nessuno ti aiuterà.
Ci differenzieremo tutti per dimensione, da un lato all'altro,
La tua morte non è nel più piccolo, ma neppure nel più grande;
Il secondo dalla destra e il secondo dalla sinistra
Al gusto — sembrano gemelli, anche se all'aspetto sono diversi.
[da «traduzione popolare» del libro «Harry Potter e la pietra filosofale»]

In altre parole, devono capire in quali bottiglie si trovano quali pozioni.
In questo articolo risolveremo tutte le 42 possibili varianti di questo rompicapo attraverso la programmazione e disegneremo un diagramma dei risultati (come nell'immagine sopra, solo di dimensioni molto più grandi).
Un attimo, da dove viene fuori il numero 42?
È tutto perché le posizioni delle pozioni "minori" e "maggiori" non sono specificate. La pozione grande può essere in una delle sette posizioni, il che lascia 6 possibilità per quella minore, quindi 7 * 6 = 42. Non possiamo sapere quale disposizione avesse in mente J.K. Rowling inventando questo enigma, a meno che non lo racconti nel suo Twitter. Fino a quando quel giorno inevitabile non arriverà, possiamo scegliere una versione casuale e lavorarci su. Tuttavia, non ci saranno garanzie sulla sua risolvibilità, quindi lavoriamo per il bene comune, risolvendo tutte le 42 varianti dell'enigma (o dimostrando la loro insolubilità).
RISOLVI GIÀ
Per prima cosa, ecco tutte le limitazioni dell'enigma riformulate in modo semplice:
- Ci sono due pozioni innocue, 3 velenose, 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 andare avanti.
- La bottiglia più grande e quella più piccola non contengono veleno.
- La seconda bottiglia a sinistra e la seconda bottiglia a destra contengono la stessa pozione.
Come possiamo procedere? Consideriamo la seguente opzione. Nota che, come indicato nell'enigma, c'è 1 bottiglia più piccola di tutte le altre e 1 bottiglia più grande di tutte le altre.

Proviamo a esaminare tutte le opzioni – prendendo una bottiglia alla volta e provando tutti i possibili contenuti.
Ad esempio, la prima bottiglia non può contenere la pozione che ci avanza a causa della restrizione n. 3. Inoltre, non contiene una pozione sicura a causa della restrizione n. 2 – non può esserci veleno a sinistra di essa. Questo ci lascia le opzioni con la pozione avvelenata e la pozione che riporta indietro. Proviamo entrambe le opzioni.
Nelle immagini successive, le pozioni verdi indicano veleno, quelle arancioni rappresentano bevande sicure, le blu indicano pozioni che riportano indietro e la porpora indica quella che avanza.


Ripetiamo questo processo per entrambe le bottiglie - prenderemo la seconda bottiglia e proveremo a turno tutte le opzioni consentite per il contenuto. Questo ci darà quanto segue:




Continuando su questa strada e escludendo tutte le opzioni in cui una bottiglia non può essere riempita con la pozione senza violare i vincoli elencati, arriveremo all'unica opzione valida:

Naturalmente, non avevamo garanzie di trovare una soluzione. Potrebbe non esserci stata alcuna soluzione, oppure potrebbero esserci state più soluzioni (e se hai più soluzioni, è equivalenti a dire che il problema non può essere risolto, poiché non si sa quale delle pozioni sia quella giusta).
Applicare l'algoritmo a tutte le opzioni ci fornisce le seguenti soluzioni. 8 varianti del rompicapo sono risolvibili, per 8 non ci sono soluzioni e per 26 ci sono più soluzioni.

Ulteriori informazioni sulle soluzioni
Есть ли что-то общее у всех решаемых вариантов загадки? Да! Обратите внимание, что в них самая маленькая или самая большая бутылки стоят на 2-м или 6-м местах. Это позволяет нам сделать вывод, что 2-я и 6-я бутылка содержат безопасные зелья из-за ограничений №4 и №5. Без этого шага мы не можем устранить возможность того, что в этих бутылках яд, и в итоге приходим к нескольким возможным решениям. Также решаемые варианты требуют, чтобы вторая «особая» бутылка (самая маленькая или самая большая) стояли на 3-м или 4-м месте. Иначе точное местоположение зелья, двигающего нас вперёд, найти не получается.
Risultati
Закончу цитатой из книги.
Гермиона с шумом выдохнула, и Гарри изумлённо заметил, что она улыбалась – это было последнее занятие, которое могло бы прийти ему в голову. «Гениально, — сказала Гермиона. – Это не магия – это логика, загадка. У множества величайших магов не наберётся и грамма логики, и они застряли бы здесь навечно».
Но, погодите-ка – может, мы сумеем понять каноническую версию загадки на основе диалога из книги:
«Capito, — disse lei. – La bottiglia più piccola ci porterà attraverso il fuoco nero, e al Pietra».
…
«E quale ti permetterà di tornare attraverso il fuoco porpora?»
Hermione indicò una bottiglia rotonda a destra della fila.
Accidenti. Questa opzione ci offre comunque diverse soluzioni. Scrivete tweet, DR.
Codice
Se sei interessato al codice per risolvere questo enigma e disegnare diagrammi, puoi .
Fonte: habr.com
