2013-12-01 2 views
0

Как отделить список чисел, повторяющихся в haskell?Как отделить список чисел, повторяющихся в haskell?

пример:

отдельный [1,1,1,2,3,3,4] -> [[1,1,1,1], [2], [3,3], [ 4]]

+3

Вы предпринимали какие-либо попытки? – megawac

+0

Похоже, это домашнее задание, и политика здесь заключается в том, чтобы помочь попыткам людей в их работе, но на самом деле не делает для них работу. Не могли бы вы опубликовать, что вы попробовали? – amindfv

+0

не является домашним заданием. Я пытаюсь применить дискретную математику в haskell – Gosh

ответ

7

Вы ищете функцию group от Data.List.

+0

проблема в том, что мне нужно создать отдельную функцию в списке – Gosh

1

Ответ groupBy (==)

Игнорировать эти слова, Stackoverflow требует от меня, чтобы напечатать еще несколько слов

+0

спасибо за вашу помощь, но тогда мне нужно сделать функцию, которая отделяет список – Gosh

+0

'f = groupBy (==)'. Это функция. –

+2

'group' - это то же самое, что' groupBy (==) ', поэтому' r = group'. – kqr

0

Я стараюсь не отвечать на вопрос, но ответить, как ответить на этот вопрос. Надеюсь, это поможет, но не слишком. (edit: Я предположил, что это была домашняя работа, вы можете сказать мне, хотите ли вы получить еще один ответ.)

Сначала попробуйте определить тип функции.

separate :: ... 

Подумайте об угловых случаях, таких как пустые списки и списки с одним элементом.

separate [] = ... 
separate [x] = ... 

Затем попытайтесь определить эту функцию рекурсивно (в терминах самого себя).

separate (x:xs) = <an expression containing separate, x, and xs> 

В зависимости от деталей реализации, результат separate [3,2,3,1] может быть [[1],[2],[3,3]], [[3],[2],[3],[1]] (если вы используете group, которые вы не предполагается), или [[3,3],[2],[1]]. Возможно, вам придется прояснить это, если кто-нибудь попросит вас написать эту функцию.

http://hackage.haskell.org/package/base-4.6.0.1/docs/Data-List.html

Если вы используете GHCI, вы можете использовать :m +module импортировать module. Пример сеанса с GHCi может выглядеть так:

$ ghci 
GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
Prelude> :m +Data.List 
Prelude Data.List> groupBy (==) [1,1,2,3] 
[[1,1],[2],[3]] 
Смежные вопросы