Introdução
Neste desafio, você recebe como representação a representação ASCII da rede (superfície desdobrada) de um cubóide retangular (caixa 3D). O formato é este:
....+--+.......
....|##|.......
....|##|.......
....|##|.......
+---+--+---+--+
|###|##|###|##|
+---+--+---+--+
....|##|.......
....|##|.......
....|##|.......
....+--+.......
Cada face do cubóide é um retângulo de #
s cercado por +-|
caracteres. A parte externa da rede é preenchida com .
s. A rede sempre terá a mesma orientação: há uma face do meio cercada pelas quatro faces vizinhas e a contraparte da face do meio está na borda direita da entrada. A entrada é preenchida com .
s para uma forma retangular e não conterá linhas ou colunas extras de .
s.
A tarefa
Sua tarefa é tomar como entrada um diagrama como acima e calcular o volume do cubóide que ele representa, que é apenas o produto de sua altura, largura e profundidade. Você pode considerar a entrada como uma sequência delimitada por nova linha ou uma matriz de sequências.
O comprimento de cada aresta é a distância entre os +
caracteres em suas duas extremidades. Por exemplo, a borda horizontal +--+
tem comprimento 3 e a borda vertical
+
|
|
|
+
tem comprimento 4. O comprimento mínimo de uma aresta é 1. O exemplo cubóide acima tem volume 2 * 3 * 4 = 24.
Regras e pontuação
Você pode escrever um programa completo ou uma função, e a menor contagem de bytes vence.
Casos de teste
.++..
+++++
+++++
.++..
1
...++....
...||....
...||....
+--++--++
+--++--++
...||....
...||....
...++....
3
..+-+....
..|#|....
+-+-+-+-+
|#|#|#|#|
|#|#|#|#|
+-+-+-+-+
..|#|....
..+-+....
12
.+---+.....
++---++---+
||###||###|
||###||###|
||###||###|
++---++---+
.+---+.....
16
....++.....
....||.....
....||.....
....||.....
+---++---++
|###||###||
|###||###||
|###||###||
+---++---++
....||.....
....||.....
....||.....
....++.....
16
...+--+......
...|##|......
...|##|......
+--+--+--+--+
|##|##|##|##|
+--+--+--+--+
...|##|......
...|##|......
...+--+......
18
....+--+.......
....|##|.......
....|##|.......
....|##|.......
+---+--+---+--+
|###|##|###|##|
+---+--+---+--+
....|##|.......
....|##|.......
....|##|.......
....+--+.......
24
....+-----+..........
....|#####|..........
....|#####|..........
....|#####|..........
+---+-----+---+-----+
|###|#####|###|#####|
|###|#####|###|#####|
|###|#####|###|#####|
|###|#####|###|#####|
+---+-----+---+-----+
....|#####|..........
....|#####|..........
....|#####|..........
....+-----+..........
120