Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 53

Задачки по Haskell

21.11.2013, 19:03. Показов 2077. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Определить последовательность, в которой каждый элемент — список всех
простых делителей соответствующего целого числа. У меня генерирует список из простых чисел, как грамотно сделать список по заданию ?

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
primenums :: [Integer]
primenums = map head (iterate crossout [2 ..])
        where 
          -- функция crossout получает список в качестве 
          -- аргумента и выдает в качестве результата хвост
          -- исходного списка, в котором удалены все элементы,
          -- которые делятся на 1-й элемент данного списка 
          crossout (x : xs) = filter (not . divides x) xs
          -- функция divides проверяет делит ли x число y без остатка
          divides x y = y `rem` x == 0
 
main = do
  -- первые 15 простых чисел
  print $ take 15 primenums  
  -- 15 простых чисел начиная с 101-го
  print $ drop 100 $ take 115 primenums  
  -- 15 простых чисел начиная с 1001-го
  print $ drop 1000 $ take 1015 primenums
p/s
Так же имеется пара задач, которые нужно решить с нуля по Haskell, желающие в лс, (не бесплатно).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2013, 19:03
Ответы с готовыми решениями:

Haskell задачки
Всем привет! Люди добрые, кто сейчас читают эту тему, прошу (прям умоляю) помочь с решением этих задачек по хаскелю, как умеете. ...

Место ФП и Haskell в компьютерной индустрии (Для чего он нужен, этот Haskell?)
"У нас" ? А где преподавание этой экзотики на высоте? Добавлено через 2 минуты А где такие "пришедшие" используют...

HASKELL
Добрый вечер, прошу помощи у знающих Haskell, не понимаю его, не для меня видимо, но сдать дисциплину надо, не хотелось бы вылететь с...

