Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

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

.docx
Скачиваний:
9
Добавлен:
07.03.2015
Размер:
34.96 Кб
Скачать

Лабораторная работа № 4. Получение списка из заданного списка с помощью преобразований

Задание 4.1. Написать программу определения количества списков на заданном уровне в произвольном введенном исходном списке. Исходный список имеет уровень 0, вложенный в него список имеет уровень 1 и т.д.

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1) она выведет на экран сообщение “Количество списков на 1-м уровне равно 2”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2) она выведет на экран сообщение “Количество списков на 2-м уровне равно 2”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 3) она выведет на экран сообщение “Количество списков на 3-м уровне равно 1”.

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

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0) она выведет на экран сообщение “Количество атомов на 0-м уровне равно 2”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1) она выведет на экран сообщение “Количество атомов на 1-м уровне равно 4”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2) она выведет на экран сообщение “Количество списков на 2-м уровне равно 3”.

Задание 4.3. Написать программу выделения списков на заданном уровне в произвольном введенном исходном списке. Сформировать из выделенных списков список и вывести его. Исходный список имеет уровень 0, вложенный в него список имеет уровень 1 и т.д.

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1) она выведет на экран сообщение “Список списков 1-го уровня ((b(c 1)d e)( (2(g))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2) она выведет на экран сообщение “Список списков 2-го уровня ((c 1)(2(g) ))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 3) она выведет на экран сообщение “ Список списков 3-го уровня ((g ))”.

Задание 4.4. Написать программу выделения атомов на заданном уровне в произвольном введенном исходном списке. Сформировать из них список и вывести его. Атомы, содержащиеся в исходном списке, имеют уровень 0, атомы, содержащиеся в следующем вложенном списке, имеют уровень 1 и т.д.

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0) она выведет на экран сообщение “Список атомов 0-го уровня (a f)”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1) она выведет на экран сообщение “Список атомов 1-го уровня (b d e 3)”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2) она выведет на экран сообщение “ Список атомов 2-го уровня (с 1 2)”.

Задание 4.5. Написать программу выделения списков в заданном интервале уровней в произвольном введенном исходном списке. Сформировать из них список и вывести его. Исходный список имеет уровень 0, вложенный в него список имеет уровень 1 и т.д.

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0 2) она выведет на экран сообщение “Список списков с 0-го по 2-й уровни ((a(b(c 1)d e)f((2(g))3)) (b (c 1)d e)(c 1)((2(g))3)(2(g)))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2 3) она выведет на экран сообщение “Список списков со 2-го по 3-й уровни ((c 1)(2(g)) (g))”.

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

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0 1) она выведет на экран сообщение “Список атомов с 0-го по 1-й уровни (a f b d e 3)”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 2) она выведет на экран сообщение “Список атомов c 1-го по 2-й уровни (b d e c 1 3 2)”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2 3) она выведет на экран сообщение “ Список атомов со 2-го по 3-й уровни (с 1 2 g)”.

Задание 4.7. Написать программу выделения списков на заданном уровне и замены их новыми списками в произвольном введенном исходном списке. Списки для замены вводить в виде одного списка. Исходный список имеет уровень 0, вложенный в него список имеет уровень 1 и т.д.

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 ‘((b(c 1))((2(g))3 d e))) она выведет на экран сообщение “Измененный исходный список (a(b (c 1))f((2(g))3 d e))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2 ‘((a b))) она выведет на экран сообщение “ Измененный исходный список (a(b(a b)d e)f((2(g))3))”.

