difference-lists

    12

    2答えて

    私は、後で処理するためにバイナリツリーをリストにフラット化することを考えていました。 私は最初に(++)を使用して左右の分岐を結合すると考えましたが、悪い場合にはO(n^2)時間かかると考えました。 私はリストを後方に構築することを考えて、(:)を使用して線形時間で追加しました。しかし、私はこのリストを折りたたみ式の関数に送ると、折り畳みを開始する前にツリー全体が横断されるまで待たなければならない

    1

    1答えて

    listdiffはcarがLで、cdrがeqのペアですか? L、または(cdr L)、または(cdr(cdr L)))などにすることができます。listdiffのcdrはリストである必要はありません。任意のオブジェクトであってもよい。 listdiff Dは、(car D)に先行する(car D)の接頭辞を表します。たとえば、ilsが不適切なリスト(a e i u。y)であるとします。リスト(ae

    1

    1答えて

    this question on an empty list as a difference listを書き留めているとき、私はそれらの構造について知っているものをテストしたかったのです。しかし、違う表記を比べるだけの簡単なことをしようとしたとき、私は間違っているように見えました。ではなく、は実際に違いリストで何が起こっているのか理解しています。 ?- L = [a,b,c|[d,e]]-[d,e

    6

    3答えて

    は、差分リストを使用し、他のではなく、1を次のプログラムを考えてみましょう。両方が同じことを行うので reverse1(List1,R) :- rev1(List1, R-[]). rev1([], A-A). rev1([H|T], C-A) :-rev1(T, C - [H|A]). reverse2(List1,R) :- rev2(List1, R, []). rev2([],

    0

    1答えて

    私はPrologとPrologの相違点リストの概念を学んでいます。 私は次のコードを持っている:それはリストのリストを生成するSWI-インタプリタで、今私はリスト[1,2,3]を追加した場合 :- op(400, xfx, \). append(Xs, Ys, Zs) :- append_dl([Xs|T1]\T1, [Ys|T2]\T2, Zs\[]). append_dl(X

    5

    2答えて

    不完全リストを差分リストに変換したいのですが、その逆もあります。 これが差に定期的にリストを変換するためのコードです: reg2diff(L,X-Y):-append(L,Y,X). は、どのように私は他の方向に行くのですか?

    4

    2答えて

    を示しています私は、プロローグ(SWI)のための私の宿題に取り組んでいるが、これを成し遂げる方法を見つけ出すことはできません。 私はファンクタを持っている: palindrome([]). palindrome([_]). palindrome([A|T]) :- append(Middle,[A],T), palindrome(Middle). は、指定されたリス