|
436 | 436 | tags => [qw( for cross )],
|
437 | 437 | scale => 1 << 7,
|
438 | 438 | work => sub { $_[0] * $_[0] },
|
439 |
| - perl5 => 'sub mk2d { my ($h, $w) = @_; my $x = 0; my $y = 0; sub { return if $y >= $h; my @c = ($y, $x); if (++$x >= $w) { $x = 0; ++$y; }; @c } }; my $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $i + $j }; 1', |
440 |
| - perl6 => 'for ^SCALE X ^SCALE -> $i, $j { $i + $j }; 1', |
441 |
| - nqp => 'sub mk2d($h, $w) { my $x := 0; my $y := 0; sub () { return () if $y >= $h; my @c := ($y, $x); if ++$x >= $w { $x := 0; ++$y; }; @c } }; my $it := mk2d(SCALE, SCALE); while $it() -> @c { @c[0] + @c[1] }; 1', |
| 439 | + expected => sub { ($_[0] * 2) . "\n" }, |
| 440 | + perl5 => 'my $k = 0; sub mk2d { my ($h, $w) = @_; my $x = 1; my $y = 1; sub { return if $y > $h; my @c = ($y, $x); if (++$x > $w) { $x = 1; ++$y; }; @c } }; my $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $k = $i + $j }; say $k;', |
| 441 | + perl6 => 'my $k = 0; for 1 .. SCALE X 1 .. SCALE -> $i, $j { $k = $i + $j }; say $k;', |
| 442 | + nqp => 'my $k := 0; sub mk2d($h, $w) { my $x := 1; my $y := 1; sub () { return () if $y > $h; my @c := ($y, $x); if ++$x > $w { $x := 1; ++$y; }; @c } }; my $it := mk2d(SCALE, SCALE); while $it() -> @c { $k := @c[0] + @c[1] }; say($k);', |
442 | 443 | },
|
443 | 444 | {
|
444 | 445 | name => 'create_and_copy_2d_grid_cross',
|
445 | 446 | tags => [qw( for cross array forest-fire )],
|
446 | 447 | scale => 1 << 7,
|
447 | 448 | work => sub { $_[0] * $_[0] },
|
448 |
| - perl5 => 'sub mk2d { my ($h, $w) = @_; my $x = 0; my $y = 0; sub { return if $y >= $h; my @c = ($y, $x); if (++$x >= $w) { $x = 0; ++$y; }; @c } }; my (@src, @dst); my $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $src[$i][$j] = $i + $j }; $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $dst[$i][$j] = $src[$i][$j] }; 1', |
449 |
| - perl6 => 'my (@src, @dst); for ^SCALE X ^SCALE -> $i, $j { @src[$i][$j] = $i + $j }; for ^SCALE X ^SCALE -> $i, $j { @dst[$i][$j] = @src[$i][$j] }; 1', |
450 |
| - nqp => 'sub mk2d($h, $w) { my $x := 0; my $y := 0; sub () { return () if $y >= $h; my @c := ($y, $x); if ++$x >= $w { $x := 0; ++$y; }; @c } }; my @src; my @dst; my $it := mk2d(SCALE, SCALE); while $it() -> @c { @src[@c[0]] := [] unless @src[@c[0]]; @src[@c[0]][@c[1]] := @c[0] + @c[1] }; $it := mk2d(SCALE, SCALE); while $it() -> @c { @dst[@c[0]] := [] unless @dst[@c[0]]; @dst[@c[0]][@c[1]] := @src[@c[0]][@c[1]] }; 1', |
| 449 | + expected => sub { ($_[0] * 2) . "\n" }, |
| 450 | + perl5 => 'sub mk2d { my ($h, $w) = @_; my $x = 1; my $y = 1; sub { return if $y > $h; my @c = ($y, $x); if (++$x > $w) { $x = 1; ++$y; }; @c } }; my (@src, @dst); $dst[0][0] = 0; my $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $src[$i][$j] = $i + $j }; $it = mk2d(SCALE, SCALE); while (my ($i, $j) = $it->()) { $dst[$i][$j] = $src[$i][$j] }; say $dst[SCALE][SCALE];', |
| 451 | + perl6 => 'my (@src, @dst); @dst[0][0] = 0; for 1 .. SCALE X 1 ..SCALE -> $i, $j { @src[$i][$j] = $i + $j }; for 1 .. SCALE X 1 .. SCALE -> $i, $j { @dst[$i][$j] = @src[$i][$j] }; say @dst[SCALE][SCALE];', |
| 452 | + nqp => 'sub mk2d($h, $w) { my $x := 1; my $y := 1; sub () { return () if $y > $h; my @c := ($y, $x); if ++$x > $w { $x := 1; ++$y; }; @c } }; my @src; my @dst; @dst[0][0] := 0; my $it := mk2d(SCALE, SCALE); while $it() -> @c { @src[@c[0]] := [] unless @src[@c[0]]; @src[@c[0]][@c[1]] := @c[0] + @c[1] }; $it := mk2d(SCALE, SCALE); while $it() -> @c { @dst[@c[0]] := [] unless @dst[@c[0]]; @dst[@c[0]][@c[1]] := @src[@c[0]][@c[1]] }; say(@dst[SCALE][SCALE]);', |
451 | 453 | },
|
452 | 454 | {
|
453 | 455 | name => 'create_and_iterate_hash_kv',
|
454 | 456 | tags => [qw( for while hash hash_kv )],
|
455 | 457 | scale => 1 << 3,
|
456 |
| - perl5 => 'my %h; for (0 .. (SCALE - 1)) { %h{$_} = $_ }; while (my ($k, $v) = each %h) { $k == $v }; 1', |
457 |
| - perl6 => 'my %h; for ^SCALE { %h{$_} = $_ }; for %h.kv -> $k, $v { $k == $v }; 1', |
| 458 | + expected => sub { $_[0] . "\n" }, |
| 459 | + perl5 => 'my %h; my $m = 0; for (0 .. (SCALE - 1)) { %h{$_} = $_ }; while (my ($k, $v) = each %h) { $m += $k == $v }; say $m', |
| 460 | + perl6 => 'my %h; my $m = 0; for ^SCALE { %h{$_} = $_ }; for %h.kv -> $k, $v { $m += $k == $v }; say $m;', |
458 | 461 | nqp => undef,
|
459 | 462 | },
|
460 | 463 | {
|
|
0 commit comments