Мутанты
Написать программу, способную производить “мутантов”, т. е. гибридов различных животных. Животные задаются их названиями в виде атомов. Два животных производят на свет мутанта, если окончание названия первого животного совпадает с началом названия второго.
Каждое животное задается с помощью факта animal(<животное>). Вы должны определить предикат mutant, вызов которого в виде цели mutant(X) сопоставит переменной X различные мутанты.
Вот результаты, полученные на множестве животных (крокодил, черепаха, карибу, лошадь, хамелеон, буйвол, волк):
крокодилошадь,
буйволк,
карибуйвол,
черепахамелеон,
волкрокодил,
волкарибу,
буйволошадь.
Нам необходимо использовать предикат name(?Атом,?Список) - конвертирование атома в список кодов ASCII. Так, например, вызов name(‘волк’,X)? конкретизирует переменную X=[162,174,171,170].
% Программа "Мутанты"
animal('крокодил').
animal('черепаха').
animal('карибу').
animal('лошадь').
animal('хамелеон').
animal('буйвол').
animal('волк').
animal(X,Y):-
animal(X),
name(X,Y).
mutant(Z):-
animal(_,X),animal(_,Y),
append(_,[BH|BT],X),
append([BH|BT],[CH|CT],Y),
append(X,[CH|CT],Z1),
name(Z,Z1).