Составители:
Рубрика:
107
том применения этого правила является неуспех. Процесс установления со-
ответствия продолжается со следующей головой списка (уже усеченного), 2,
и снова неуспешно. При следующей попытке голова списка, а вместе с ней и
объект поиска, равны 3 - успешное завершение процесса. На экране появля-
ется True, что как раз указывает на успешное завершение процесса уста-
новления соответствия
, то есть на присутствие числа 3 в списке.
Цель
find_it(1,[2,3,4,5]).
дает неуспех, так как элемент 1 в списке отсутствует. Цель
find_it("Alice",["Diana","Peter","Paul","Mary","Alice"]).
дает успех, так как список содержит элемент Alice. Цель
find_it("Toledo",["Cleveland","Dayton","Chardon",
"Youngstown","Cincinnati"]).
очевидно, также неуспешна.
* Упражнение
5.11. Нарисуйте диаграмму поиска для следующей внешней цели:
find_it(44,[11,22,33,44,11,22,33,44,11,22,33,44,55]).
В скольких случаях будет достигнут успех ?
5.5.2 Деление списков
При работе со списками достаточно часто требуется разделить список
на несколько частей. Это бывает необходимо, когда для целей текущей об-
работки нужна лишь определенная часть исходного списка, а оставшуюся
часть нужно на время оставить в покое. Сейчас Вы увидите, что деление спи-
сков на части является достаточно простой операцией.
Для
пояснения сказанного рассмотрим предикат split, аргументами ко-
торого являются элемент данных и три списка:
split(Middle,L,L1,L2).
Элемент Мiddle здесь является компаратором, L - это исходный список, а L1
и L2 - подсписки, получающиеся в результате деления списка L. Если эле-
мент исходного списка меньше или равен Middle, то он помещается в список
L1
; если больше, то в список L2.
Предположим, что вначале значением переменной Мiddle является
число 40, переменной L присвоен список [30,50,20, 25,65,95], а переменные
L1 и L2 не инициализированы.
split(40,[30,50,20,25,65,95],L1,L2).
Правило для разделения списка должно быть написано таким образом,
чтобы элементы исходного списка, меньшие либо равные 40, помещались
в список L1, а большие 40 - в
список L2.
Правило устроено следующим образом: очередной элемент извлекает-
ся из списка при помощи метода разделения списка на голову и хвост, а по-
том сравнивается с компаратором Middle. Если значение этого элемента
меньше или равно значению компаратора, то элемент помещается в спи-
сок L1, в противном случае - в список L2.
том применения этого правила является неуспех. Процесс установления со- ответствия продолжается со следующей головой списка (уже усеченного), 2, и снова неуспешно. При следующей попытке голова списка, а вместе с ней и объект поиска, равны 3 - успешное завершение процесса. На экране появля- ется True, что как раз указывает на успешное завершение процесса уста- новления соответствия, то есть на присутствие числа 3 в списке. Цель find_it(1,[2,3,4,5]). дает неуспех, так как элемент 1 в списке отсутствует. Цель find_it("Alice",["Diana","Peter","Paul","Mary","Alice"]). дает успех, так как список содержит элемент Alice. Цель find_it("Toledo",["Cleveland","Dayton","Chardon", "Youngstown","Cincinnati"]). очевидно, также неуспешна. * Упражнение 5.11. Нарисуйте диаграмму поиска для следующей внешней цели: find_it(44,[11,22,33,44,11,22,33,44,11,22,33,44,55]). В скольких случаях будет достигнут успех ? 5.5.2 Деление списков При работе со списками достаточно часто требуется разделить список на несколько частей. Это бывает необходимо, когда для целей текущей об- работки нужна лишь определенная часть исходного списка, а оставшуюся часть нужно на время оставить в покое. Сейчас Вы увидите, что деление спи- сков на части является достаточно простой операцией. Для пояснения сказанного рассмотрим предикат split, аргументами ко- торого являются элемент данных и три списка: split(Middle,L,L1,L2). Элемент Мiddle здесь является компаратором, L - это исходный список, а L1 и L2 - подсписки, получающиеся в результате деления списка L. Если эле- мент исходного списка меньше или равен Middle, то он помещается в список L1; если больше, то в список L2. Предположим, что вначале значением переменной Мiddle является число 40, переменной L присвоен список [30,50,20, 25,65,95], а переменные L1 и L2 не инициализированы. split(40,[30,50,20,25,65,95],L1,L2). Правило для разделения списка должно быть написано таким образом, чтобы элементы исходного списка, меньшие либо равные 40, помещались в список L1, а большие 40 - в список L2. Правило устроено следующим образом: очередной элемент извлекает- ся из списка при помощи метода разделения списка на голову и хвост, а по- том сравнивается с компаратором Middle. Если значение этого элемента меньше или равно значению компаратора, то элемент помещается в спи- сок L1, в противном случае - в список L2. 107
Страницы
- « первая
- ‹ предыдущая
- …
- 105
- 106
- 107
- 108
- 109
- …
- следующая ›
- последняя »