|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[29] fun transfer(from, to, spare, 1) = move disk(from, to, spare) I transfer(from, to, spare, n) = let val (fl,sl,tl) = transfer(from,spare,to,n-1) val (f2,t2,s2) = move disk(fl.tl.sl) val (s3,t3,f3) = transfer(s2,t2,f2,n-l) in (f3,t3,s3) end fun tower of hanoi(n) = transfer(("A", incl(l.n)), ("B", []), ("С", []), n) Ответ 2.7.1: fun samefrontier(empty.empty) = true I samefrontier(leaf x, leaf y) = x=y I samefrontier(node(empty,tl),node(empty,t2)) = samefrontier(tl,t2) I samefrontier(node(leaf x,tl), node(leaf y,t2)) = x=y andalso samefrontier(tl,t2) I samefrontier(tl as node , t2 as node ) = samefrontier(adjust tl, adjust t2) I samefrontier( , ) = false and adjust(x as node(empty, )) = x I adjust(x as node(leaf , )) = x I adjust(node(node(tl,t2),t3)) = adjust(node(tl,node(t2,t3))) Приведем и другое решение, использующее исключения (см. раздел 2.8): fun sameftrontier(treel,tree2) = let exception samefringe : unit fun check el(empty.empty,rest t2) = rest t2 I check el(leaf x, leaf y, rest t2 ) = if x=y then rest t2 else raise samefringe I check el(el,node(l,r), rest t2) = check el(el, 1, r::rest t2) I check el( , , ) = raise samefringe fun check( , []) = raise samefringe I check(empty,tree2) = check el(empty, hd tree2, tl tree2) I check(l as leaf(el),tree2) = check el(l, hd tree2, tl tree2) I check(node(tl,t2),tree2) = check(t2, check(tl,tree2)) null (check(treel,[tree2])) handle samefringe => false end Ответ 2.7.2: abstype a set = set of a list with val emptyset = set [] fun singleton e = set [] fun union(set 11, set 12) = set (11 @ 12) fun member(e, set []) = false I member(e, set(h::t)) = (e=h) orelse member(e, set t) fun intersection(set [], s2) = set [] I intersection(set(h::t), s2) = let val tset as (set tl) = intersection(set t, s2) in if member(h,s2) then set(h::tl) else tset end Ответ 2.7.3: abstype a set = set of (a list * {eq : a*a->bool, It : a*a->bool}) fun emptyset ops = set([],ops) fun singleton(e,ops) = set([e],ops) fun member(e,set(1,{eq.lt}) = let fun find [] = false I find(h::t) = if eq(e,h) then true else if lt(e,h) then false else find(t) in find 1 end fun union(set(lst, ops as {eq.lt}), set(lst, )) = let fun merge([], 1st) = 1st I merge(1st,[] ) = 1st I merge(11 as (hl::tl), 12 as (h2::t2)) = if eq(hl,h2) then hi::merge(tl,t2) else if lt(hl,h2) then hi::merge(tl,t2) else h2::merge(tl,t2) in set(merge(1st ,1st),ops) end fun intersect(set(1st, ops as {eq.lt}), set(lst, )) = let fun inter([],lst) = [] I inter (1st, []) = [] I inter(ll as (hl::tl), 12 as (h2::t2)) = if eq(hl,h2) then hi::inter(tl,t2) else if lt(hl,h2) then inter(tl,12) else merge(11,t2) in set(inter(1st,1st), ops) end end Ответ 2.8.1: 1.Исключение, привязанное к Ехп вне let, отличается от привязанного к Ехп внутри let. Поэтому исключение, возникающее в процессе вычисления f (200) (имеющее целочисленный параметр 200), может быть обработано только обработчиком исключений внутри let - и не может быть обработано внешним обработчиком (который, к тому же, ожидает параметра типа bool). В результате сообщение о возникновении необработанного исключения будет выдано на верхнем уровне диалога. Ситуация не изменится и в том случае, если внешнее исключение будет объявлено как получающее параметр типа int - оба исключения по-прежнему останутся различными. 2.Если при вычислении f(v) окажется, что p(v) ложно, а q(v) истинно, то будет рекурсивно вызвана функция f с параметром b(v). Далее, еслир(Ь(у)) nq(b(v)) окажутся ложными, будет выработано исключение Ехп. Но это исключение не будет обработано приведенным в примере обработчиком, поскольку указанное в нем исключение Ехп есть конструктор, созданный при вычислении f(v) - а выработанное Ехп есть конструктор, созданный при вычислении f (b(v)) - и это две разные вещи. (Еще раз обращаем внимание на то, что все ообъявления внутри объявления функции исполняются каждый раз при рекурсивном вызове, и при этом выполняется новая привязка идентификаторов). Ответ 2.8.2: fun threat((х::int,у), (х,у)) = (х=х) orelse (у=у) orelse (х+у=х+у) |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||