Jump to content

Multiplication tables: Difference between revisions

→‎{{header|Haskell}}: or, a Prelude - only version
(→‎{{header|AppleScript}}: Subheaders: 1. Iteration 2. Functional composition – (and some updated primitives))
(→‎{{header|Haskell}}: or, a Prelude - only version)
Line 2,249:
where f n s = putStrLn $ fmt n ++ s ++ concatMap (fmt . (*n)) [n..12]
fmt n = printf "%4d" (n :: Int)</lang>
 
 
Or, making do without imports beyond the Prelude:
 
<lang Haskell>table :: Int -> [String]
table n = concat <$> xs
where
xs = concatMap (\x -> [[fmt x] ++ [" " ] ++
concatMap (\y -> if y < x then [" "]
else [fmt $ x * y])
range])
range
where
fmt e = drop (length s) (" " ++ s)
where
s = show e
range = [1..n]
 
main :: IO ()
main = mapM_ putStrLn $ table 12</lang>
 
{{Out}}
<pre> 1 1 2 3 4 5 6 7 8 9 10 11 12
2 4 6 8 10 12 14 16 18 20 22 24
3 9 12 15 18 21 24 27 30 33 36
4 16 20 24 28 32 36 40 44 48
5 25 30 35 40 45 50 55 60
6 36 42 48 54 60 66 72
7 49 56 63 70 77 84
8 64 72 80 88 96
9 81 90 99 108
10 100 110 120
11 121 132
12 144</pre>
 
=={{header|HicEst}}==
9,659

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.