問題タブ [zebra-puzzle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
699 参照

prolog - Prolog の船のパズルで答えが得られないのはなぜですか?

Prolog を使用して Ship Puzzle の問題を解決する必要があります。ここに事実があります。

船は5隻。

  1. ギリシャの船は 6 時に出発し、コーヒーを運びます。
  2. 真ん中の船には黒い煙突があります。
  3. イギリスの船は9時に出発します。
  4. 青い煙突のフランス船は、コーヒーを運ぶ船の左側にあります。
  5. ココアを運ぶ船の右側にはマルセイユ行きの船があります。
  6. ブラジル船はマニラに向かっています。
  7. お米を運ぶ船の隣には、緑の煙突の船が。
  8. ジェノバ行きの船は5時に出発します。
  9. スペイン船は 7 時に出発し、マルセイユ行きの船の右側にあります。
  10. 赤い煙突のある船はハンブルグに行きます。
  11. 7時に出発する船の隣には、白い煙突のある船があります。
  12. 国境の船はとうもろこしを運んでいます。
  13. 黒い煙突のある船は8時に出発します。
  14. とうもろこしを運ぶ船は、米を運ぶ船の隣に停泊しています。
  15. ハンブルグ行きの船は 6 時に出発します。

ポートサイドに行く船は?お茶を運ぶ船は?

答えをインターネットで検索しましたが、何も見つかりませんでした。そこで、「The Zebra Puzzle」を参考にして、この問題のコードを整理しました。これが私のPrologコードの問題です。

しかし、プログラムを実行すると、「false」と表示されます。
では、どうすればこれを解決できますか?
ありがとうございました

0 投票する
2 に答える
315 参照

owl - アインシュタインのなぞなぞをスタードッグ推理器で解けますか?

アインシュタインのなぞなぞ(別名ゼブラ パズル) をStardog推理器で解くことは可能ですか? つまり、次のクエリでは期待した結果が得られませんeinsteins_riddle_en:Old_Gold

0 投票する
2 に答える
342 参照

prolog - プロローグの「建物」のなぞなぞ

Prolog でなぞなぞを解こうとしています。なぞなぞは次のとおりです: 2 つの建物があり、それぞれにツリー アパートメント (1 階あたりのアパート) があります。

ダナ、ジョニ、ノアは建物 1 に住んでいます。ロン、ゲイル、アロンは建物 2 に住んでいます。

ジョニのアパートは、ダナとノアより高いです。ノアとゲイルは同じ階(別の建物)に住んでいます。ロンはアロンより部屋が一つ多い。ロンはゲイルの 1 階上に住んでいます。2号館の最上階が5部屋のマンションです。

みんながどの階に住んでいるかを見つける必要があります。

私はこのコードを書きました:

しかし、クエリを実行すると:

私は得る:

誰でも?私は自分が間違っていることを理解していません。

0 投票する
1 に答える
281 参照

prolog - 特定の手がかりを与えられて、Prolog で表を埋める (アインシュタインのなぞなぞ)

5 つのオフィスの仮想テーブルがあります。各オフィスには、色、部署、PC、飲み物、携帯電話、および 1 から 5 までの特定の役職があります。

テーブルはこちら

テーブルを正しく埋めることができるように、Prologに次の手がかりを与えようとしています:

  1. 牛乳を飲んでいる男性はオフィス 3 にいます。
  2. 広報 ('pubrel') 部門で働いている男性は、オフィス #1 にいます。
  3. 青いオフィスの隣に広報部の男性がいます。
  4. 緑のオフィスはピンクのオフィスの右側にあります。
  5. 緑のオフィスの男性がコーヒーを飲んでいます。
  6. 黄色のオフィスの男性はブラックベリーの携帯電話を持っています。黄色のオフィスは、windows7 PC を持っている男性のオフィスの隣にあります。
  7. 赤いオフィスで働いている男性は「CS」部門の出身です。
  8. 'ode' 部門の男性は mac_pro pc を持っています。
  9. 財務 ('fin') 部門の男性がお茶を飲んでいます。
  10. iPhone を持っている人は、mac_air PC も持っています。
  11. ノキアの携帯電話を持っている男性は、ネットブック PC を持っている男性の隣にいます。
  12. Androidフォンを持っている男性はオレンジジュースを飲んでいます。
  13. 消耗品部門の男性はエリクソンの電話を持っています。

私は使用しています

ここで、X はオフィスの属性、Y はそのオフィスの位置です。例えば:

私はそれらの手がかりを「ルール」と定義し、それらはすべて同時に機能するはずです。

そして、テーブルが正しく形成されるように、それらがすべて一緒に適用できる場合に真であるはずの述語「office」にそれらすべてをフィードします。

属性が特定のスポットをキャプチャすることが許可されているperm(X,Y)場合に真になる用語として定義します、つまり、別のスポットをキャプチャしていないため、許可されています。XYX

そして最後にof(X,Y)、スポットYがまだ別のX. たとえば、of(color(red),3)他の色がスポット 3 をキャプチャしていない場合は true と見なされます。

そのため、各ルールで同時に true になるはずですperm(X,Y)of(X,Y)

おそらく、最初から具体的なものがないため、機能していません。いつになるかわからない

真になります。しかし、私は立ち往生しており、最初から特定のものを定義する方法が思いつきません。誰でもそれを機能させる方法を手伝ってもらえますか?

0 投票する
2 に答える
197 参照

prolog - Prolog のロジック パズル - リストの使用

Prolog で次の問題を解決しようとしています。正しくコーディングしたと思いますが、クエリは単に false を返します。何を変えるべきかについて何かアドバイスはありますか?問題は次のとおりです。

「地元のベーグル屋であるベーグル アレーは、通勤途中にコーヒーとベーグルを求めて立ち寄る人々で、朝の通勤時間には常に賑わいを見せていました。毎朝その場で作りたてのベーグルは非常に人気があり、店にはおいしいコーヒーもあるという事実は、ケーキのアイシングのようなものでした! ベーグルアレーで働く人々は明るくフレンドリーで有能であったため、大勢の顧客にもかかわらず、待ち時間が長くなったり不快になったりすることはありませんでした. ジョーと彼の同僚の 4 人が今朝立ち寄って、みんなが絶賛していたことを見て、店がその評判に応えていることを知ってうれしい驚きを感じました. 各同僚の名前、トッピングのベーグルの種類、味とサイズを決定しますそれぞれ注文したコーヒーの量(小、中、大)。」

  1. ブラッドはベーグルを手に入れましたが、それは小麦ではなく、何も入っていませんでした。ウォルトは小さなコーヒーを注文しました。

  2. ミディアム サイズのコーヒーを飲んだ 2 人の同僚は、ヘーゼルナッツ味のコーヒーを飲んだ同僚と、ピーナッツ バターを使ったベーグルを食べた人でした。

  3. バターではなくオニオンベーグルを手に入れた人は、フレンチバニラコーヒーも手に入れましたが、小さなサイズではありませんでした。

  4. 5 人の同僚は、大きなコーヒーを手に入れたジョー、アマレット風味のコーヒーを手に入れた人、小麦のベーグルを手に入れた人、ベーグルに卵とベーコンを手に入れた人でした。

  5. リックはブルーベリー ベーグルを注文しませんでしたが、コロンビア コーヒーを注文しました。アマレットコーヒーはチェダーベーグルと一緒に注文しましたが、ウォルトは注文しませんでした。

  6. クリームチーズにはブルーベリーベーグルは付いていませんでしたが、大きなコーヒーが付いていました。ごまベーグルにはバターが付いていましたが、カルロスは注文しませんでした。

私が書いたプロローグコードは次のとおりです。

「ベーグル(X)」というクエリを実行すると思います。問題の解決策を教えてくれるはずですが、false を返します。何か不足していますか?よろしくお願いします!

0 投票する
2 に答える
299 参照

prolog - アインシュタインのなぞなぞと用語のリスト

私は Prolog に Einstein Riddle を実装し、誰が家に魚を持っていたかを調べようとしています。
このコードに問題が見つからず、トレース オプションがこの問題の解決に役立っていません ;)

