20975

Ассоциативные списки и списки свойств

Лабораторная работа

Информатика, кибернетика и программирование

DEFUN F27 L COND NULL L NIL T CONS LENGTH CDR CAR L F27 CDR L пример SETQ SCLAD 'PROCESSORS MATHERBOARDS MEMORY PUT ‘PROCESSORS ‘CORE2DUO 5 PUT ‘PROCESSORS ‘CORE2EXTREME 8 PUT ‘MATHERBOARDS ‘ASUSp6t7 1 PUT ‘MATHERBOARDS ‘ASUSp6t6 12 PUT ‘MATHERBOARDS ‘INTELdp55kg 34 PUT ‘MEMORY ‘DDR 23 PUT ‘MEMORY ‘DDR2 34 PUT ‘MEMORY ‘DDR3 15 PUT ‘MEMORY ‘SDRAM 15 F27 SCLAD = 2 3 4 Исходный список содержит имена объектов списки свойств которых содержат некоторую информацию. DEFUN F29 L X COND...

Русский

2013-08-02

23.98 KB

1 чел.

Лабораторная работа № 6.

Ассоциативные списки и списки свойств.

  1.  Извлечь из ассоциативного списка элементы,  ключи  которых удовлетворяют заданным условиям.

; Извлечение из ассоциативного списка (L) всех ключей, удовлетворяющих (F).

(DEFUN F26 (L F)

(COND ((NULL L) NIL)

((FUNCALL F (CAR (CAR L))) (CONS (CDR (CAR L)) (F26 F (CDR L))))

(T (F26 F (CDR L)))

)

)

пример

(F26 ‘((a . 1) (b . 2) (c . 3) (-2 . 4) (3 . 5) (-6 . 6)) ‘MINUSP)  => (4 6)

(F26 ‘((a . 1) (b . 2) (c . 3) (-2 . 4) (3 . 5) (-6 . 6)) ‘SYMBOLP)  => (1 2 3)

  1.  Исходный список содержит имена  объектов,  списки  свойств которых содержат некоторую информацию.  Определить для каждого объекта количество пар <ключ-значение>.

(DEFUN F27 (L)

(COND ((NULL L) NIL)

    (T (CONS (LENGTH (CDR (CAR L))) (F27 (CDR L)) ))

 )

)

пример