8
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,705
Записей в блоге: 14
21.11.2013, 20:20
Как вариант:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
isPrime' :: Int -> Int -> Bool
isPrime' x m | (m > (floor . sqrt . fromInt) x) = True 
             | otherwise = ((x `mod` m) /= 0) && (isPrime' x (m+1))  
 
isPrime :: Int -> Bool
isPrime x = isPrime' x 2
 
primeList1' :: Int -> Int -> [Int] -> [Int]
primeList1' n m x | (head x) > n = tail x
                  | otherwise = if (isPrime m) then primeList1' n (m+1) (m:x)
                                 else primeList1' n (m+1) x 
 
primeList1 :: Int -> [Int]
primeList1 n = primeList1' n 3 [2]
                                 
factList :: Int -> [Int]
factList n = filter (\ x -> (n `mod` x) == 0) (primeList1 n)
                                 
task :: [Int] -> [[Int]]
task = map (\ x -> factList x)                                  
 
Main> task [11,22,33,44,55,66,123,234,456,567]
 
[[11],[11,2],[11,3],[11,2],[11,5],[11,3,2],[41,3],[13,3,2],[19,3,2],[7,3]]
0
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 53
21.11.2013, 20:26  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Как вариант:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
isPrime' :: Int -> Int -> Bool
isPrime' x m | (m > (floor . sqrt . fromInt) x) = True 
             | otherwise = ((x `mod` m) /= 0) && (isPrime' x (m+1))  
 
isPrime :: Int -> Bool
isPrime x = isPrime' x 2
 
primeList1' :: Int -> Int -> [Int] -> [Int]
primeList1' n m x | (head x) > n = tail x
                  | otherwise = if (isPrime m) then primeList1' n (m+1) (m:x)
                                 else primeList1' n (m+1) x 
 
primeList1 :: Int -> [Int]
primeList1 n = primeList1' n 3 [2]
                                 
factList :: Int -> [Int]
factList n = filter (\ x -> (n `mod` x) == 0) (primeList1 n)
                                 
task :: [Int] -> [[Int]]
task = map (\ x -> factList x)                                  
 
Main> task [11,22,33,44,55,66,123,234,456,567]
 
[[11],[11,2],[11,3],[11,2],[11,5],[11,3,2],[41,3],[13,3,2],[19,3,2],[7,3]]
Вот, оно, только нужен бесконечный список
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,705
Записей в блоге: 14
21.11.2013, 20:31
Так это решение годится и для бесконечных списков:

Haskell
1
2
3
4
Main> take 30 $  task [2..]
 
[[2],[3],[2],[5],[3,2],[7],[2],[3],[5,2],[11],[3,2],[13],[7,2],[5,3],[2],[17],[3,2],[19],[5,2],[7,3],[11,2],[23],[
3,2],[5],[13,2],[3],[7,2],[29],[5,3,2],[31]]
1
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 53
21.11.2013, 21:00  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Так это решение годится и для бесконечных списков:

Haskell
1
2
3
4
Main> take 30 $  task [2..]
 
[[2],[3],[2],[5],[3,2],[7],[2],[3],[5,2],[11],[3,2],[13],[7,2],[5,3],[2],[17],[3,2],[19],[5,2],[7,3],[11,2],[23],[
3,2],[5],[13,2],[3],[7,2],[29],[5,3,2],[31]]
Спасибо

Добавлено через 5 минут
Цитата Сообщение от onlwork Посмотреть сообщение
Вот, оно, только нужен бесконечный список
Что делает "fromInt" ? Он мне пишет Undefined variable "fromInt"
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,705
Записей в блоге: 14
22.11.2013, 09:52
Пиши fromInteger
0
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 53
23.11.2013, 21:03  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Пиши fromInteger
Ошибка:
*** Expression : (floor . sqrt . fromInteger) x
*** Term : sqrt . fromInteger
*** Type : Integer -> a
*** Does not match : Int -> a

Пробовал написать от руки, все равно та же ошибка, думал из-за кодировки (такое иногда бывает)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,705
Записей в блоге: 14
23.11.2013, 21:42
Если везде Int заменить на Integer:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
isPrime' :: Integer -> Integer -> Bool
isPrime' x m | (m > (floor . sqrt . fromInteger) x) = True 
             | otherwise = ((x `mod` m) /= 0) && (isPrime' x (m+1))  
 
isPrime :: Integer -> Bool
isPrime x = isPrime' x 2
primeList1' :: Integer -> Integer -> [Integer] -> [Integer]
primeList1' n m x | (head x) > n = tail x
                  | otherwise = if (isPrime m) then primeList1' n (m+1) (m:x)
                                 else primeList1' n (m+1) x 
 
primeList1 :: Integer -> [Integer]
primeList1 n = primeList1' n 3 [2]
                                 
factList :: Integer -> [Integer]
factList n = filter (\ x -> (n `mod` x) == 0) (primeList1 n)
                                 
task :: [Integer] -> [[Integer]]
task = map (\ x -> factList x)
то все будет OK
1
1 / 1 / 0
Регистрация: 10.11.2013
Сообщений: 53
24.11.2013, 20:36  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Если везде Int заменить на Integer:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
isPrime' :: Integer -> Integer -> Bool
isPrime' x m | (m > (floor . sqrt . fromInteger) x) = True 
             | otherwise = ((x `mod` m) /= 0) && (isPrime' x (m+1))  
 
isPrime :: Integer -> Bool
isPrime x = isPrime' x 2
primeList1' :: Integer -> Integer -> [Integer] -> [Integer]
primeList1' n m x | (head x) > n = tail x
                  | otherwise = if (isPrime m) then primeList1' n (m+1) (m:x)
                                 else primeList1' n (m+1) x 
 
primeList1 :: Integer -> [Integer]
primeList1 n = primeList1' n 3 [2]
                                 
factList :: Integer -> [Integer]
factList n = filter (\ x -> (n `mod` x) == 0) (primeList1 n)
                                 
task :: [Integer] -> [[Integer]]
task = map (\ x -> factList x)
то все будет OK
Спасибо, все работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.11.2013, 20:36
Помогаю со студенческими работами здесь

Haskell
Ищу хаскелиста. Работа над серверной частью ERP системы. Кто заинтересовался писать на почту fclaw007@gmail.com или в личку

Баловство с Haskell
Осилил главу книги, и решил написать свою программку. После крика GHCI о том, что он не умеет сравнивать мой собственный тип, я решил...

Деревья в Haskell
Здравствуйте! Пишу лабораторную и возникла проблема: не получается описать 2 функции. Вот мое задание: Лексические деревья (trie-деревья)...

Haskell Monad
При изучении Haskell, нашёл довольно интересное задание и пробую его выполнить, но возникли определённые проблемы. Суть задания состоит в...

Массивы в Haskell
У меня возникла такая проблемма. Нужно на Haskell, написать программу, которая находит нужный массив и удаляет его. Прошу помочь. Зараннее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru