Написать программу, которая бы перебирала базу данных об именах - Prolog
Формулировка задачи:
написать программу, которая бы перебирала базу данных об именах и выводила бы первые 5 у которых длина менее 3 символов. (Длина сроки визначаетьься с помощью предиката len (string))
Решение задачи: «Написать программу, которая бы перебирала базу данных об именах»
textual
Листинг программы
name(alex).
name(kljlk).
name(jkljkew).
name(hhj).
name(w).
name(q).
name(oiio).
name("ej").
name(p).
name(qq).
name(g).
name(nm).
len([],0):-!.%вычисление длины списка (слова)
len([_|T], L) :- len(T, L1), L is L1 + 1.
get3(X) :- findall(X, (name(X), atom_length(X, LX), LX < 3), X).%получение всех атомов (имен) с сдлиной менее 3
gn(0, _, []) :- !.%получение n первых элементов списка
gn(N, L, L):- len(L, LL), N > LL, !.
gn(N, [H|T], [HStr|NewList]):- not(atomic(H)), string_to_list(HStr, H), N1 is N - 1, gn(N1, T, NewList).
gn(N, [H|T], [H|NewList]):- N1 is N - 1, gn(N1, T, NewList).
getWordList(X) :- get3(AllWords), gn(5, AllWords, X).%получение требуемого результата