解開《哈利波特》中所有 42 個版本的魔藥謎語

《哈利波特與魔法石》的結尾有一個有趣的謎語。 哈利和妙麗進入房間,之後房間的入口被魔法火封鎖,他們只能透過解決以下謎語才能離開房間:

前面有危險,後面有拯救,
你在我們中間找到的兩個人會幫助你;
與七人之一一起,你將繼續前進
另一人會立即帶你回去。
在我們兩個身上你會發現只有蕁麻酒,
而三者則帶來毀滅,暗中站成一排。
所以選擇你注定要品嚐的那一款,
為此,我們給出四個提示。
毒藥徒勞地試圖隱藏其致命的熱量,
你總會在酒的左邊找到他,
並且知道那些處於邊緣的人擁有不同的天賦,
但如果你想繼續下去,沒有人會幫忙。
我們每個人的大小都不同,從邊緣到邊緣,
你的死亡不在於小事,也不在於大事;
右端第二個和左端第二個
它們嘗起來像雙胞胎,儘管它們看起來並不相似。

[摘自《哈利波特與魔法石》一書的“民間翻譯”]

解開《哈利波特》中所有 42 個版本的魔藥謎語

簡而言之,他們需要了解哪些瓶子裡裝有哪些藥水。

在本文中,我們將使用程式設計來解決該難題的所有 42 種可能的變化,並繪製結果圖(如上圖所示,只是更大)。

等一下,42 個選項是從哪裡來的?

這是因為沒有標示「較小」和「較大」藥水的位置。 較大的可以在七個位置之一,這為較小的提供了 6 個剩餘選項,總共 7 * 6 = 42。我們無法確切地知道 JK 羅琳提出時的具體想法。除非她在你的推特上談論這個謎語。 好吧,直到那不可避免的一天到來之前,我們可以選擇一個隨機版本並使用它。 然而,我們無法保證其可解性,這就是為什麼我們為了共同利益而努力,解開謎語的所有 42 個變體(或證明它們的不可解性)。

已經決定

首先,這裡是這個謎題的所有限制,用簡單的術語重述:

  1. 藥水有兩種無害,三種有毒,一種可以讓你前進,一種可以讓你後退。
  2. 兩瓶無害藥劑的左側各有一瓶有毒。
  3. 兩邊的藥水各不相同,都無法讓你前進。
  4. 最大和最小的瓶子都不含毒藥。
  5. 左邊第二個瓶子和右邊第二個瓶子裡裝的是一樣的藥水。

這該如何處理呢? 讓我們考慮以下選項。 請注意,正如謎語所說,該行中有 1 個瓶子比其他瓶子小,還有 1 個瓶子比其他瓶子大。

解開《哈利波特》中所有 42 個版本的魔藥謎語

讓我們嘗試愚蠢地檢查所有選項 - 一次拿一瓶並選擇內容的所有可能選項。

例如,由於第 3 條限制,第一個瓶子不能包含使我們前進的藥水。 由於限制 2,它也不包含安全藥水 - 它的左邊不能有毒藥。 這給我們留下了毒藥水和回歸藥水的選擇。 讓我們嘗試一下這兩個選項。

下圖中,綠色藥水代表毒藥,橘色是安全飲料,藍色是向後移動的藥水,紫色是向前移動的藥水。

解開《哈利波特》中所有 42 個版本的魔藥謎語

解開《哈利波特》中所有 42 個版本的魔藥謎語

讓我們對兩個工作選項重複此過程 - 取出第二個瓶子,並交替嘗試所有可接受的內容選項。 這將為我們提供以下資訊:

解開《哈利波特》中所有 42 個版本的魔藥謎語

解開《哈利波特》中所有 42 個版本的魔藥謎語

解開《哈利波特》中所有 42 個版本的魔藥謎語

解開《哈利波特》中所有 42 個版本的魔藥謎語

繼續以這種方式行事,並放棄所有在不違反列出的限制的情況下無法填充藥水的工作選項,我們將得出唯一可接受的選項:

解開《哈利波特》中所有 42 個版本的魔藥謎語

當然,我們不能保證找到解決方案。 可能沒有解決方案,也可能有多個解決方案(如果您有多個解決方案,這就像無法解決謎題一樣,因為您不知道哪種藥水是正確的)。

將演算法應用於所有選項為我們提供了以下解決方案。 該謎語有 8 個版本可解,8 個版本無解,26 個版本有多個解。

解開《哈利波特》中所有 42 個版本的魔藥謎語

有關解決方案的更多信息

所有已解開的謎語版本都有共同點嗎? 是的! 請注意,其中最小或最大的瓶子位於第二或第六位。 這讓我們得出結論,由於限制 #2 和 #6,第二瓶和第六瓶含有安全藥水。 如果沒有這一步,我們就無法消除這些瓶子含有毒物的可能性,最終我們會得到幾種可能的解決方案。 還解決了選項要求將第二個“特殊”瓶子(最小或最大)放置在第三或第四位置。 否則的話,就無法找到推動我們前進的藥劑的確切位置。

結果

我將引用書中的一段話作為結尾。

妙麗大聲地呼了一口氣,哈利驚訝地發現她在微笑——這是他最不可能想到的事。 「太棒了,」妙麗說。 - 這不是魔法 - 這是邏輯,一個謎語。 很多最偉大的魔術師都沒有一點邏輯,他們就會永遠被困在這裡。”

但是等一下——也許我們可以根據書中的對話找出這個謎語的規範版本:

“明白了,”她說。 “最小的瓶子將引導我們穿過黑火,到達石頭。”

...

“那哪一個能讓你穿過紫色火焰回來呢?”

妙麗指著這一排右側的一個圓形瓶子。

該死的。 這個選項仍然為我們提供了幾種解決方案。 推特,博士。

代碼

如果您對解決這個難題並繪製圖表的程式碼感興趣,您可以 在這裡下載.

來源: www.habr.com

添加評論