Here's an advanced version of the Count the Liberties challenge.
The definitions of the terms liberty and group are the same as the previous challenge, so have a look at the previous one for details, but briefly put,
- A group is a group of stones that are connected horizontally or vertically.
- Liberty is the number of empty spaces connected horizontally or vertically to a group.
. . O . . X X . . X . . . O O .
black's group (
X) has 5 liberties, the upper group of white (
O) has 2 liberties, and the lower group of white has 3 liberties.
For input, you will be given an 2D array of arbitrary size, in which each cell has one of
empty. You may map any value of any data type for
empty; but 1 value can be mapped to each.
All groups in the input will always have 1 or more liberties.
For output, the cells that had
empty will be
0, and the cells that had
white will be filled with the number of liberties of its group.
. . O . 0 0 2 0 . X X . -> 0 5 5 0 . X . . 0 5 0 0 . O O . 0 3 3 0 . X . O -> 0 2 0 1 X 1 X 1 . -> 0 . 0 O 2 . 0 . X X . 0 3 3 0 X . X O -> 2 0 3 2 X X O . 2 2 1 0
If you have participated in the previous challenge, having to count the liberties of multiple groups may require a quite different strategy.