Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
DOMAINS. genl(integer, integer, list)
list=integer* PREDICATES genl(integer, integer, list) CLAUSES genl(N2, N2, []): -!. genl(N1, N2, [N1|L]): - N1< N2, N=N1+4, genl(N, N2, L). GOAL write(“N=”), readint(N), K=4*(N+1)-2, genl(2, K, L), write(L), nl.
Результат выполнения программы: N=5 [2, 6, 10, 14, 18] Список представляет собой последовательность, состоящую из любого количества элементов, таких как 2, 6, 10, 14, 18. Список можно рассматривать как состоящий из таких компонентов, как голова списка и хвостовая часть списка. Головой списка является - 2, а хвостовой частью - следующий список [6, 10, 14, 18] (рис. 2).
Рис. 2. Древовидное представление списка [2, 6, 10, 14, 18]
4. Затем сформируем список последовательных натуральных чисел от 4 до 20 и найдём количество его элементов. DOMAINS list=integer* PREDICATES genl1(integer, integer, list) len(integer, list) CLAUSES genl1(N2, N2, []): -!. genl1(N1, N2, [N1|L]): - N1< N2, N=N1+1, genl1(N, N2, L). len(0, []). len(X, [_|L]): - len(X1, L), X=X1+1. GOAL genl1(4, 21, L), write(L), nl, len(X, L), write(“Количество элементов =”, X), nl.
Результат выполнения программы: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] Количество элементов=17 5. Теперь определим, содержится ли введенное число Х в заданном списке L. Напишите следующий программный код: DOMAINS list=integer* PREDICATES member(integer, list) CLAUSES member(X, [X|_]): - write(“yes”),!. member(X, []): - write(“no”),!. member(X, [_|L]): - member(X, L). GOAL L=[1, 2, 3, 4], write(L), nl, write(“X=”, X), readint(X), member(X, L), nl. Результат выполнения программы: 1-й случай: [1, 2, 3, 4] X=3 yes 2-й случай: [1, 2, 3, 4] X=5 no 6. Сформируйте списки L1=[1, 2, 3], L2=[10, 11, 12, 13, 14, 15] и объединить их в список L3. DOMAINS list=integer* PREDICATES genl1(integer, integer, list) append(list, list, list) CLAUSES genl1(N2, N2, []): -!. genl1(N1, N2, [N1|L]): - N1< N2, N=N1+1, genl1(N, N2, L). append([], L, L). append([X|L1], L2, [X|L3]): - append(L1, L2, L3). GOAL genl1(1, 4, L1), write(“L1=”, L1), nl, genl1(10, 16, L2), write(“L2=”, L2), nl, append(L1, L2, L3), write(“L3=”, L3), nl. Результат выполнения программы: L1=[1, 2, 3] L2=[10, 11, 12, 13, 14, 15] L3=[1, 2, 3, 10, 11, 12, 13, 14, 15]
|