diff options
| -rw-r--r-- | challenge-335/mark-anderson/raku/ch-2.raku | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/challenge-335/mark-anderson/raku/ch-2.raku b/challenge-335/mark-anderson/raku/ch-2.raku index f3a580d72c..fdc525fa0f 100644 --- a/challenge-335/mark-anderson/raku/ch-2.raku +++ b/challenge-335/mark-anderson/raku/ch-2.raku @@ -24,19 +24,22 @@ sub find-winner(+@moves) @moves[$seq].map({ @board[.[0];.[1]] = $ltr }); - # check rows - return $ltr if @board.first({ .all eq $ltr }); - - # check upper left to lower right diagonal - my @a = (^Inf) Z (^Inf).head(@board); - return $ltr if @a.map({ @board[.[0];.[1]] }).all eq $ltr; - - # check upper right to lower left diagonal - @a = (^Inf) Z (@board.end...0); - return $ltr if @a.map({ @board[.[0];.[1]] }).all eq $ltr; - - # check columns - return $ltr if ([Z] @board).first({ .all eq $ltr }); + return $ltr if any + ( + # check rows + @board.first({ .all eq $ltr }), + + # check upper left to lower right diagonal + ((^Inf) Z (^Inf).head(@board)) + .map({ @board[.[0];.[1]] }).all eq $ltr, + + # check upper right to lower left diagonal + ((^Inf) Z (@board.end...0)) + .map({ @board[.[0];.[1]] }).all eq $ltr, + + # check columns + ([Z] @board).first({ .all eq $ltr }) + ); return 'Draw' } |
