Multiplication tables: Difference between revisions
Content added Content deleted
m (→[[Print_a_Multiplication_Table#ALGOL_68]]: - misc tidy.) |
(→Tcl: Added implementation) |
||
Line 1: | Line 1: | ||
⚫ | |||
Produce a formatted 12×12 multiplication table of the kind memorised by rote when in primary school. |
Produce a formatted 12×12 multiplication table of the kind memorised by rote when in primary school. |
||
Only print the top half triangle of products. |
Only print the top half triangle of products. |
||
⚫ | |||
=={{header|ALGOL 68}}== |
=={{header|ALGOL 68}}== |
||
<lang Algol>main:( |
<lang Algol>main:( |
||
Line 37: | Line 38: | ||
12 144 |
12 144 |
||
</pre> |
|||
=={{header|Tcl}}== |
|||
<lang tcl>puts " x\u2502 1 2 3 4 5 6 7 8 9 10 11 12" |
|||
puts \u0020\u2500\u2500\u253c[string repeat \u2500 48] |
|||
for {set i 1} {$i <= 12} {incr i} { |
|||
puts -nonewline [format "%3d" $i]\u2502[string repeat " " [expr {$i*4-4}]] |
|||
for {set j 1} {$j <= 12} {incr j} { |
|||
if {$j >= $i} { |
|||
puts -nonewline [format "%4d" [expr {$i*$j}]] |
|||
} |
|||
} |
|||
puts "" |
|||
}</lang> |
|||
Output: |
|||
<pre> |
|||
x│ 1 2 3 4 5 6 7 8 9 10 11 12 |
|||
──┼──────────────────────────────────────────────── |
|||
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> |
</pre> |
Revision as of 15:19, 5 December 2009
Multiplication tables
You are encouraged to solve this task according to the task description, using any language you may know.
You are encouraged to solve this task according to the task description, using any language you may know.
Produce a formatted 12×12 multiplication table of the kind memorised by rote when in primary school.
Only print the top half triangle of products.
ALGOL 68
<lang Algol>main:(
INT max = 12; STRING empty cell = " "; FORMAT fmt = $zz-d$;
print(" x"); FOR col TO max DO printf((fmt, col)) OD; print (new line);
FOR row TO max DO printf((fmt,row)); FOR col TO row-1 DO print(empty cell) OD; [row:max]INT product; FOR col FROM row TO max DO product[col]:=row*col OD; printf((fmt, product, $l$)) OD
)</lang> Output:
x 1 2 3 4 5 6 7 8 9 10 11 12 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
Tcl
<lang tcl>puts " x\u2502 1 2 3 4 5 6 7 8 9 10 11 12" puts \u0020\u2500\u2500\u253c[string repeat \u2500 48] for {set i 1} {$i <= 12} {incr i} {
puts -nonewline [format "%3d" $i]\u2502[string repeat " " [expr {$i*4-4}]] for {set j 1} {$j <= 12} {incr j} {
if {$j >= $i} { puts -nonewline [format "%4d" [expr {$i*$j}]] }
} puts ""
}</lang> Output:
x│ 1 2 3 4 5 6 7 8 9 10 11 12 ──┼──────────────────────────────────────────────── 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