This comment is reply for 4915 [1..100]>>=pen: comb の方にも和の制約を入れたら手元...(魔方分割数). Go to thread root.
[1..100]>>=pen #5032(2007/12/28 09:55 GMT) [ Haskell ] Rating1/1=1.00
もう少し速くなりました。 ついでにグループ分けの数を求めるのに必要な部分だけに削りました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
module Main (main) where import Data.List import System.Environment comb s 0 xs | s == 0 = [xs] | otherwise = [] comb s k (x:xs) | k * x > s = [] | otherwise = comb (s-x) (k-1) xs ++ map (x:) (comb s k xs) comb _ _ _ = [] comb' s k (x:xs) | k * x > s = [] | otherwise = comb (s-x) (k-1) xs comb' _ _ _ = [] magic n = iterate (concatMap (comb' s n)) [ns] !! n where ns = [1..n^2] s = sum ns `div` n main = print . length . magic . read . head =<< getArgs
Rating1/1=1.00-0+
[ reply ]
[1..100]>>=pen
#5032()
[
Haskell
]
Rating1/1=1.00
Rating1/1=1.00-0+