Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Data.Char
- cPred False x = x
- cPred True x = chr (pred (ord x))
- f c (k, r) [] = r
- f c (k, r) [x] = case cPred c x of
- '0' -> r
- x' -> x' : r
- f c (k, r) (x_:y:xys)
- | x >= y = f False (1+k, x : r) (y:xys)
- | x < y = f True (1+k, (replicate (1+k) '9')) (y:xys)
- where x = case cPred c x_ of
- '/' -> '9'
- x1 -> x1
- g = f False (0, []) . reverse
- pr = putStr . foldr p1 "" . zip [1..]
- where p1 (k, r) = showString "Case #" . shows k . showString ": " . showString r . showString "\n"
- process = pr . map g . tail . lines
- main = getContents >>= process
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement