diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2024-09-23 18:54:59 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2024-09-23 18:54:59 +0800 |
| commit | bdec751bdd9db9edcaa5aacd818a4388421ef6ea (patch) | |
| tree | 9aa7e45d6466293cdd4898ab9fcfb40f7659db60 | |
| parent | 9306b8f82098f277b3fadc570127293cdbbf4cf8 (diff) | |
| download | perlweeklychallenge-club-bdec751bdd9db9edcaa5aacd818a4388421ef6ea.tar.gz perlweeklychallenge-club-bdec751bdd9db9edcaa5aacd818a4388421ef6ea.tar.bz2 perlweeklychallenge-club-bdec751bdd9db9edcaa5aacd818a4388421ef6ea.zip | |
improve ch-2.raku
| -rwxr-xr-x | challenge-288/feng-chang/raku/ch-2.raku | 27 |
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; |
