Home フォーラム AZ-Prologサポート掲示板 SWI-Prologでは動きますが、、、、

  • このトピックは空です。
3件の返信スレッドを表示中
  • 投稿者
    投稿
    • #58407
      上間
      ゲスト

      こんばんは

      M.Hiroiさんの次のコード
      SWI-Prologでは動きますが、AZ-Prologでは答えが求まりません。

      my_flatten([X | Xs], Ys) :-
      my_flatten(X, Ys1), my_flatten(Xs, Ys2), append(Ys1, Ys2, Ys).
      my_flatten(X, [X]) :- atomic(X), X \== [].
      my_flatten([], []).

      実行は次のようになるはずですが、答えが求まりません。
      ?- flatten([a, [b, [c], d], [e, f]], X).
      X = [a, b, c, d, e, f]

      AZ-Prologでも動く気がします。\==  の挙動がSWI-PrologとAZ-Prologでは違うのかな?

    • #58408
      上間
      ゲスト

      2重再帰に問題?

    • #58410
      稲葉
      ゲスト

      AZ-Prolog でも解が求まっていますが。。。。

      # 文面どおりですと、
      # ?- my_flatten([a, [b, [c], d], [e, f]], X).
      #  ではなく、
      # ?- flatten([a, [b, [c], d], [e, f]], X).
      # と入力されているのであれば、述語未定義ですので Noですね。
      # なお、SWI-Prolog には flatten/2 という同様の働きをする
      # 組込述語がありますので、定義述語でないほうを動かしたのでは?

      AZ-Prolog version 9.24 (Win64/x64)
      Copyright (C) SOFNEC CO., LTD. 1987-2016/02/08
      | ?-[con].
      | my_flatten([X | Xs], Ys) :-
      |    my_flatten(X, Ys1), my_flatten(Xs, Ys2), append(Ys1, Ys2, Ys).
      | my_flatten(X, [X]) :- atomic(X), X \== [].
      | my_flatten([], []).
      | ^Z
      yes
      | ?-my_flatten([a,[b,[c],d],[e,f]],X).
      X = [a,b,c,d,e,f]
      yes

    • #58412
      上間
      ゲスト

      稲葉さん
      すいません

      おっしゃるとおり

      my_が抜けていました。

      | ?-my_flatten([a,[b,[c],d],[e,f]],X).
      X = [a,b,c,d,e,f];
      no
      | ?-

      このとおり
      実行できました。

      ありがとうございます。

      処理系作成中のSasagawaさんの方で、実行できるようになりました。
      [].のドットをNilとしていたバグだそうです。(よくわかりませんが)

      掲示板の流れ汚してしまいました。
      一連の書き込み削除でもいいです。

3件の返信スレッドを表示中
  • フォーラム「AZ-Prologサポート掲示板」には新規投稿および返信を追加できません。
上部へスクロール