(SETQ SCLAD '(PROCESSORS MATHERBOARDS MEMORY))

(PUT ‘PROCESSORS ‘CORE2DUO 5)

(PUT ‘PROCESSORS ‘CORE2EXTREME 8)

(PUT ‘MATHERBOARDS ‘ASUSp6t7 1)

(PUT ‘MATHERBOARDS ‘ASUSp6t6 12)

(PUT ‘MATHERBOARDS ‘INTELdp55kg 34)

(PUT ‘MEMORY ‘DDR 23)

(PUT ‘MEMORY ‘DDR2 34)

(PUT ‘MEMORY ‘DDR3 15)

(PUT ‘MEMORY ‘SDRAM 15)

(F27 SCLAD)  => (2 3 4)

  1.  Исходный список содержит имена  объектов,  списки  свойств которых содержат некоторую информацию. Другой список содержит некоторое количество (больше 1) флагов. Сформировать список объектов, содержащих не менее двух флагов из заданного списка.

; Поиск флага в списке

(DEFUN F28_2 (S F)

(COND ((NULL (FLAGP S F)) 0)

(T 1)

)

)

(DEFUN F28_1 (S L)

(SETQ P 0)

(LOOP

((NULL L) (COND ((> P 1) T) (T NIL)))

(SETQ P (+ P (F28_2 S (CAR L))))

(SETQ L (CDR L))

)

)

(DEFUN F28 (L1 L2)

(SETQ K NIL)

(LOOP

((NULL L1) K)

(IF (F28_1 (CAR L1) L2)

(SETQ K (APPEND K (LIST (CAR L1))))

)

(SETQ L1 (CDR L1))

)

)

пример

(flag S1 'F1)

(flag S1 'F2)

(flag S2 'F3)

(flag S2 'F4)

(flag S2 'F2)

(flag S3 'F3)

(flag S3 'F4)

(flag S4 'F1)

(flag S4 'F2)

(flag S4 'F3)

(F28 ‘(S1 S2 S3 S4) ‘(F1 F2 F3))  => (S1 S2 S4)

  1.  Пусть в списке свойств атома может быть специальное свойство с ключом ISA,  значение которого является именем другого списка свойств, называемого списком-прототипом, из которого могут наследоваться недостающие свойства.  Написать функцию  (GET-ISA  <имя списка свойств>  <имя  свойства>),  которая  в  случае отсутствия искомого свойства в исходном списке выдает значение первого найденного такого же свойства среди всех ISA-прототипов данного списка свойств.

(DEFUN F29 (L X)

(COND ((GET L X) (GET L X))

(T (SETQ LP (GET L 'ISA)) (GET LP X))

)

)

пример

(put Y 's1 1)

(put Y 's2 2)

(put Y 'ISA X)

(put Y 's3 3)

(put Y 's4 4)

(put X 'S5 5)

(put X 'S6 6)

(put X 'S7 7)

(put X 'S8 8)

(put X 'S9 9)

(F29 Y S3)  => 3

(F29 Y S7)  => 7

  1.  На  складе имеется несколько видов продукции.  Ассортимент каждого вида продукции представлен также несколькими  наименованиями. Задать информацию об имеющихся на складе товарах и их количестве с помощью списков свойств. Определить функции, позволяющие получать информацию о  наличии  некоторого товара на складе и корректирующие информацию о наличии при завозе и вывозе заданного количества товара.

; Определение наличия товара (X) на складе (S)

(DEFUN GETX (S X)

(LOOP

 ((NULL S) TOVAR_NA_SKLADE_OTSUTSVUET)

 ((GET (CAR S) X) (GET (CAR S) X))

 (SETQ S (CDR S))

)

)

; Вывоз товара (X) в количестве (N) со склада (S)

(DEFUN OUTPUTX (S X N)

(LOOP

((NULL S) TOVAR_NA_SKLADE_OTSUTSVUET)

((GET (CAR S) X)

(COND ((< (- (GET (CAR S) X) N) 0) NEDOSTATOCHNO_TOVARA_NA_SCLADE)

(T ((PUT (CAR S) X (- (GET (CAR S) X) N)) TOVAR_USPESHNO_VIVEZEN))                      

)

)

(SETQ S (CDR S))

)

)

; Завоз товара (X) в количестве (N) на склад (S)

(DEFUN INPUTX (S X N)

(LOOP

((NULL S) TOVAR_NA_SKLADE_OTSUTSVUET)

((GET (CAR S) X) (PUT (CAR S) X (+ (GET (CAR S) X) N)) TOVAR_USPESHNO_ZAVEZEN)

(SETQ S (CDR S))

)

)

пример

; Формирование склада комплектующих ПК

(SETQ SCLAD '(PROCESSORS MATHERBOARDS MEMORY))

(PUT ‘PROCESSORS ‘CORE2DUO 5)

(PUT ‘PROCESSORS ‘CORE2EXTREME 8)

(PUT ‘PROCESSORS ‘CORE2QUAD 23)

(PUT ‘PROCESSORS ‘COREi7 2)

(PUT ‘MATHERBOARDS ‘ASUSp6t7 1)

(PUT ‘MATHERBOARDS ‘ASUSp6t6 12)

(PUT ‘MATHERBOARDS ‘INTELdp55kg 34)

(PUT ‘MATHERBOARDS ‘MSIp55 65)

(PUT ‘MEMORY ‘DDR 23)

(PUT ‘MEMORY ‘DDR2 34)

(PUT ‘MEMORY ‘DDR3 15)

(PUT ‘MEMORY ‘SDRAM 15)

(GETX SCLAD ‘DDR2)    => 34

(OUTPUTX SCLAD ‘ASUSp6t6 4)  => TOVAR_USPESHNO_VIVEZEN

(GETX SCLAD ‘ASUSp6t6)   => 8

(INPUTX SCLAD ‘ASUSp6t6 20)  => TOVAR_USPESHNO_ZAVEZEN

(GETX SCLAD ‘ASUSp6t6)   => 28

(OUTPUTX SCLAD ‘ASUSp6t6 40)  => NEDOSTATOCHNO_TOVARA_NA_SCLADE


 

А также другие работы, которые могут Вас заинтересовать

14224. Бах. «Гольдберг вариации» 24 KB
  Лекция седьмая. Тема: Бах. Гольдберг вариации. Цикл из 30ти вариаций. Ария тема для вариаций существует в качестве Сарабанды переписанной рукой Анны Магдалены в Клавирной книжечке 1725 года. Ария существовала по крайней мере за десять лет до того как Бах во...
14225. Старинное (куплетное) рондо 24.5 KB
  Лекция восьмая. Тема: Старинное куплетное рондо. Определение. Куплетное рондо это форма где устойчивая часть по французской традиции rondeau/рондо проводится неоднократно 2 3 5 7 9 11 и более раз в главной тональности и по преимуществу неизменно а перемежающиеся...
14226. Старинная сонатная форма 14.23 KB
  Лекция десятая девятой не было. Тема: старинная сонатная форма. Определение. Классификация. Старинной сонатной называется форма с установившимся сонатным тональным планом по принципу: тоника не тоника в экспозиционной части не тоника тоника в развивающезаверш...
14227. Концертная форма эпохи барокко 28.5 KB
  Лекция одиннадцатая. Тема: концертная форма эпохи барокко. Занимает центральное место в эпохе. Концертная форма встречается в крайних частях. Барокко эпоха концертирующего стиля т.е. идея чередования тутти и соло. Эта идея встречается и в других формах. Статья: Х
14228. Бах. Бранденбургский концерт №4 24 KB
  Лекция двенадцатая. Тема: Бах. Бранденбургский концерт №4. Первая часть. Скрипка и две флейты оркестр традиционный струнный с чембало. Ядро 6 тактов. Первый каденционный участок в начале 23 такта. 57 такт проведение в Соль мажоре. 83 такт завершение темы соло ...
14229. Бах. Бранденбургский концерт № 3 23 KB
  Лекция пятнадцатая. Тема: Бах. Бранденбургский концерт № 3. Третья часть Двухчастная форма TD первая часть DT вторая часть Ядро двутактовое и развертывание Ядро в G 17 такт ядро в e 20 такт ядро в h 37 такт ядро в С потом в G As и h II ХТ...
14230. Александр Сергеевич Даргомыжский (1813-1869) 15.1 KB
  Александр Сергеевич Даргомыжский 1813-1869 Его творчество новый этап в развитии музыки. Продолжатель дела Глинки; новатор; открыватель новых путей неохваченных Глинкой. Был критическим реалистом и главной темой были представители низших сословий и их жизнь. В 1835 год...
14231. Музыкальная ритмика 21.05 KB
  Музыкальная ритмика представлена в качестве приема работы по формированию и коррекции произносительной стороны речи слабослышащих детей. Цели которые определяют основные направления в занятиях по музыкальной ритмике заключаются в том чтобы: соединить работу
14232. Музыкальное искусство средневековья 23.73 KB
  Музыкальное искусство средневековья. Урсу Полина ДВЭ2 Средневековье большая эпоха человеческой истории время господства феодального строя. Периодизация культуры: Раннее Средневековье V X вв. Зрелое Средневековье XI XIV вв. В 395 г. Римская империя расп