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

Список всех возможных подпоследовательностей

24.11.2020, 15:37. Показов 2310. Ответов 4

Студворк — интернет-сервис помощи студентам
Реализовать функцию subsequences для данного конечного списка возвращает список всех возможных подпоследовательностей. Функции свертки использовать запрещено. Сигнатура:
Haskell
1
subsequences :: [a] -> [[a]]
У меня получается реализовать решение только при использовании функций свертка. Помогите перевести код в нужное русло, пожалуйста
Haskell
1
2
3
4
5
6
subsequences :: [a] -> [[a]]
subsequences xs =  [] : nonEmptySubsequences xs
nonEmptySubsequences :: [a] -> [[a]]
nonEmptySubsequences [] =  []
nonEmptySubsequences (x:xs) =  [x] : foldr f [] (nonEmptySubsequences xs)
     where f ys r = ys : (x : ys) : r
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.11.2020, 15:37
Ответы с готовыми решениями:

Разбить числовой список на подсписки из возрастающих подпоследовательностей
Приветствую! Подскажите, пожалуйста, как на Haskell красиво решить вот такую задачу: Заданный числовой список разбить на...

Определите функцию, которая порождает множество всех непустых подпоследовательностей для заданной строки
Всем привет! Для выполнения институтского задания необходимо написать 6 функций на хаскеле, из них 3 я написал сам, а вот с остальными...

Генерация списка всех возможных расстановок максимального количества ладей на доске N x N клеток
Добрый вечер, я в хаскелле новичок помогите пожалуйста решить задачу о расстановке ладьей на шахматной доске. Для кого-то может быть...

4
Модератор
 Аватар для Curry
5158 / 3482 / 536
Регистрация: 01.06.2013
Сообщений: 7,549
Записей в блоге: 9
24.11.2020, 15:45
Цитата Сообщение от A_Hatake Посмотреть сообщение
У меня получается реализовать решение только при использовании функций свертка.
Это не у вас получилось, а скопировали из исходника Data.OldList.
Почему бы теперь не скопировать оттуда же и реализацию foldr ?
2
3 / 3 / 0
Регистрация: 30.09.2020
Сообщений: 85
24.11.2020, 15:48  [ТС]
Curry, не знаю откуда скопировали, с соседом вместе делаем Спасибо за наводку, посмотрю что там есть
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
24.11.2020, 15:59
Лучший ответ Сообщение было отмечено A_Hatake как решение

Решение

Haskell
1
2
3
4
5
6
7
8
9
allsubsets [] = [[]]
allsubsets (x:xs) = axs ++ (ha x axs)
                    where axs = allsubsets xs
                          ha v [] = []
                          ha v (z:zs)= (v:z):(ha v zs) 
 
main = print $ allsubsets [1,2,3,4]
 
[[],[4],[3],[3,4],[2],[2,4],[2,3],[2,3,4],[1],[1,4],[1,3],[1,3,4],[1,2],[1,2,4],[1,2,3],[1,2,3,4]]
2
3 / 3 / 0
Регистрация: 30.09.2020
Сообщений: 85
24.11.2020, 16:06  [ТС]
Catstail, спасибо! Я еще, по совету curry, полазила на Data.OldList и тоже получила верное решение. Правда, немного более громоздкое,чем у вас:
Haskell
1
2
3
4
5
6
7
8
9
10
11
subsequences :: [a] -> [[a]]
subsequences [] = []
subsequences xs =  [] : nonEmptySubsequences xs
nonEmptySubsequences :: [a] -> [[a]]
nonEmptySubsequences [] =  []
nonEmptySubsequences (x:xs) =  [x] : foldr' f [] (nonEmptySubsequences xs)
     where f ys r = ys : (x : ys) : r
foldr' :: (a -> b -> b) -> b -> [a] -> b
foldr' cons nil = \x -> case x of
    a:as    -> a `cons` foldr' cons nil as
    []      -> nil
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.11.2020, 16:06
Помогаю со студенческими работами здесь

Алгоритм вычисления всех возможных хвостов списка
Нужен алгоритм который вычесляет все возможные хвосты списка например: postfix(,X) X=,,,]

Добавить число x в неубывающий список на самую последнюю позицию из возможных
Предложите более изящное решение, совместимое с muLisp. Вопрос: если внутреннюю функцию ADD_IN_LST назвать также, как и внешнюю...

Получить список всех возможных значений.
Помогите математики. Есть 42 бита, из них только 6 могут быть установлены, не больше и не меньше. Как можно получить список всех...

Выдать в TextBox список всех возможных комбинаций из заданных символов
Здравствуйте, к сожалению я новичок в программировании, могу написать "Hello World!" или простенький калькулятор, но не более. Мне...

Зная текущую положение шахматного коня на доске перечислить список всех уникальных возможных положений
Помогите с задачей(С++)! Заранее спасибо:) Зная текущую положение шахматного коня на доске, например d3, перечислить список всех...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru