-
Notifications
You must be signed in to change notification settings - Fork 320
/
ch-2.p6
45 lines (40 loc) · 1.37 KB
/
ch-2.p6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Formatted Multiplication Table
#
# Write a script to print 11x11 multiplication table, only the top half triangle.
#
# x| 1 2 3 4 5 6 7 8 9 10 11
# ---+--------------------------------------------
# 1| 1 2 3 4 5 6 7 8 9 10 11
# 2| 4 6 8 10 12 14 16 18 20 22
# 3| 9 12 15 18 21 24 27 30 33
# 4| 16 20 24 28 32 36 40 44
# 5| 25 30 35 40 45 50 55
# 6| 36 42 48 54 60 66
# 7| 49 56 63 70 77
# 8| 64 72 80 88
# 9| 81 90 99
# 10| 100 110
# 11| 121
#
sub print_mult_table($size) {
# Determine the gap between the numbers.
my $gap = ceiling(log10($size * $size)) + 1;
print " " x $gap - 1;
print "x|";
for 1..$size -> $i {
print($i.fmt('%' ~ $gap ~ 'd'));
}
print "\n";
print "-" x $gap ~ "+" ~ "-" x $size * $gap ~ "\n";
for 1..$size -> $i {
print $i.fmt('%' ~ $gap ~ 'd') ~ "|" ~ " " x ($i - 1) * $gap;
for $i..$size -> $j {
print ($i * $j).fmt('%' ~ $gap ~ 'd');
}
print "\n";
}
}
print_mult_table(3);
print_mult_table(8);
print_mult_table(11);
print_mult_table(40);