Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
3
Task/Permutations/Haskell/permutations-1.hs
Normal file
3
Task/Permutations/Haskell/permutations-1.hs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
import Data.List (permutations)
|
||||
|
||||
main = mapM_ print (permutations [1,2,3])
|
||||
5
Task/Permutations/Haskell/permutations-2.hs
Normal file
5
Task/Permutations/Haskell/permutations-2.hs
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import Data.List (delete)
|
||||
|
||||
permutations :: Eq a => [a] -> [[a]]
|
||||
permutations [] = [[]]
|
||||
permutations xs = [ x:ys | x <- xs, ys <- permutations (delete x xs)]
|
||||
5
Task/Permutations/Haskell/permutations-3.hs
Normal file
5
Task/Permutations/Haskell/permutations-3.hs
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
permutations :: [a] -> [[a]]
|
||||
permutations [] = [[]]
|
||||
permutations xs = [ y:zs | (y,ys) <- select xs, zs <- permutations ys]
|
||||
where select [] = []
|
||||
select (x:xs) = (x,xs) : [ (y,x:ys) | (y,ys) <- select xs ]
|
||||
5
Task/Permutations/Haskell/permutations-4.hs
Normal file
5
Task/Permutations/Haskell/permutations-4.hs
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
permutations :: [a] -> [[a]]
|
||||
permutations = foldr (concatMap . insertEverywhere) [[]]
|
||||
where insertEverywhere :: a -> [a] -> [[a]]
|
||||
insertEverywhere x [] = [[x]]
|
||||
insertEverywhere x l@(y:ys) = (x:l) : map (y:) (insertEverywhere x ys)
|
||||
14
Task/Permutations/Haskell/permutations-5.hs
Normal file
14
Task/Permutations/Haskell/permutations-5.hs
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import Data.Bifunctor (second)
|
||||
|
||||
permutations :: [a] -> [[a]]
|
||||
permutations =
|
||||
let ins x xs n = uncurry (<>) $ second (x :) (splitAt n xs)
|
||||
in foldr
|
||||
( \x a ->
|
||||
a >>= (fmap . ins x)
|
||||
<*> (enumFromTo 0 . length)
|
||||
)
|
||||
[[]]
|
||||
|
||||
main :: IO ()
|
||||
main = print $ permutations [1, 2, 3]
|
||||
Loading…
Add table
Add a link
Reference in a new issue