Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 02.11.2018
Сообщений: 55

Разбить строку на список строк

23.11.2021, 13:14. Показов 1618. Ответов 2

Студворк — интернет-сервис помощи студентам
Заданная строка, написать функцию через FOLDR за один проход по списку не используя REVERSE, получающий из этой строки список слов: начиная с конца строки берем один символ, затем следующие два символа и т.д. пока строка не закончится, затем если в первом слове не хватит символов, то дополнить ее символами '-': "fgghhjjkklk"->["----f","gghh","jjk","kl","k" ]

Не прошу сделать вместо меня, просто нужен совет как такое можно было бы реализовать.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2021, 13:14
Ответы с готовыми решениями:

Разбить строку на список символов [SWI Prolog]
Здравствуйте. Подскажите каким образом можно реализовать предикат fronttoken из Visual prolog на Swi prolog. Вообще задача состоит в...

Разбить строку на список слов Visual Prolog 7.*
Добрый день! Есть задание. Нужно прочитать файл в строку и к каждой строке (файла) добавить символ *, потом записать обратно в файл....

Разбить строку в список
привет. есть строка a=u'здесь очень длинный текст который надо разбить' как бы мне его разделить в список, чтобы каждый элемент...

2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,740
Записей в блоге: 14
23.11.2021, 18:57
В качестве сворачиваемого списка использовать не строку, а список [n,n-1..1], где n длина строки. При свертке вычислять сколько пропустить в исходной строке и сколько взять. Как вариант.

Добавлено через 4 часа 33 минуты
Иезуитская задача...

Haskell
1
2
3
4
5
6
7
8
9
10
get stri d t | d>0 && t>0 = take t $ drop d stri
             | d==0       = take t stri
             | otherwise  = (take (abs d) $ repeat '-') ++ (take (t+d) stri)
             
task stri = foldr (\ (d,t) acc -> [get stri d t]++acc) [] pairs
            where n = length stri
                  pairs = h n 1
                  h p k = if p<=0 then [] else (h (p-k) (k+1)) ++ [(p-k,k)]
                  
main = print $ task "qwertyuiopasdf"
1
Модератор
 Аватар для Curry
5158 / 3492 / 536
Регистрация: 01.06.2013
Сообщений: 7,585
Записей в блоге: 9
23.11.2021, 20:36
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Haskell
1
2
3
4
5
6
7
8
job :: String -> [String]
job s = let ln = length s
            -- Достаточное кол-во членов арифм. прогрессии чтобы сумма прогресси была не меньше ln
            n  = ceiling $ sqrt( (fromIntegral ln :: Double) * 8 + 1)/2
            -- сумма элементов прогрессии равна длинне строки вместе c заполнителем
            sn  = (n*n + n) `div` 2
        in fst $ foldr(\i (r,s') -> let (h,t) = splitAt (length s' - i) s' in (t:r,h))
            ([],((take (sn-ln) $ repeat '-') ++ s)) [n, n-1 .. 1]
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.11.2021, 20:36
Помогаю со студенческими работами здесь

Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку
3 двунаправленный линейный список строк.требуется вставить строку после строки с номером и удалить строку с номером и заменить строку с...

Разбить строку на массив строк
Как реализовать задачу: дана строка, необходимо ее разбить на слова по разделителю

разбить строку на несколько строк
Всем привет, у меня проблема с разитием строк на подстроки. Есть строка, размер произвольный, нужно циклом пройтись и каждые 512 символов...

Разбить строку на массив строк
Доброго времени суток всем кто обратил внимание на данную тему. Помогите пожалуйста. Есть строка: Надо эту строку разбить на...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru