Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Data.List ( permutations )
- symmetric :: Int -> [[Int]]
- symmetric n = permutations [1..n]
- inversions :: Int -> [Int] -> Int
- inversions n [] = n
- inversions n (x:[]) = n
- inversions n (x:xs) = inversions (n+m) xs
- where
- -- is x greater than values in xs?
- gs :: [Bool]
- gs = fmap (x >) xs
- -- number of times x is greater
- m :: Int
- m = (sum . fmap fromEnum) gs
- countInversions :: [Int] -> Int
- countInversions xs = inversions 0 xs
- main :: IO ()
- main = print $ filter (even . countInversions) (symmetric 3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement