![]() |
|
![]() ![]() ![]() |
|
gomon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
Доброго всем времени суток!
Такое дело, надо решить 4 задачи на Haskell. Они не большие и не сложные, но я хаскель не знаю. Прошу помочь, кто может! Для спецов это задача 5 - 10 минут, а для меня это вопрос зачета и не зачета!=) Задачи: 1) Напишите функцию, которая суммирует все натуральные числа меньше 1000, которые кратны 3 и 5 2) Напишите функцию нахождения самого маленького числа, которое делится на все числа от одного до 20. 3) Напишите функцию, которая определяет количество решения уравнения x-y-z=n 4) Напишите функцию, которая находит сумму всех таких чисел (меньше 1 миллиона) которые являются палиндромами в десятеричной и двоичной системе счисления. Заранее спасибо! Ребят очень надо! Знаю С и CPP, но надо именно на хаскеле! ![]() |
|||
|
||||
Void |
|
||||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Ах, какие злые люди, дали задание по языку, который не преподавали и вообще не упоминали. Или всё-таки после решения забить на «эту непонятную и бесполезную фигню» ВНЕЗАПНО настала сессия?
1.
2.
3.
Условие видимо неполное, т.к. даже в натуральных числах решений бесконечное множество. 4.
Может хоть из этого нужную функцию сами напишите? Всё необходимое есть в примерах выше. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||||
|
|||||||||
gomon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
palindrom = sum [x | x <- [1..1000000], x `rem` 2 == isPalindrom && x `rem` 10 == isPalindrom] toDigits base n = map (`rem` base) $ takeWhile (> 0) $ iterate (`div` base) n isPalindrom s = s == reverse s Как то так! ![]() |
|||
|
||||
gomon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
Если решений бесконечно много, то функция неопределена. |
|||
|
||||
Void |
|
||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Пока незачёт. После запятой должен быть предикат. Ещё попытка, распишу для удобства:
Запись a `f` b означает то же самое, что f a b т.е. применение ф-ции f к аргументам a и b. rem — ф-ция остатка, div — целочисленного деления. Стандартные функции:
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||
|
|||||||
gomon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
palindrom = sum [x | x <- [1..1000000], |x = x:chek 2 x && x = x:chek 10 x
|otherwise x = 0] chek :: Int a => a -> a -> [a] chek :: a b = b:toDigits a b chek :: b = |b:isPalindrom b |otherwise b=0 Версия 2.1 |
|||
|
||||
gomon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
А вот так? Это сообщение отредактировал(а) gomon - 23.12.2011, 07:33 |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Нормальный код (кто написал?), только он не соответствует условиям задачи. Нужно найти числа, которые являются палиндромами в двоичной И десятичной системе. А здесь они считаются отдельно. Это сообщение отредактировал(а) Void - 23.12.2011, 07:36 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
gomon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
А предыдущий вариант? что там не так? Добавлено через 1 минуту и 20 секунд А третья должна быть чем то похожим: \textbf{1-2} Написать функцию \prg{Float -> Float -> [Float]}, которая вычисляет корни уравнения $ax^2+bx=0$. Если корней бесконечно много, то функция неопределена. \begin{code} root1_2 :: Float -> Float -> [Float] root1_2 a b |a==0 && b==0 = undefined |a==0 && b/=0 = [0] |otherwise = [0, (root a b)] \end{code} |
|||
|
||||
gomon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
Viod Огромное спасибо за помощь! От души благодарен! Приняли эти 3 задачи, 4 сказали можно не делать, так как 3 были сделаны оперативно. Зачет уже получен!=)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума «Функциональные языки: общие вопросы» | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Функциональные языки: общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |