Comment detail

逆順になるあみだくじ (Nested Flatten)
ピラミッド作って90度回転させれば、という実装。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import Data.List

amida n = mapM_ print $ ps ++ qs ++ rs
  where line = replicate (2 * n - 1) '|' 
        f = concat $ zipWith (\x y -> [x,y]) (repeat line) (g n)
        ps = [intersperse ' ' (concatMap show [0..n-1])]
        qs = tail $ transpose (f ++ [line])
        rs = reverse ps

g n = let xs = g' 1 in map (align (2 * n - 1) . intersperse ' ') xs
  where g' m | n == m = []
             | otherwise = replicate (n - m) '_':g' (m + 1)

align n line = ss ++ line ++ ss
  where ss = let l = (n - length line) `div` 2 in replicate l ' '

Index

Feed

Other

Link

Pathtraq

loading...