RosettaCodeData/Task/Determine-if-a-string-is-squeezable/Prolog/determine-if-a-string-is-squeezable.pro
2023-07-01 13:44:08 -04:00

10 lines
402 B
Prolog

squeeze_( [], _, [] ).
squeeze_( [A], _, [A] ).
squeeze_( [A,A|T], A, R ) :- squeeze_( [A|T], A, R ).
squeeze_( [A,A|T], B, [A|R] ) :- dif( A, B ), squeeze_( [A|T], B, R ).
squeeze_( [A,B|T], S, [A|R] ) :- dif( A, B ), squeeze_( [B|T], S, R ).
squeeze( Str, SqueezeChar, Collapsed ) :-
string_chars( Str, Chars ),
squeeze_( Chars, SqueezeChar, Result ),
string_chars( Collapsed, Result ).