Hai, saya mencoba menulis predikat yang mengurutkan daftar pertama dari rendah ke tinggi dan daftar kedua dari tinggi ke rendah, kemudian memasukkan kepala setiap daftar ke dalam daftar baru.
Prolog - predikat untuk mengurutkan dan menggabungkan daftar
Jawaban (1)
Berikut kode untuk predikat mix/3
:
mix([],[],[]).
mix([],[H1|T1],[H1|T2]):-
mix([],T1,T2).
mix([H1|T1],[],[H1|T2]):-
mix(T1,[],T2).
mix([H1|T1],[H2|T2],[H1,H2|T3]) :-
mix(T1,T2,T3).
Yang ini juga berfungsi dengan daftar input dengan panjang berbeda.
person
damianodamiano
schedule
07.12.2017
mix([], [], X)
mengatakan jika Anda mencampur daftar kosong ([]
) dengan daftar kosong ([]
) Anda mendapatkan apa pun yang Anda inginkan (X
). Kelihatannya tidak logis, bukan?mix([], X, X)
sepertinya logis. Seperti halnya,mix(X, [], X)
yang tidak Anda miliki.mix([H1|T1], [H2|T2], [H1|X]) :- mix(T1, T2, [H2|X]).
Menurutku hanya perlumix([H1|T1], [H2|T2], [H1,H2|T]) :- mix(T1, T2, T)
kan? Nama umum untuk ini adalahzip
, bukanmix
. - person lurker   schedule 07.12.2017