Как получить каждый N-й элемент бесконечного списка в Haskell? - PullRequest
33 голосов
/ 08 января 2010

Более конкретно, как мне сгенерировать новый список каждого N-го элемента из существующего бесконечного списка?

например. если список равен [5, 3, 0, 1, 8, 0, 3, 4, 0, 93, 211, 0 ...], то получение каждого третьего элемента приведет к этому списку [0,0,0,0,0 ...]

Ответы [ 21 ]

0 голосов
/ 05 ноября 2010

Мое решение:

every :: Int -> [a] -> [[a]]
every _ [] = []
every n list = take n list : (every n $ drop n list)

Он не использует zip, но я не могу рассказать о его характеристиках и профиле памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...