12.07.2015 Views

Выпуск 14

Выпуск 14

Выпуск 14

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

num (-1) = '99'num 0 = 'no more'num n = show ns 1 = ''s _ = 's'main = putStr $ concat[up (bob n) ++ wall ++ ', ' ++bob n ++ '.\n' ++pass n ++ bob (n - 1) ++wall ++ '.\n\n'| n lengthys then xs else yslcs [] _ = []lcs _ [] = []lcs (x:xs) (y:ys)| x == y = x : lcs xs ys| otherwise = longest (lcs (x:xs) ys)(lcs xs (y:ys)8. Построение бесконечной последовательности,каждый следующий член которой являетсяследующим рядом треугольника ПаскаляТреугольник Паскаля — треугольник, образованныйбиномиальными коэффициентами. О биномиальныхкоэффициентах — см. дальше.nextRow row = zipWith (+)([0] ++ row) (row ++ [0])pascal = iterate nextRow [1]Функция iterate строит бесконечный списокпоследовательных применений заданной функции кзаданному списку — [x, f x, f (f x), ...]9. Проверка, является ли число совершеннымСовершенные числа — натуральные числа, равныесумме своих делителей.perfect n = n == sum [i | i y = y : (x:xs) 'merge' ys| otherwise = x : xs 'merge' yshamming = 1 : map (2*) hamming 'merge'map (3*) hamming 'merge'map (5*) hamming12. Факторизация натурального числаФакторизация — разложение натурального числана простые делители.factorize' n pps@(p:ps) = case n'divMod' p of(0, 1 ) -> [](remainder, 0) ->p : factorize' remainder pps-> factorize' n psfactorize n = factorize' n primesБесконечный список primes взят из задачи 10.Выражение имя1@(x:xs) разбивает данный списокна голову и хвост, оставляя за исходным спискомимя имя1.13. Решение задачи о Ханойских башняхПостановка задачи: даны три стержня, на одиниз которых нанизаны n, причем кольца отличаютсяразмером и лежат меньшее на большем. Задачасостоит в том, чтобы перенести пирамиду из nколец за наименьшее число ходов. За один раз разрешаетсяпереносить только одно кольцо, причемнельзя класть большее кольцо на меньшее.hanoi' 0 _ _ _ = []hanoi' n a b c = hanoi' (n-1) a c b ++[(a, b)] ++ hanoi' (n-1) c b ahanoi n = hanoi' n 1 2 3Функция hanoi возвращает решение в видесписка пар (a, b), каждая из которых значит:“Передвиньте диск со стержня а на стержень b”.45сентябрь 2011 / ИНФОРМАТИКА

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!