sub mark_attacks { my ($r,$c,$array) = @_; $array->[$r]->[$c] = 'Q'; # mark everything my $none; for my $i (1 .. $SIZE) { $none = 1; $none = $array->[$r]->[$c + $i] = 0 if ($c + $i < $SIZE); $none = $array->[$r]->[$c - $i] = 0 if ($c - $i >= 0); $none = $array->[$r + $i]->[$c] = 0 if ($r + $i < $SIZE); $none = $array->[$r - $i]->[$c] = 0 if ($r - $i >= 0); $none = $array->[$r - $i]->[$c - $i] = 0 if ($r - $i >= 0 and $c - $i >= 0); $none = $array->[$r + $i]->[$c + $i] = 0 if ($r + $i < $SIZE and $c + $i < $SIZE); $none = $array->[$r - $i]->[$c + $i] = 0 if ($r - $i >= 0 and $c + $i < $SIZE); $none = $array->[$r + $i]->[$c - $i] = 0 if ($r + $i < $SIZE and $c - $i >= 0); last if $none; } }