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).Respostas:
CJam,
888382 bytesTeste aqui.
Eu acho que posso economizar muito na maneira como detecto onde estão os cantos. Mas pelo menos finalmente sei como serão as próximas iterações:
N = 3 :
N = 4:
Olhando para eles, eles parecem ser muito mais regulares do que eu esperava, e algum tipo de solução analítica que os gera diretamente pode ser muito menor.
fonte
Python 2, 269 bytes
Não coloca as formas em cada canto, mas determina se um personagem está no floco de neve com base nas coordenadas.
Primeiro, um canto é gerado e espelhado para o floco de neve cheio.
fonte