stringCircle :: String -> String stringCircle str = unlines [[ maybe ' ' id $ lookup (x,y) ps | x <- [-2*ri..2*ri]] | y <- [-ri..ri]] where ri = length str `div` 3 ps = zipWith f [0..] str f i c = ((round $ 2 * r * cos t, round $ r * sin t), c) where t = i / fromIntegral (length str) * 2 * pi - pi / 2 r = fromIntegral ri :: Double main :: IO () main = putStrLn $ stringCircle "子丑寅卯辰巳午未申酉戌亥"