Итак, задача состоит в том, чтобы заменить буквы звездочками.Во-первых, вы должны Google некоторые материалы о строках в прологе.Чем легко получить что-то подобное
string_replace( [], [] ).
string_replace( [H | Tail], StringNew ) :-
( not(underscore(H)), asterisk(A), StringNew = [A | StringTail], string_replace( Tail, StringTail) )
;
( underscore(H), StringNew = [H | StringTail], string_replace( Tail, StringTail) )
.
letter( X ) :-
( X >= 97, X =< 122 )
;
( X >=65, X =<90 ).
underscore( 95 ).
asterisk( 42 ).
main :-
string_replace( "test_string", S1 ),
writef( "%s", [S1] ), nl,
string_replace( "another string", S2 ),
writef( "%s", [S2] ), nl,
!
.
Это работает так
?- main.
****_******
**************
true.
Он не использует встроенные предикаты, но может быть полезно понять, как все это на самом делеработает.