Задание 4.8. Написать программу выделения атомов на заданном уровне и замены их новыми атомами в произвольном введенном исходном списке. Новые атомы вводить в виде списка. Атомы, содержащиеся в исходном списке, имеют уровень 0, атомы, содержащиеся в следующем вложенном списке, имеют уровень 1 и т.д.

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0 ‘(a1 f1)) она выведет на экран сообщение “Модифицированный исходный список (a1(b(c 1)d e)f1((2(g))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 ‘(b1 d1 e1)) она выведет на экран сообщение “ Модифицированный исходный список (a(b1(c 1)d1 e1)f((2(g))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2 ‘(cc 11 22)) она выведет на экран сообщение “ Модифицированный исходный список (a(b(cc 11)d e)f((22(g))3))”.

Задание 4.9. Написать программу выделения списков в заданном интервале уровней и замены их новыми списками в произвольном введенном исходном списке. Новые списки вводить в виде списка списков, соответствующих каждому уровню. Если в списке A находится список B и указано, что надо модифицировать список B и список, входящий в него, то список B не изменять. Исходный список имеет уровень 0, вложенный в него список имеет уровень 1 и т.д.

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 2 ‘(((b d e)(bb 4))((c h)))) она выведет на экран сообщение “Измененный исходный список (a(b(c h)d e)f((bb 4)3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2 3 ‘(((cc 11))((ggg)))) она выведет на экран сообщение “ Измененный исходный список (a(b(cc 11)d e)f((2(ggg))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 3 3 ‘((g h k))) она выведет на экран сообщение “ Измененный исходный список (a(b(c 1)d e)f((2(g h k))3))”.

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

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0 1 ‘((a1)(b1 d1 e1 33))) она выведет на экран сообщение “Измененный исходный список (a1(b1(c 1)d1 e1)f((2(g))33))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0 2 ‘((a1 f1)(b1 d1 e1 33)(cc 11 22))) она выведет на экран сообщение “ Измененный исходный список (a1(b1(cc 11)d1 e1)f1((22(g))33))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 3 3 ‘((ggg))) она выведет на экран сообщение “ Измененный исходный список (a(b(c 1)d e)f((2(ggg))3))”.

Задание 4.11. Написать программу выделения списков на заданном уровне и удаления заданного их количества в произвольном введенном исходном списке. Исходный список имеет уровень 0, вложенный в него список имеет уровень 1 и т.д.

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 1) она выведет на экран сообщение “Измененный исходный список (a f ((2(g)) 3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2 2) она выведет на экран сообщение “ Измененный исходный список (a(b d e)f( 3 ))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 3 1) она выведет на экран сообщение “ Измененный исходный список (a(b(c 1)d e)f((2)3))”.

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

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 1) она выведет на экран сообщение “Измененный исходный список (a(b(c 1) e)f((2(g))))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 2 2) она выведет на экран сообщение “ Измененный исходный список (a(b(c 1)d e)f(((g))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 3 1) она выведет на экран сообщение “ Измененный исходный список (a(b(c 1)d e)f((2(g))3))”.

Задание 4.13. Написать программу выделения списков в заданном интервале уровней и удаления заданного их количества в произвольном введенном исходном списке. Удаление начинается со списков большего уровня. Если в удаляемом списке находятся списки, входящие в заданный интервал, то они учитываются при удалении. Если в удаляемом списке находятся списки, не попадающие в интервал, то удаляемый список оставляется. Исходный список имеет уровень 0, вложенный в него список имеет уровень 1 и т.д.

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 2 3) она выведет на экран сообщение “Измененный исходный список (a f((2(g))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 3 2) она выведет на экран сообщение “ Измененный исходный список (a f((2(g))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 3 3) она выведет на экран сообщение “ Измененный исходный список (a f)”.

Пояснение к первому обращению

(p1 '(a(b(c 1)d e)f((2(g))3)) 1 2 3)

Списки первого уровня: (b(c 1)d e), ((2(g))3)

Списки второго уровня: (c 1), (2(g))

Списки третьего уровня: (g)

Результат удаления списков большего уровня:

(a(b d e)f((2(g))3))

Результат удаления списков меньшего уровня:

(a f ((2(g))3) )

Алгоритм программы (процедурный):

1.Составить описания о списках, входящих в основной список

2. Согласно описанию составить новый список из исходного учитывая промежуточное его значение

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

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0 1 3) она выведет на экран сообщение “Измененный исходный список (((c 1)d e)((2(g))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 2 2) она выведет на экран сообщение “ Измененный исходный список (a((c 1) e)f((2(g))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0 3 5) она выведет на экран сообщение “ Измененный исходный список (((c 1))((2(g))3))”.

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

Пример. Пусть имя программы p1, допустим, набрали исходный список

( a (b (c 1)d e) f ( (2 (g ) ) 3) ).

1 2 3 2 1 2 3 4 3 2 1 0

Тогда при обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0 1 3 '(1 2)) она выведет на экран сообщение “Измененный исходный список (a((c 1))f((2(g))3))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 1 2 4 ‘(2 3 4)) она выведет на экран сообщение “ Измененный исходный список (a(b()d e)f(((g))))”. При обращении к программе (p1 '(a(b(c 1)d e)f((2(g))3)) 0 3 5 ‘(0 1 2)) она выведет на экран сообщение “ Измененный исходный список (((c 1))((2(g))3))”.