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




Списки - часть 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].




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