Практическая информатика




Списки - часть 3


Например, 1984 год - год начала очередного цикла - назывался Годом Зеленой Крысы.

Составим программу, которая по заданному номеру года нашей эры n печатает его название в старояпонском календаре. Рассмотрим два случая:

(1) значение n не меньше, чем 1984;

(2) значение n - любое натуральное число.

Воспользуемся встроенным предикатом nth0(индекс, список, элемент), который будет успешным, если элемент находится на месте с номером индекс, считая от 0. Для случая (1) используем предикат nam, для случая (2) предикат - nm.

color(N,X):- N1 is ((N-1984) mod 60)//12, nth0(N1, ['зеленый', 'красный', 'желтый', 'белый', 'черный'], X).

animal(N,X):- N1 is (N-1984) mod 12, nth0(N1, ['крыса', 'корова', 'тигр', 'заяц', 'дракон', 'змея', 'лошадь', 'овца', 'обезьяна', 'курица', 'собака', 'свинья'], X).

nam(N,[X,Y]):- number(N), color(N,X), animal(N,Y).

nm(N,X):- N>1983, nam(N,X). nm(N,X):- N<1984, N1 is N+60, nm(N1,X).

Задание

Напишите процедуры на языке Пролог для решения следующих задач и приведите примеры использования этих процедур.

  1. Определите максимальный элемент списка чисел.
  2. Найдите второй по величине элемент списка.
  3. Сформируйте новый список из тех элементов данного списка, которые стоят на нечетных позициях. Например, из списка чисел [1, 2, 3, 4, 5, 6, 7] нужно получить следующий: [1, 3, 5, 7].

  1)

 

женщина(анна).женщина(юлия).
женщина(галина).женщина(елена).
мужчина(борис). мужчина(антон).
мужчина(олег). мужчина(павел).
родитель(анна,юлия).родитель(анна,антон).
родитель(анна,борис).родитель(олег,юлия).
родитель(олег,антон).родитель(олег,борис).
родитель(галина,анна).родитель(галина,елена).
родитель(борис,павел).

© 2003-2007 INTUIT.ru. Все права защищены.




Содержание  Назад