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]
]
|