26 lines
733 B
Prolog
26 lines
733 B
Prolog
map_name1(C, Cs, C, Cs).
|
|
map_name1(C, Cs, Fc, [Fc,C|Cs]) :- member(C, ['a','e','i','o','u']).
|
|
map_name1(C, Cs, Fc, [Fc|Cs]) :-
|
|
\+ member(C, ['a','e','i','o','u']),
|
|
dif(C, Fc).
|
|
|
|
map_name(C, Cs, Fc, Name) :-
|
|
map_name1(C, Cs, Fc, NChars),
|
|
atom_chars(Name, NChars).
|
|
|
|
song(Name) :-
|
|
string_lower(Name, LName),
|
|
atom_chars(LName, [First|Chars]),
|
|
|
|
map_name(First, Chars, 'b', BName),
|
|
map_name(First, Chars, 'f', FName),
|
|
map_name(First, Chars, 'm', MName),
|
|
|
|
maplist(write,
|
|
[Name, ", ", Name, ", bo-", BName, '\n',
|
|
"Banana-fana fo-", FName, '\n',
|
|
"Fee-fi-mo-", MName, '\n',
|
|
Name, "!\n\n"]).
|
|
|
|
test :-
|
|
maplist(song, ["Gary", "Earl", "Billy", "Felix", "Mary"]).
|