Desafio:
Entrada: Um número inteiro positivo
Saída:
Crie uma lista no intervalo e junte-a a uma sequência (ou seja, seria a sequência ).12345678910111213
Agora, produzimos um triângulo usando os prefixos ou sufixos dessa string, em uma das quatro orientações a seguir, com base no número inteiro de entrada:
- Se , produza -o na forma de triângulo ◣
- Se , produza -o na forma de triângulo ◤
- Se , produza -o na forma de triângulo ◥
- Se , produza -o na forma de triângulo ◢
Exemplo:
Entrada:
Como , a forma será ◤. Aqui estão três possíveis saídas válidas:
12345678910111213 11111111111111111 12345678910111213
1234567891011121 2222222222222222 2345678910111213
123456789101112 333333333333333 345678910111213
12345678910111 44444444444444 45678910111213
1234567891011 5555555555555 5678910111213
123456789101 666666666666 678910111213
12345678910 77777777777 78910111213
1234567891 8888888888 8910111213
123456789 999999999 910111213
12345678 11111111 10111213
1234567 0000000 0111213
123456 111111 111213
12345 11111 11213
1234 1111 1213
123 222 213
12 11 13
1 3 3
Regras do desafio:
- Como você pode ver nas três saídas válidas acima, apenas a forma correta e o uso de todos os dígitos na ordem correta são importantes. Além disso, você é livre para usar prefixos ou sufixos; inverte / reflete; impressão diagonal; etc. etc. Qualquer uma das seis saídas possíveis para cada forma é permitida (consulte o caso de teste abaixo para ver todas as saídas válidas com base na forma). Isso permite que idiomas com built-in de rotação o usem, mas os que não têm também podem usar uma abordagem alternativa de usar os prefixos no tamanho correto de cima para baixo ou usar os prefixos para duas das formas, mas sufixos para as outras duas formas. . A escolha das opções de saída mais apropriadas para o seu idioma faz parte do processo de golfe. :)
- A entrada é garantida como um número inteiro positivo. Para , simplesmente produzimos .
1
- Qualquer quantidade de linhas / espaços à esquerda / à direita é permitida, desde que imprima o triângulo correto (sem delimitadores verticais nem horizontais!) Em algum lugar da tela.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Casos de teste:
Entrada:
Todas as saídas válidas possíveis:
12345 54321 12345 54321 11111 55555
1234 5432 2345 4321 2222 4444
123 543 345 321 333 333
12 54 45 21 44 22
1 5 5 1 5 1
Entrada:
Todas as saídas possíveis:
123456 654321 123456 654321 111111 666666
12345 65432 23456 54321 22222 55555
1234 6543 3456 4321 3333 4444
123 654 456 321 444 333
12 65 56 21 55 22
1 6 6 1 6 1
Entrada:
Todas as saídas possíveis:
1 1 7 7 7 1
12 21 67 76 66 22
123 321 567 765 555 333
1234 4321 4567 7654 4444 4444
12345 54321 34567 76543 33333 55555
123456 654321 234567 765432 222222 666666
1234567 7654321 1234567 7654321 1111111 7777777
Entrada:
Todas as saídas possíveis:
1 1 8 8 8 1
12 21 78 87 77 22
123 321 678 876 666 333
1234 4321 5678 8765 5555 4444
12345 54321 45678 87654 44444 55555
123456 654321 345678 876543 333333 666666
1234567 7654321 2345678 8765432 2222222 7777777
12345678 87654321 12345678 87654321 11111111 88888888
Entrada:
Somente saída possível:
1
Entrada:
Todas as saídas possíveis:
12 21 12 21 11 22
1 2 2 1 2 1
n==13
, a linha superior pode ser'33333333333333333'
(ou, equivalente'31211101987654321'
)?mod 4
são pares estritos para esse desafio. Portanto, você não pode mudar as quatro formas para os quatromod 4
casos. Mas boa pergunta, no entanto.Respostas:
JavaScript (ES6),
9389 bytesRetorna uma matriz de caracteres.
Experimente online!
Padrão alternativo (mesmo tamanho):
Experimente online!
Comentado
Resumo da forma
Abaixo está um resumo da forma base (gerada pelosnmod4
map
loops aninhados ) e a forma final (após asort
) para cada :fonte
Python 2 , 94 bytes
Experimente online!
fonte
Japonês , 8 bytes
Retorna uma matriz de linhas.
Tente
Economizou 2 bytes graças a Kevin .
fonte
ú
necessário? Parece que a rotação faz isso implicitamente?z
.Tela , 8 bytes
Experimente aqui!
fonte
Perl 6 , 94 bytes
Experimente online!
Bloco de código anônimo que pega um número e retorna uma lista de linhas.
fonte
Carvão , 17 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Entrada
n
.Crie uma sequência concatenando os números
1
paran
.Preencha um triângulo desse comprimento com a corda.
Gire o triângulo no sentido anti-horário em
n*90
graus.Reflita tudo, terminando assim com um triângulo que é girado no sentido horário em
n*90
graus.fonte
C # (compilador interativo do Visual C #) , 128 bytes
Experimente online!
fonte
Ruby ,
958279 bytesExperimente online!
3 bytes salvos por G B.
fonte
R ,
152139137134 bytesCódigo desenrolado:
Experimente online!
fonte
APL + WIN, 45 bytes
Solicita número inteiro
Experimente online! Cortesia de Dyalog Classic
fonte
PowerShell , 108 bytes
Experimente online!
Um pouco áspero nas bordas, mas funciona. Une os dígitos 1 a
n
uma sequência e itera de 0 ao comprimento dessa sequência-1. A cada vez, ele usa a indexação de lista para alternar para o método de espaçamento correto e o intervalo de números usado para fatiar nossa nova string.fonte
Gelatina , 12 bytes
Experimente online!
fonte
05AB1E (herdado) ,
141210 bytesO uso da versão herdada como reescrita é extremamente lento por algum motivo.
Guardado 2 bytes graças a Kevin Cruijssen
Experimente online!
Explicação
fonte
LJη€S
paraLSη
, uma vez queS
nivela implicitamente.€S
que não funcionou muito bem;)Stax , 10 bytes
Execute e depure
fonte
PowerShell ,
10510195 bytes-4 bytes, graças a Arnauld pelo truque com Sort .
Experimente online!
Menos golfe:
fonte
R ,
175172154 bytesExperimente online!
Uma bagunça horrível em linha!
-3 bytes, alterando a condição de rotação
-17 bytes graças à sugestão do digEmAll , e outro byte depois de jogar golfe,
fonte
Wolfram Language (Mathematica) , 137 bytes
Experimente online!
fonte
Python 2 , 116 bytes
Experimente online!
fonte
Vermelho , 155 bytes
Experimente online!
fonte
perl 5, 117 bytes
TIO
fonte
PHP ,
116111109 bytesExperimente online!
Execute com
php -nF
entrada deSTDIN
.$ echo 6|php -nF t.php
fonte
JDK (Java) ,
247209188186160148 bytesExperimente online!
-38 bytes
graças a @KevinCruijssen-21 bytes
, deixandoprintf
lidar com o estofamento.-2 bytes
fazendo substring antes da substituição, permitindo incrementarl
em um local em vez de dois.-26 bytes
- aoprintf
fazer o preenchimento, a cadeia cheia de espaços não era mais necessária e as cadeias de dígitos podiam ser geradas de maneira mais curta, aparentemente.-12 bytes
não mexendo com dígitos únicos em vez de imprimir substrings da string de dígitos perfeitamente útil que já temos.Ungolfed
fonte
for(
podem ser removidos.new String(new char[w=s.length()]).replace('\0',' ')
pode estar" ".repeat(w=s.length())
usando Java 11+. Você pode remover os parênteses em torno das verificações ternárias.1>(i-1)%4/2
pode ser1>~-i%4/2
.w-1-l++
pode serw+~l++
. E você não precisa contar o ponto e vírgula à direita na contagem de bytes. Que tudo combinado se torna 209 bytes .