Desafio
Você receberá um número inteiro positivo n
como entrada. A saída deve ser uma pilha de areia do tipo pirâmide, construída com base nas regras especificadas abaixo:
- Cada número inteiro "cai" para baixo a partir do mesmo ponto inicial, como areia caindo em forma de conal.
- Os números maiores que o número diretamente abaixo, quando atingem o monte de areia, cairão para a direita, se possível.
- Os números inferiores ao número diretamente abaixo, quando atingir o monte de areia, cairão para a esquerda, se possível.
- Números iguais ao número logo abaixo quando atingir o monte de areia permanecerão no lugar.
- Os números podem cair para a esquerda / direita, se puderem se mover para baixo e para a esquerda / direita, respectivamente. Ou seja, se já houver um número abaixo e à esquerda / direita, dependendo da direção, o número atualmente em queda não se move.
- Um número continuará caindo no monte de areia até que ele não possa ser movido para sua próxima posição ou atingir o chão.
Notas
A verificação de comparação inicial se aplica somente ao primeiro número inteiro encontrado, não a cada encontro sucessivo, uma vez que cai no monte de areia.
Os espaços à direita são bons, mas as novas linhas à direita não.
Não há espaços à esquerda ou novas linhas, exceto onde necessário para preservar a estrutura da pilha de areia.
Você pode escrever um programa ou função completo.
Você pode assumir que a entrada conterá apenas alguma combinação [0-9]
.
Isso é código-golfe , o código mais curto em bytes será marcado como vencedor pelos dias de março
Exemplos
1
1
12345
35
124
54321
13
245
555444333222111
2
2
2
135
1345
13445
111222333444555
4
4
4
135
1235
12235
7313623030872935273465247457435345345350
3
3
3
3
34
355
3644
239475
201277445
020373685575
555444333222111
é um erro que o terceiro4
caia da esquerda para o primeiro4
?Respostas:
JavaScript (ES6),
260208 bytesEditar: salvou 25 bytes ao perceber que o primeiro caractere não é um caso especial. Economizou 15 bytes usando uma matriz de seqüências de caracteres em vez de uma matriz de matrizes de caracteres. 12 bytes salvos em correções diversas, incluindo o uso de um literal
\n
(não mostrado). Isso torna todo esse 20% mais curto! Eu queria me livrar,reverse
mas isso custa mais do que posso economizar substituindomap
porreplace
.Ungolfed:
fonte