Проблема: в LINQ нет развёрток. Можно ли смоделировать их новыми средствами Паскаля? Вот пример.
~$ ghci
...
Prelude> :m Data.List
Prelude Data.List> let splitN n = unfoldr (\xs -> if null xs then Nothing else Just (take n xs, drop n xs))
Prelude Data.List> splitN 2 "abcde"
["ab","cd","e"]
Собственно, это достаточно странное для Хаскеля место: учитывая, что списки ленивые, можно было бы обойтись и без прокладки в виде Мейби между функцией, дающей один элемент, и алгоритмом развёртки.
Ну, нельзя ли как-то доходчивее объяснить? Может, чуть длиннее? Just (take n xs, drop n xs) - это что - пара? И всё же что делает unfoldr с функцией и стартовым элементом?
С планшета пишу, потому ссылочку приложил на документацию. Собственно, мой вопрос можно сформулировать и более доступно: как в Паскале без циклов, желательно в одну строку, решить задачу разрезания строки на кусочки по n символов (последний кусочек может быть меньше).
Попробовал в PABC.NET - действительно, что-то сломалось. Почему-то даже список результатов не могу получить. На первом курсе делали какую-то магию, чтобы работало, а сейчас уже забыл.
@sanya_rnd не используются регулярные выражения для таких задач. Если и решить, то это будет извращение по причине того, что базовые регулярные выражения «не умеют считать». А надстройки это уже в определённом смысле костыли.