「iloveyou」という入力を文字列として受け取り、出力するプロローグプログラムを作成しようとしています。
"i love you"
"i love yo"
"i love y"
"i love "
"i love"
"i lov"
"i lo"
"i l"
"i "
"i"
私は現在SWI-Prologを使用していますが、私が持っているコードは次のとおりです。
sublist(S, L) :-
append(_, L2, L),
append(S, _, L2).
contains(A, B) :-
atom(A),
name(A, AA),
contains(AA, B).
contains(A, B) :-
sublist(B, A),
B \= [].
私はコードを実行するために以下を使用します:
?-forall(contains('i love you'、X)、writef( "%s \ n"、[X]))。
以下は、示されているとおりに生成された出力です。
i
i
i l
i lo
i lov
i love
i love
i love y
i love yo
i love you
l
lo
lov
love
love
love y
love yo
love you
l
lo
lov
love
love
love y
love yo
love you
o
ov
ove
ove
ove y
ove yo
ove you
v
ve
ve
ve y
ve yo
ve you
e
e
e y
e yo
e you
y
yo
you
y
yo
you
o
ou
u
私はありとあらゆる助けに感謝します。よろしくお願いします。