Jump to content

Middle three digits: Difference between revisions

Initial Haskell version.
(Initial Haskell version.)
Line 361:
 
middleThreeDigits(cast(short)-32768): 276</pre>
 
=={{header|Haskell}}==
<lang haskell>import Numeric
 
mid3 :: Integral a => a -> Either String String
mid3 n | m < 100 = Left "is too small"
| even l = Left "has an even number of digits"
| otherwise = Right . take 3 $ drop ((l-3) `div` 2) s
where m = abs n
s = showInt m ""
l = length s
 
showMid3 :: Integer -> String
showMid3 n = show n ++ ": " ++ either id id (mid3 n)
 
main :: IO ()
main = mapM_ (putStrLn . showMid3) [
123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345,
1, 2, -1, -10, 2002, -2002, 0]</lang>
Output:
<pre>123: 123
12345: 234
1234567: 345
987654321: 654
10001: 000
-10001: 000
-123: 123
-100: 100
100: 100
-12345: 234
1: is too small
2: is too small
-1: is too small
-10: is too small
2002: has an even number of digits
-2002: has an even number of digits
0: is too small</pre>
 
=={{header|J}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.