逆順になるアミダくじ

nが11以上になると表示がくずれるYO。あとやたらintersperseしてて見苦しい。
(追記)
これ全然ダメだ...またやっちゃった
(追追記)
修正した

import Data.List

amida n = mapM_ print $ tail $ transpose (f ++ [line])
  where line = replicate (2 * n - 1) '|' 
        f = concat $ zipWith (\x y -> [x,y]) (repeat line) (g n)

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

こんなかんじ

*Main> amida 10
"|_| | | | | | | | |"
"| |_| | | | | | | |"
"|_| |_| | | | | | |"
"| |_| |_| | | | | |"
"|_| |_| |_| | | | |"
"| |_| |_| |_| | | |"
"|_| |_| |_| |_| | |"
"| |_| |_| |_| |_| |"
"|_| |_| |_| |_| |_|"
"| |_| |_| |_| |_| |"
"|_| |_| |_| |_| | |"
"| |_| |_| |_| | | |"
"|_| |_| |_| | | | |"
"| |_| |_| | | | | |"
"|_| |_| | | | | | |"
"| |_| | | | | | | |"
"|_| | | | | | | | |"
"| | | | | | | | | |"