Comment detail

文字列のセンタリング (Nested Flatten)
明示的算術演算なし、lengthで文字列の長さも測っていない、「そこまでしたからってどうよ」版 ^^;
あ。それから、このセンタリングでは空白は前より入り、切り落としは後ろよりになります。

center 2 "a" → "_a"
center 3 "a" → "_a_"
center 3 "ab" → "_ab"
center 4 "ab" → "_ab_"
center 3 "abcde" → "bcd"
center 4 "abcde" → "bcde"
center 3 "abcdef" → "bcd"
center 4 "abcdef" → "bcde"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
center n s = uncurry (c n []) $ halve s
  where c 0 a p q = take n (a ++ q)
        c i a p q = d (pred i) (head p:a) (tail p) q
        d 0 a p q = take n (a ++ q)
        d i a p q = c (pred i) a p q

halve s = e (repeat ' ') (s++repeat ' ') s
  where e a b [] = (a,b)
        e a b c  = o (head b:a) (tail b) (tail c)
        o a b [] = (a,b)
        o a b c  = e a b (tail c)

Index

Feed

Other

Link

Pathtraq

loading...