summaryrefslogtreecommitdiff
path: root/percolation.hs
blob: 1f6637538df4fba41493988ca41830b4a2f914e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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]
  ]