0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 41
1

Переписать с использованием ":"

21.09.2013, 09:35. Показов 645. Ответов 9
Метки нет (Все метки)

Помогите, пожалуйста, переписать с использованием ":" вместо "++":
Haskell
1
2
3
f :: Integer -> [Integer]
f n = if n <= 2 then [2]
          else f (n - 1) ++ if (even n) then [n] else []
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2013, 09:35
Ответы с готовыми решениями:

Функция для нахождения "Наибольшего общего делителя" и "Наименьшего общего кратного"
Помогите пожалуйста!!!!СРОЧНО НАДО!! Нужно написать функцию для нахождения НОД(наибольшего общего...

[КуМир] Ввести символьную строку и заменить все буквы "а" на "б" и наоборот (как заглавные так и строчные)
ввести символьную строку и заменить все буквы а на буквы б и наоборот как заглавные так и строчные...

Класс "Строка", реализовать через агрегирование, с использованием классов "Слово" и "Символ"
Создать объект класса &quot;Строка&quot;, используя классы &quot;Слово&quot;, &quot;Символ&quot;.Реализовать через агрегирование....

Решить с использованием оператора "УСЛОВИЯ" в Паскале. Без "ЦИКЛОВ" и "МАССИВОВ".
Помогите, пожалуйста решить задачу. Задача не сложная, но без помощи не смогу решить. Задача: Дано...

9
Эксперт Java
3882 / 2503 / 448
Регистрация: 28.04.2012
Сообщений: 8,201
21.09.2013, 13:25 2
Haskell
1
2
3
4
5
6
7
8
f :: Integer -> [Integer]
f = reverse . evens
 
evens :: Integer -> [Integer]
evens n
    | n <= 2    = [2]
    | even n    = n : evens (n - 2)
    | otherwise = evens (n - 1)
А лучше так:

Haskell
1
2
f :: Integer -> [Integer]
f n = 2 : [4, 6 .. m] where m = if even n then n else n - 1
2
Модератор
Эксперт функциональных языков программированияЭксперт Python
30460 / 16831 / 3463
Регистрация: 12.02.2012
Сообщений: 28,199
Записей в блоге: 5
21.09.2013, 17:01 3
Или с накопительным параметром и без reverse:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
ff :: Integer -> [Integer] -> [Integer]
ff n s | (odd n) = ff (n-1) s
       | (n < 2) = s
       | otherwise = ff (n-2) (n : s)
f n = ff n []
 
Main> f 20
[2,4,6,8,10,12,14,16,18,20]
Main> f 21
[2,4,6,8,10,12,14,16,18,20]
Main> f 22
[2,4,6,8,10,12,14,16,18,20,22]
Main>
1
0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 41
21.09.2013, 17:32  [ТС] 4
Уважаемые, это лабораторная работа. На мой взгляд, не может быть так сложно, и нельзя использовать итераторы.
Брал здесь.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
30460 / 16831 / 3463
Регистрация: 12.02.2012
Сообщений: 28,199
Записей в блоге: 5
21.09.2013, 19:20 5
Почтненнейший!

1) сложно/просто - достаточно расплывчатое понятие. На мой взгляд, все приведенные решения простые (особенно второе решение Korvin-a)
2) где ты увидел итераторы?

Добавлено через 10 минут
Впрочем, короткое решение Korvin-а можно сделать еще короче:

Haskell
1
2
f :: Integer -> [Integer]
f n = [2,4..m] where m = if (odd n) then n-1 else n
1
Эксперт Java
3882 / 2503 / 448
Регистрация: 28.04.2012
Сообщений: 8,201
21.09.2013, 23:04 6
Цитата Сообщение от Catstail Посмотреть сообщение
Впрочем, короткое решение Korvin-а можно сделать еще короче
Нельзя.
Разве что так.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
30460 / 16831 / 3463
Регистрация: 12.02.2012
Сообщений: 28,199
Записей в блоге: 5
22.09.2013, 09:58 7
korvin_, непонятно... Ведь код-то работает:
Миниатюры
Переписать с использованием ":"   Переписать с использованием ":"  
1
Эксперт Java
3882 / 2503 / 448
Регистрация: 28.04.2012
Сообщений: 8,201
22.09.2013, 16:45 8
Цитата Сообщение от Catstail Посмотреть сообщение
непонятно... Ведь код-то работает:
Посмотри внимательно на примеры запуска, что я привел. Он работает не так, выдает другой результат для n < 2.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
30460 / 16831 / 3463
Регистрация: 12.02.2012
Сообщений: 28,199
Записей в блоге: 5
22.09.2013, 22:55 9
Тогда так:

Haskell
1
2
f :: Integer -> [Integer]
f n = [2,4..m] where m = if (n < 2) then 2 else if (odd n) then n-1 else n
0
144 / 134 / 8
Регистрация: 19.07.2011
Сообщений: 184
23.09.2013, 12:46 10
Цитата Сообщение от Catstail Посмотреть сообщение
Тогда так
Тогда это явно не короче.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2013, 12:46

Как написать регулярное выражение для выдергивания английских букв и символов: "+", ",", ":", "-", " ", "!", "?" и "."
Не могу ни как собразить как написать регулярное выражение для выдергивания английских букв и...

Поиск и вывод строки по заданному шаблону (с использованием симоволов "?", "*", "+")
Добрый день Имею такое задание: необходимо написать программу, которая сможет найти в файле...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

Получить значение из {"text1":"val1","text2":"val2","text3":{"text":"val"}}
Есть такая строка var my = '{&quot;text1&quot;:&quot;val1&quot;,&quot;text2&quot;:&quot;val2&quot;,&quot;text3&quot;:{&quot;text&quot;:&quot;val&quot;}}'; Как из...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru