tsuwabuki #3510(2007/10/24 06:55 GMT) [ Haskell ] Rating0/0=0.00
もっときれいに書けそうな気がします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
reverseString2 :: String -> String reverseString2 str = let (e, s) = foldl f ([],[]) str in foldl (\s1 (s2,c) -> s2++c:s1) s e where f (e, s) c | c `elem` "({[" = (([], c):e, s) | c `elem` ")}]" = case e of (es1, p1):(es2, p2):rest | c == opposite p1 -> ((p1:es1++c:es2, p2):rest, s) | otherwise -> ((c:es1++p1:es2, p2):rest, s) [(es, p)] | c == opposite p -> ([], p:es++c:s) | otherwise -> ([], c:es++p:s) [] -> (e, c:s) | otherwise = case e of (es, p):rest -> ((c:es, p):rest, s) otherwise -> (e, c:s) opposite '(' = ')' opposite ')' = '(' opposite '{' = '}' opposite '}' = '{' opposite '[' = ']' opposite ']' = '[' opposite c = c
Rating0/0=0.00-0+
[ reply ]
tsuwabuki
#3510()
[
Haskell
]
Rating0/0=0.00
Rating0/0=0.00-0+
[ reply ]