Desafio
O inverno está se aproximando rapidamente, com muitos lugares recebendo as primeiras camadas de neve para a temporada 15/16, então por que não quebramos as máquinas de neve e nos codificamos um pouco de neve?
Dado um número inteiro n
via STDIN, produza um floco de neve de uma representação ASCII Beta (como descrito abaixo) no nível n
.
Floco de neve de Beta
O floco de neve começa no nível 0 com um único x:
x
Em seguida, em cada canto, você adiciona uma destas formas:
x
xx
Você adiciona a forma acima ao canto superior direito. Para um canto inferior direito, gire-o 90 ° no sentido horário, no canto inferior esquerdo, 180 ° no sentido horário e no canto superior esquerdo, 270 ° no sentido horário.
Se você fizer isso, obtém a seguinte forma:
x x
xx xx
x
xx xx
x x
Anote a orientação das formas. Continuando, adicionamos mais formas a cada canto, usando as regras de orientação descritas acima, ao diagrama para obter o nível 2:
x x x
xxxxxxx
xx x x xx
xxx xxx
xx x xx
xxx xxx
xx x x xx
xxxxxxx
x x x
Observe que as formas são adicionadas apenas a x
s com dois ou mais lados expostos (que é referido como um canto acima).
As formas em L podem e se sobrepõem a valores n
maiores que 1. Por exemplo:
Se o nível 0 for:
x x
Em seguida, deve haver sobreposições no nível 1 (indicado com um o
, não inclua o o
em sua saída):
x o x
xxxoxxx
x x
xxxoxxx
x o x
Sua tarefa é produzir essa representação ASCII do floco de neve de Beta.
Bônus
Haverá um bônus de 50 repetições para o programa mais curto que, quando n
negativo, produz o floco de neve (no nível n*-1
) como uma imagem ou graficamente na tela.
Você pode ter programas separados para a recompensa e a tarefa principal.
Ganhando
O programa mais curto em bytes vence.
2 or more exposed sides
regra? Assumindo centro é 0,0
, em seguida, 1,1
, 1,-1
, -1,-1
, -1,1
todos têm 2 lados expostos (os lados de frente para os outros 4 pontos). Não deveria ter mais de 3 lados abertos para evitar o preenchimento? Ou, alternativamente, ele só se expande se tiver 0 ou 1 vizinhos (cardeal).