Prolog のまったくの初心者。これは私を少しイライラさせます。以下の私の「解決策」は、Prologを手続き型にしようとしている...
これにより、スペースが削除されるか、必要に応じてコンマの後にスペースが挿入されます。つまり、ピリオドが検出されるまでです。
squish:-get0(C),put(C),rest(C).
rest(46):-!.
rest(32):-get(C),put(C),rest(C).
rest(44):-put(32), get(C), put(C), rest(C).
rest(Letter):-squish.
目標:コンマの前の空白も削除する方法を知りたいです。
以下は機能しますが、非常に多くのレベル、特に「出口」で非常に間違っています!
squish:-
get0(C),
get0(D),
iteratesquish(C,D).
iteratesquish(C,D):-
squishing(C,D),
get0(E),
iteratesquish(D,E).
squishing(46,X):-put(46),write('end.'),!,exit.
squishing(32,32):-!.
squishing(32,44):-!.
squishing(32,X):-put(32),!.
squishing(44,32):-put(44),!.
squishing(44,44):-put(44), put(32),!.
squishing(44,46):-put(44), put(32),!.
squishing(44,X):-put(44), put(32),!.
squishing(X,32):-put(X),!.
squishing(X,44):-put(X),!.
squishing(X,46):-put(X),!.
squishing(X,Y):-put(X),!.