Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11634
Последний выпуск: 19.06.2015

Помогите решить задачи на Haskell

61K
18 июня 2010 года
pumell
1 / / 18.06.2010
Завтра экзамен, надеялся на свои силы ;(

1) Сформировать список 25 степений двойки.

2) Написать функцию для объединения двух упорядоченных по возрастанию списков в один упорядоченный по возрастанию список.

3) Написать функцию для определения первой позиции вхождения заданного элемента в список.

4) Определить, является ли указанное число элементом списка.

5) Оставить в списке только элементы, не кратные голове списка.

6) Удалить из списка все повторяющиеся элементы.

7) Написать функцию для вставки элемента в список, не нарушив при этом его упорядоченности.

8) Даны две точки M1 (x1,y1) и M2 (x2,y2). Выяснить, симметричны ли точки относительно оси ox.
2.0K
27 июня 2010 года
Norgat
452 / / 12.08.2009
хоть тема и старая, но отвечу (т.к. в разделе нету ответов на эти вопросы точно + может меня кто-нибудь поправит/скажет как лучше))

1) Сформировать список 25 степений двойки.
 
Код:
map (2^) [0..24]


2) Написать функцию для объединения двух упорядоченных по возрастанию списков в один упорядоченный по возрастанию список.
 
Код:
test :: [Int] -> [Int] -> [Int]
test x y
    | (length x) == 0   = y
    | (length y) == 0   = x
    | (head x) < (head y)   = (head x):(test (tail x) y)
    | otherwise         = (head y):(test x (tail y))


3) Написать функцию для определения первой позиции вхождения заданного элемента в список.
 
Код:
task3 :: [Int] -> Int -> Int
task3 (x:xs) e
    | x == e    = 0
    | otherwise     = 1 + task3 xs e


4) Определить, является ли указанное число элементом списка.
 
Код:
task4 :: [Int] -> Int -> Bool
task4 (x:xs) e
    | x == e    = True
    | xs == []  = False
    | otherwise     = False || task4 xs e

*добавлено
 
Код:
elem 3 [1..20]


5) Оставить в списке только элементы, не кратные голове списка.
 
Код:
let b = [3..40]
filter (\x -> x `mod` (head b) == 0) b


6) Удалить из списка все повторяющиеся элементы.

пусть будет такой вариант:
Код:
delP :: Integer -> [Integer] -> [Integer]
delP e (x:xs)
    | xs == [] = if x == e then []
            else x:[]
    | otherwise = if x == e then delP e xs
            else x:(delP e xs)

clearList :: [Integer] -> [Integer]
clearList [] = []
clearList (x:xs) | xs == [] = x:[]
clearList (x:xs) = x:(clearList (delP x xs))


7) Написать функцию для вставки элемента в список, не нарушив при этом его упорядоченности.
 
Код:
task7 :: [Int] -> Int -> [Int]
task7 (x:xs) e
    | x >= e    = e:x:xs
    | e > x     = if xs == [] then x:e:[]
               else x:(task7 xs e)


8) Даны две точки M1 (x1,y1) и M2 (x2,y2). Выяснить, симметричны ли точки относительно оси ox
 
Код:
task8 :: (Int, Int) -> (Int, Int) -> Bool
task8 (x1, y1) (x2, y2)
        | (abs x1 == abs x2) && (y1 == (-y2))   = True
        | otherwise             = False

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог