aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2024-09-23 18:54:59 +0800
committer冯昶 <fengchang@novel-supertv.com>2024-09-23 18:54:59 +0800
commitbdec751bdd9db9edcaa5aacd818a4388421ef6ea (patch)
tree9aa7e45d6466293cdd4898ab9fcfb40f7659db60
parent9306b8f82098f277b3fadc570127293cdbbf4cf8 (diff)
downloadperlweeklychallenge-club-bdec751bdd9db9edcaa5aacd818a4388421ef6ea.tar.gz
perlweeklychallenge-club-bdec751bdd9db9edcaa5aacd818a4388421ef6ea.tar.bz2
perlweeklychallenge-club-bdec751bdd9db9edcaa5aacd818a4388421ef6ea.zip
improve ch-2.raku
-rwxr-xr-xchallenge-288/feng-chang/raku/ch-2.raku27
1 files changed, 7 insertions, 20 deletions
diff --git a/challenge-288/feng-chang/raku/ch-2.raku b/challenge-288/feng-chang/raku/ch-2.raku
index 416bf6e708..b68710241b 100755
--- a/challenge-288/feng-chang/raku/ch-2.raku
+++ b/challenge-288/feng-chang/raku/ch-2.raku
@@ -16,30 +16,17 @@ my @blocks;
for ^+@M X ^+@M[0] -> (\row, \col) {
my \symbol = @M[row;col];
- my \cell = Cell.new(row, col, symbol);
- my \neighbours = Cell.new(row-1,col,symbol) | Cell.new(row+1,col,symbol) |
- Cell.new(row,col-1,symbol) | Cell.new(row,col+1,symbol);
-
- my $i = 0;
+ @blocks.unshift(Cell.new(row, col, symbol).SetHash);
+ my $i = 1;
while $i < +@blocks {
- if neighbours (elem) @blocks[$i] {
- @blocks[$i].set(cell);
- last;
- }
- ++$i;
- }
-
- my $j = $i + 1;
- while $j < +@blocks {
- if neighbours (elem) @blocks[$j] {
- @blocks[$i] (|)= @blocks[$j];
- @blocks.splice($j, 1);
+ if Cell.new(row-1,col,symbol) | Cell.new(row+1,col,symbol) |
+ Cell.new(row,col-1,symbol) | Cell.new(row,col+1,symbol) (elem) @blocks[$i] {
+ @blocks[0] (|)= @blocks[$i];
+ @blocks.splice($i, 1);
} else {
- ++$j;
+ ++$i;
}
}
-
- @blocks.push(cell.SetHash) if $i ≥ +@blocks;
}
put @blocks».elems.max;