Всего newb для 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.
GOAL : Мне интересно, как удалить пробелы перед запятой.
Следующие работы, но это так неправильно на так много уровней, особенно «выход»!
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),!.