/
sierpinski_triangle.t
55 lines (45 loc) 路 1.11 KB
/
sierpinski_triangle.t
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
46
47
48
49
50
51
52
53
54
55
# http://rosettacode.org/wiki/Sierpinski_triangle#Perl_6
use v6;
use Test;
plan 1;
my $rosetta-code = {
#### RC-begin
sub sierpinski ($n) {
my @down = '*';
my $space = ' ';
for ^$n {
@down = @down.map({"$space$_$space"}), @down.map({"$_ $_"});
$space ~= $space;
}
return @down;
}
.say for sierpinski 4;
#### RC-end
}
my $oldOUT = $*OUT;
my $output;
$*OUT = class {
method print(*@args) {
$output ~= @args.join;
}
}
$rosetta-code.();
my $expected = " *
* *
* *
* * * *
* *
* * * *
* * * *
* * * * * * * *
* *
* * * *
* * * *
* * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
";
$*OUT = $oldOUT;
is($output.subst("\r", '', :g), $expected.subst("\r", '', :g), "Sierpinski Triangle");