diff options
Diffstat (limited to 'percolation.hs')
-rw-r--r-- | percolation.hs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/percolation.hs b/percolation.hs new file mode 100644 index 0000000..1f66375 --- /dev/null +++ b/percolation.hs @@ -0,0 +1,24 @@ +{-# LANGUAGE BangPatterns #-} +import Control.Monad.State (State, get, put, runState, state) +import Data.Array (Array) + +data Tree = Root Int Int | Node Int Tree + +data Forest = Array Int Tree + +findRoot :: Tree -> (Int, [(Int, Tree)]) +findRoot (Root i n) = (i, []) +findRoot (Node i t) = (r, [(i, Node i ] ++ []) + + + +squareLatticeEdges :: Int -> Int -> [(Int, Int)] +squareLatticeEdges d l = + [ (i, (l ^ j) * quot i (l ^ j) + mod (l ^ j + i + l ^ (j - 1)) (l ^ j)) + | j <- [1 .. d] + , i <- [0 .. (l ^ d) - 1] + ] + + + + |