トラック
/
ARM64 Assembly
ARM64 Assembly
/
演習
/
シマウマのパズル
シマウマのパズル

シマウマのパズル

上級

はじめに

ゼブラパズルは、5軒の家がそれぞれ違う色で塗られている、有名な論理パズルです。 家にはそれぞれ違う住人が住んでいて、国籍も、飼っているペットも、飲み物も、趣味も異なります。

パズルを解くために、解答を説明する15個の文が与えられます。 ただし、_すべての_文の情報を組み合わせてはじめて、パズルの解答を見つけることができます。

Note

ゼブラパズルは、制約充足問題(CSP)です。 このような問題では、取りうる値の集合と、どの値が有効かを制限する制約の集合があります。 よく知られた制約充足問題としては、ほかにも数独があります。

説明

課題は、ゼブラパズルを解いて、次の2つの問いの答えを見つけることです。

  • 住人のうち、水を飲むのは誰でしょう?
  • シマウマを飼っているのは誰でしょう?

パズル

次の15の命題は、すべて真であることがわかっています。

  1. 家が5軒あります。
  2. イギリス人は赤い家に住んでいます。
  3. スペイン人は犬を飼っています。
  4. 緑の家に住む人はコーヒーを飲みます。
  5. ウクライナ人はお茶を飲みます。
  6. 緑の家は、アイボリーの家のすぐ右隣にあります。
  7. カタツムリを飼っている人は、ダンスに出かけるのが好きです。
  8. 黄色の家に住む人は画家です。
  9. 真ん中の家に住む人は牛乳を飲みます。
  10. ノルウェー人は1番目の家に住んでいます。
  11. 読書を楽しむ人は、キツネを飼っている人の隣の家に住んでいます。
  12. 画家の家は、馬のいる家の隣です。
  13. サッカーをする人はオレンジジュースを飲みます。
  14. 日本人はチェスをします。
  15. ノルウェー人は青い家の隣に住んでいます。

さらに、5軒の家はそれぞれ異なる色に塗られ、住人はそれぞれ異なる国籍で、異なるペットを飼い、異なる飲み物を飲み、異なる趣味を持っています。

Note

解の候補は240億通り(5!⁵ = 24,883,200,000)あります。できるだけ多くの解を排除してみましょう。

出力形式

それぞれの国籍は、1文字で指定します。(E = Englishman、J = Japanese、N = Norwegian、S = Spaniard、U = Ukrainian)


出典

Wikipediaリンクは新しいウィンドウまたはタブで開きます
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
ARM64 Assembly Exercism

シマウマのパズルを始める準備はできましたか?

Exercismに登録すれば、78個の演習、そして本物の人間によるメンタリングとともに、ARM64 Assemblyを学んでマスターできます。すべて無料です。

シマウマのパズルを深く掘り下げよう!

240億通りある解の中からゼブラパズルを解く8通りの方法を紹介します。無効な順列をできるだけ早く除外する方法、AC-3アルゴリズム、とても簡潔な論理ベースの解法、さらには遺伝的アルゴリズムまで、さまざまなアプローチを探ってみましょう!