fork download
  1. import Data.Ratio
  2.  
  3. f n k = let
  4. bxs = [ 1.. n ]
  5. allCs = ( !! k ) $ iterate ( \ x -> [ i : is | i <- bxs, is <- x ] ) [ [ ] ]
  6. oddBxs cs = [ bx |
  7. bx <- bxs,
  8. odd $ length $ filter ( == bx ) cs ]
  9. in ( sum $ [ length $ oddBxs cs | cs <- allCs ] ) % ( length allCs )
  10.  
  11. e n k = ( n % 2 ) * ( 1 - ( 1 - 2 % n )^k )
  12.  
  13. main = mapM_ print [ ( n, k, f n k, e n k, e n k == f n k ) | n <- [ 1..5 ], k<-[ 1.. n ] ]
  14.  
Success #stdin #stdout 0.01s 5560KB
stdin
Standard input is empty
stdout
(1,1,1 % 1,1 % 1,True)
(2,1,1 % 1,1 % 1,True)
(2,2,1 % 1,1 % 1,True)
(3,1,1 % 1,1 % 1,True)
(3,2,4 % 3,4 % 3,True)
(3,3,13 % 9,13 % 9,True)
(4,1,1 % 1,1 % 1,True)
(4,2,3 % 2,3 % 2,True)
(4,3,7 % 4,7 % 4,True)
(4,4,15 % 8,15 % 8,True)
(5,1,1 % 1,1 % 1,True)
(5,2,8 % 5,8 % 5,True)
(5,3,49 % 25,49 % 25,True)
(5,4,272 % 125,272 % 125,True)
(5,5,1441 % 625,1441 % 625,True)