2

私が持っている要素で見栄えの良いリストを取得する方法を考えています! これについて調べてみましたが、実際に見つけた例はどれも実際には機能していないようです

Webで見つけた1つの方法を次に示します。

create_list(Item, List, [Item|List]).

このクエリを実行すると:

Hi = [1,2], Hey = [3,4], create_list(Hi, Hey, Output).

結果は奇妙になります:

Output = [[1,2], 3,4]

ブラケットはすべて間違っています!そのはず:

[[1,2], [3,4]]
4

2 に答える 2

2

角かっこはすべて間違っています!そのはず:

[[1,2], [3,4]]

これは、をcreate_list使用するため[Item|List]です。[3,4]角かっこをそのままにしておきたい場合は、に置き換え[Item|List]ます[Item,List]。もちろんList、今は間違った意味を持っているので、次のように名前を変更します。

list_of_two(First, Last, [First, Last]).

ただし、これは3つ以上のアイテムでは機能しません。元の1つのルールは、次のように機能します。

create_list([1,2],[],O1), create_list([3,4],O1,O2), create_list([5,6],O2,O3).

これにより、

[[5, 6], [3, 4], [1, 2]]

O3リストにあります。

于 2013-01-04T11:02:04.467 に答える
1

他の言語とは対照的に、リストは Prolog の非常に基本的なデータ構造です。

[]は/空のリストを作成しますは/
[1]単一の要素
[1,2,3,4,....,n]を持つリストを作成します は/n要素を含むリストを
[1|[2,3,4]]作成します リストに挿入1してリストを作成します[2,3,4](結果は です[1,2,3,4])

したがって、リストを「作成」するために述語は必要ありません。n要素がある場合は、それらを括弧で囲みます。要素が再帰的に生成される場合は|、新しい要素でリストを作成するために使用します。例えば:

put_in_list(A1,A2,A3, L):- L = [A1,A2,A3].

または:

put_in_list(A1,A2,A3, [A1,A2,A3]).

また:

generate(0, []).
generate(N, [ [N, NN]| Rest ]):-
   NN is N-1,
   NNN is N-2,
   generate(NNN, Rest).

全体として、型には注意する必要があります。あなたの場合、数字のリストがあり(Xと呼びましょう)、数字のリストのリストが必要です(したがって、これはXのリストになります)。この問題は、述語に X ではなく X のリストを引数として指定したときに発生しました。

于 2013-01-04T12:22:48.540 に答える