Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Функциональные языки: общие вопросы > [Haskell] Разделить Лист


Автор: FewG 8.11.2012, 21:14
Всем Привет, такой вопрос как можно разделить лист на несколько литов, ПРИМЕР: Было [0,1,2,3,4,5,6,7,8,9] -> стало [[0,1,2,3,4],[5,6,7,8,9]]?

Автор: k0rvin 9.11.2012, 07:24
Можно. Разрешаю. Делите, Шура, делите.

Автор: FewG 9.11.2012, 15:52
Цитата(k0rvin @ 9.11.2012,  07:24)
Можно. Разрешаю. Делите, Шура, делите.

Вася, учим русский, "как можно" и "можно ли" разные вещи.

Р.S. Проблема решена так:

Код
--splitIn :: Int -> [Bool] -> [[Bool]]
splitIn n [] = []
splitIn n x = [take n x] ++ splitIn n (drop n x)

Код
*Main> splitIn 2 [0,1,2,3,4,5,6,7,8,9]
[[0,1],[2,3],[4,5],[6,7],[8,9]]

Автор: k0rvin 9.11.2012, 19:29
Цитата(FewG @ 9.11.2012,  15:52)
Вася, учим русский, "как можно" и "можно ли" разные вещи.

Черт, да, слона-то («как») я и не приметил...

Цитата(FewG @ 9.11.2012,  15:52)
Р.S. Проблема решена так:

Код
--splitIn :: Int -> [Bool] -> [[Bool]]
splitIn n [] = []
splitIn n x = [take n x] ++ splitIn n (drop n x)

Код
*Main> splitIn 2 [0,1,2,3,4,5,6,7,8,9]
[[0,1],[2,3],[4,5],[6,7],[8,9]]

пару рекомендаций:
тип splitIn будет 
Код

splitIn :: Int -> [a] -> [[a]]


Код

[0..9] == [0,1,2,3,4,5,6,7,8,9]


и может быть предусмотреть безошибочную реакцию на
Код

splitIn -2 [0..9]

?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)