Дана задача по прологу: Из заданного списка слов получить список слов содержащих заданную подстроку. Я решил вот так: удалить(_,[],[]). удалить(а,[а|б],в):-удалить(а,б,в). удалить(а,[б|в],[б|г]):-НЕ(РАВНО(а,б)),удалить(а,в,г).
подстр([],_,[]). подстр([ы|в],а,[ы|Ж]):-КОПИЯ(ы,й,ц,а),!,удалить(ы,[ы|в],д),подстр(д,а,Ж). подстр([ы|в],а,Ж):-подстр(в,а,Ж).
?подстр([гиря, лошадь, романтика, гирлянда, перегиб, Гималаи], "ги",v).
Все работает, но преподаватель сказал: Бессмысленное применение предиката "удалить", а как решить без этого предиката не могу сообразить, помогите, пожалуйста.
|