ルール:

  1. ノルウェー人は最初の家に住んでいます
  2. イギリス人は赤い家に住んでいます。
  3. 緑の家は白い家のすぐ左側にあります。
  4. デーンはお茶を飲みます。
  5. ライトスモーカーは猫のブリーダーの隣に住んでいます。
  6. 黄色い家の住人が葉巻を吸っている。
  7. ドイツ人は水パイプを吸う。
  8. センターハウスの住人が牛乳を飲む。
  9. ライトスモーカーには、水を飲む隣人がいます。
  10. 繁殖鳥のフィルターなしでタバコを吸ってください。
  11. スウェーデン育ちの犬。
  12. そのノルウェー人は青い家の隣に住んでいます。
  13. 馬の飼育者は黄色い家の隣に住んでいます。
  14. メントールを飲むビールを吸う。
  15. 温室ではコーヒーを飲みます。

これが私のコードです:

私は多くの組み合わせを試しましたが:

?-魚(誰)。
間違い。

編集:
コードは現在機能しています。変更した点:

1* から:

に:

2* 差出人:

に:

これを読んでいる場合は、ヘルパー述語の構造に関する @Enigmativity コメントも参照してください。

0 投票する
1 に答える
728 参照

prolog - Prolog を使用したアインシュタインの謎

Prolog を使用してアインシュタインのなぞなぞを解こうとしています。ハウス(Hs)で実行しようとすると、Noと表示されます。タスクは

  1. イギリス人は赤い家に住んでいます。
  2. スウェーデン人は犬をペットとして飼っています。
  3. デーンはお茶を飲みます。
  4. グリーン ハウスはホワイト ハウスのすぐ左側にあります。
  5. グリーンハウスのオーナーはコーヒーを飲みます。
  6. ポールモールを吸うオーナーが鳥を飼っています。
  7. 黄色い家のオーナーはダンヒルを吸っている.
  8. センターハウスに住むオーナーは牛乳を飲んでいます。
  9. ノルウェー人は最初の家に住んでいます。
  10. ブレンドを吸う飼い主と、猫を飼っている飼い主の隣に住んでいます。
  11. 馬を飼っているオーナーと、ダンヒルを吸っているオーナーの隣に住んでいます。
  12. ブルーマスターズを吸うオーナーはビールを飲む。
  13. ドイツ人はプリンスを吸う。
  14. そのノルウェー人は青い家の隣に住んでいます。
  15. ブレンドを吸うオーナーは、水を飲む人の隣に住んでいます。

何が悪いのかわかりません。ありがとう