Quick actions

cmd+k|ctrl+k

Navigation

Languages

PWC288, task 2

Snippet info

Language

Raku

Visibility

public

Author

seaker

Created

2024-09-24T03:13:41.268494Z

Updated

2024-09-24T03:19:41.506017Z

# https://theweeklychallenge.org/blog/perl-weekly-challenge-288/#TASK2

class Cell {
    has $.row;
    has $.col;
    has $.symbol;

    multi method new($row, $col, $symbol) { self.bless(:$row, :$col, :$symbol) }
    multi method WHICH(Cell:D:)           { "Cell|{$!row},{$!col},{$!symbol}" }
}

my @M = $*IN.lines.map({ .comb.Array });
my @blocks;

for ^+@M X ^+@M[0] -> (\row, \col) {
    my \symbol = @M[row;col];
    @blocks.unshift(Cell.new(row, col, symbol).SetHash);
    my $i = 1;
    while $i < +@blocks {
        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 {
            ++$i;
        }
    }
}

put @blocks».elems.max;
INFO