[Haskell] Разделить Лист

 
0
 
Functional languages
ava
FewG | 08.11.2012, 22:14
Всем Привет, такой вопрос как можно разделить лист на несколько литов, ПРИМЕР: Было [0,1,2,3,4,5,6,7,8,9] -> стало [[0,1,2,3,4],[5,6,7,8,9]]?
Comments (3)
ava
k0rvin | 09.11.2012, 07:24 #
Можно. Разрешаю. Делите, Шура, делите.
ava
FewG | 09.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]]
ava
k0rvin | 09.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]

?
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  k0rvin   FewG
Similar
advanced
Submit