Home › フォーラム › AZ-Prologサポート掲示板 › SWI-Prologでは動きますが、、、、
- このトピックは空です。
-
投稿者投稿
-
-
2016/10/03 9:15 PM #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では違うのかな?
-
2016/10/03 9:19 PM #58408上間ゲスト
2重再帰に問題?
-
2016/10/03 9:57 PM #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 -
2016/10/04 7:48 AM #58412上間ゲスト
稲葉さん
すいませんおっしゃるとおり
my_が抜けていました。
| ?-my_flatten([a,[b,[c],d],[e,f]],X).
X = [a,b,c,d,e,f];
no
| ?-このとおり
実行できました。ありがとうございます。
処理系作成中のSasagawaさんの方で、実行できるようになりました。
[].のドットをNilとしていたバグだそうです。(よくわかりませんが)掲示板の流れ汚してしまいました。
一連の書き込み削除でもいいです。
-
-
投稿者投稿
- フォーラム「AZ-Prologサポート掲示板」には新規投稿および返信を追加できません。