私はプロローグの初心者であり、再帰的に考えるのが難しいと感じています。list1[0,0,0,1,1,0,1,1]、list2[1,0,1,0,0,0,1,1] という 2 つのリストがあるとします。また、list1 または list 2 の対応する位置に 1 がある場合、1 を持つリストを返したいと考えています。
merge([H1|[]],[H2|[]],[H3|[]]):- H2 = 1, H3 = 1, H1 is 1.
merge([H1|T1],[H2|T2],[H3|T3]):- merge(T1,T2,T3), H2 = 1, H3 = 1, H1 is 1.
上記のフォームでのたうち回ることができないことはわかっていますが、これは今のところプロローグのフォームに近いものです。再帰はとても難しいようです!