
Hexagonal Islands
This is the mission similar to the “Calculate Islands” mission where you’re dealing with a hexagonal grid. Please, help the robots again.
The size of the hexagonal grid is 12x9 ('A1' to 'L9').
- It’s characteristics:
- the alphabet letters represent columns and numbers represent rows;
- it’s flat topped;
- the even columns are being shoved down.
You are given a set of coastal hexes for all islands as input value. You have to find all islands that those hexes represent and return a list (tuple or iterable) of that size.
Note:
- The islands don't include other islands.
- If there is no island (input == set ()), return [].
- There are also case that no sea. (In this case your answer is [108].)
Examples:
sorted(hexagonal_islands({'C5','E5','F4','F5','H4','H5','I4','I6','J4','J5'})) == [1, 3, 7] sorted(hexagonal_islands({'A1','A2','A3','A4','B1','B4','C2','C5','D2', 'D3','D4','D5', 'H6','H7','H8','I6','I9','J5','J9','K6','K9','L6','L7','L8'}) == [16, 19] sorted(hexagonal_islands(set())) == []
Input: The coastal hexes of all islands (a set of strings).
Output: The sizes of all islands (an iterable ( a list or tuple) of integers).
How it is used:
For recognizing the area on the hexagonal grid.Preconditions:
- all(re.fullmatch('[A-L][1-9]', i) for i in input)