module Problem205 where

import Data.Array
import Text.Printf (printf)

main :: IO ()
main =
    printf "%.7f\n"
        $ (/ (4 ^ 9 * 6 ^ 6))
        $ (fromIntegral :: Int -> Double)
        $ sum
        $ [ let sm = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 in colin ! (sm - 1)
          | a1 <- [1 .. 4]
          , a2 <- [1 .. 4]
          , a3 <- [1 .. 4]
          , a4 <- [1 .. 4]
          , a5 <- [1 .. 4]
          , a6 <- [1 .. 4]
          , a7 <- [1 .. 4]
          , a8 <- [1 .. 4]
          , a9 <- [1 .. 4]
          ]
  where
    colin = listArray (1, 36) $ scanl1 (+) $ elems $ accumArray
        (+)
        0
        (1, 36)
        [ (a1 + a2 + a3 + a4 + a5 + a6, 1)
        | a1 <- [1 .. 6]
        , a2 <- [1 .. 6]
        , a3 <- [1 .. 6]
        , a4 <- [1 .. 6]
        , a5 <- [1 .. 6]
        , a6 <- [1 .. 6]
        ]
