我是新來的haskell,並試圖編寫一個函數來生成一個只包含連續子集的powerset 例如:[1,2,3] - > [[],[1], [2],[3],[1,2],[2,3],[1,2,3]]生成列表的子列表
我發現這個在博客http://davidtran.doublegifts.com/blog/?p=7
powerset :: [a] -> [[a]]
powerset [] = [[]]
powerset (x:xs) = powerset xs ++ map (x:) (powerset xs)
-- powerset (x:xs) = powerset xs ++ [x:xs' | xs' <- powerset xs]
但這生成所有子集即[1,3]包括我不想要的? 有無論如何修復此代碼的工作或我必須重新考慮我的方法。 另外我不想使用內置的庫函數,想讓我的基礎知識正確。
東西你說的 '連續的子集' 是什麼意思? – yatima2975 2012-03-22 23:21:06
我的意思是[1,2] [2,3]但不是[1,3] – NyaniOS 2012-03-22 23:46:29
作爲術語的問題:我通常看到人們使用術語*子串*來指代「連續子集」和術語*子序列*不一定是連續的子集。 – hugomg 2012-03-23 14:31:03