Dado um número N
, imprima um triângulo retângulo NxN, em que cada linha i
é preenchida com números até i
.
Exemplo
n = 0
(sem saída)
n = 4
1
1 2
1 2 3
1 2 3 4
n = 10
1
1 2
1 2 3
.
.
.
1 2 3 4 5 6 7 8 9 10
(não é necessário alinhamento)
n = N
1
1 2
1 2 3
.
.
.
1 2 3 4 .... N
Não há espaço à direita no final de cada linha.
O menor número de bytes vence e as brechas padrão não são permitidas.
Respostas:
Joe ,
53 bytes (+2 ou +3 para-t
sinalizador)Bem, aparentemente eu não utilizei todo o potencial de Joe. Isso foi possível quando publiquei isso pela primeira vez.
Aqui,
R
fornece o intervalo de 0 a n, exclusivo. Em seguida,\A
toma prefixos sucessivos (A
é a função de identidade). Exemplos:Com
-t
sinalizador (nota: agora é a saída padrão, mesmo sem o sinalizador):Sem ele:
As regras mudaram um pouco. Meu código antigo não se comportou corretamente com N = 0. Além disso, agora a saída pode ser apenas uma lista aninhada e
-t
pode ser descartada.Agora,
Rn
fornece um intervalo de 0 a n, exclusivo. Se for 0, ele retorna uma lista vazia.1+
adiciona 1 a cada elemento desse intervalo.1R
mapeia os valores para intervalos de 1 a x. Liats vazios, quando mapeados, retornam listas vazias.Exemplo de saída:
Atualização: Acabei de perceber algo. A função é mapeada automaticamente para classificar 0 elementos. O exemplo a seguir é executado com
-t
sinalizador.Antigo: 5 bytes (com a
-t
bandeira)Essa é uma função anônima que recebe um número, cria uma lista de 1 a N (
1Rn
) e mapeia esses valores para o intervalo anterior, fornecendo um intervalo de 1 a x para cada item do intervalo de 1 a N.O
-t
sinalizador fornece a saída como uma tabela semelhante a J.Nota: o idioma é muito novo e não está completo, mas a versão mais recente foi lançada antes deste desafio.
fonte
Python 3,
4845 bytesViva para efeitos colaterais.
fonte
print
de executar osprint
em ordem inversa.APL, 5
cria um vetor 1..n e para cada elemento outro vetor.
Então ⍪ cria uma coluna com todos os vetores. Isso evita o problema de espaços em branco à direita.
Experimente em tryapl.org
Solução mais antiga:
Cria um vetor 1..n
{⎕ ← ⍳⍵} é uma função que gera para cada elemento (¨) um vetor 1..n em uma linha separada
Infelizmente, este não pode ser experimentado em tryapl.org, porque ⎕ ← não funciona lá.
fonte
J, 27 bytes
J não é bom com saída numérica sem matriz. Esta função cria uma sequência de caracteres formatada corretamente a partir dos números.
Experimente online aqui.
fonte
]\@i.
para obter;@(<@,&LF@":@:>:@:]\@i.)
PHP, 53 bytes
Edit 2: Ismael Miguel sugeriu a leitura da entrada em vez de definir uma função, então a pontuação agora é de 53 bytes para o PHP:
E mais uma vez, pode ser aprimorado se o PHP estiver configurado para ignorar erros (52 bytes):
Edit: Austin sugeriu uma versão de 60 bytes nos comentários:
O que pode ser melhorado se não exibirmos erros de PHP (59 bytes):
$a
armazena a próxima linha que será impressa e cada vez que ela é impressa, um espaço e o próximo número (print
sempre retorna1
) são concatenados.Funções recursivas (65 bytes):
Função recursiva mais curta, com o relatório de erros desativado (64 bytes):
Função recursiva ainda mais curta, com o relatório de erros desativado e uma linha vazia antes da saída real (62 bytes):
Apenas por diversão, funções não recursivas:
fonte
for($a=1;@$i<$n;$a.=" ".(@++$i+print"$a\n"));
for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));
(44 bytes)function f($n){for($a=1;@$i++<$n;$a.=" ".($i+print"$a\n"));}
, que é de 60 bytes.for($a=1;$i++<$n=$_GET[n];$a.=" ".($i+print"$a\n"));
-> tentar isso (código completo, usando o parâmetro urln
com o número)CJam,
1312 bytesComo funciona :
Experimente online aqui
fonte
Pitão, 9 bytes
Realmente pensei que isso pode ser feito mais curto, mas não parece.
Experimente online .
fonte
VQaYhNjdY
. Se apenasa
retornasse a lista, algo comoVQjdaYhN
seria 8.a
usado brevemente para retornar a lista anexada.N+1+1-1
?r
é a função Python-range, portanto -1 (r1N
cria a lista[1, 2, ..., N-1]
). Mas na n-ésima iteração do loop, quero a lista e[1, 2, ..., N+1]
, portanto, preciso adicionar2
aN
.r1hhN
traduz diretamente pararange(1, N+1+1)
. Outra possibilidade seriar1+N2
(range(1, N+2)
).mhdhN
, mas essa é uma abordagem completamente diferente.JavaScript (ES6) 49
52Uma tarefa tão simples, gostaria de saber se isso pode ser reduzido em JS (atualização: sim, usando recursão)
Recursiva 49
Iteraive 52
fonte
Java,
8584 bytesIsso é surpreendentemente curto em Java.
Recuado:
1 byte graças ao Bigtoes / Geobits
fonte
b+=...
paraprintln(b+=...)
.Prolog - 119
fonte
Python 2 -
625465 bytesfonte
n
deve ser fornecido como entrada para o programa, não inicializado em uma variável.N
fazendoN=input()
ou algo semelhante, para que seu programa possa ser executado como tal. Aqui está uma discussão meta sobre o tópico.J, 9 caracteres
Como um verbo tácito, monádico.
i. y
- os números de0
ay - 1
.1 + i. y
- os números de1
ay
.": y
- o vetory
representado como uma string.":\ y
- cada prefixo dey
representado como uma string.":\ 1 + i. y
- cada prefixo dos números de1
paray
representado como uma matriz de caracteres.fonte
> <> (Peixe) ,
4037 + 3 = 40 bytesMais uma vez,> <> decentemente se sai bem em outro exercício de impressão numérica. Corra com o
-v
sinalizador para entrada, por exemploExplicação
fonte
C (sem loops, sim!) - 72 bytes
Isso cria uma função
r(n)
que pode ser usada desta maneira:Veja em ação aqui em tutorialspoint.com
Requer alguns truques facilmente explicados. Eu acho que pode ser muito melhorado.
fonte
b(n,c){if(n){b(n-1,32);printf("%d%c",n,c);}}r(n){if(n){r(n-1);b(n,10);}}
b(n,c){n&&b(n-1,32)^printf("%d%c",n,c);}r(n){n&&r(n-1)^b(n,10);}
Wandbox dePython 2-72
fonte
p
. Em outra nota, você pode remover dois espaços - um entreprint
e'\n'
e o outro entre)))
efor
.def p(N):print'\n'.join(' '.join(map(str,range(1,i+2)))for i in range(N))
Perl, 28
Lê o parâmetro de stdin.
Na linha de comando:
mas agora não sei como contar isso (provavelmente entre 25 e 29).
fonte
Python
fonte
for i in range(int(input())):print(' '.join("123456789"[:i+1]))
- Observe que as strings são tratadas como listas.Golfscript 14
Espera que o número de entrada esteja presente na pilha.
Exemplo online: link
fonte
Clipe , 16
Explicação
fonte
Vai,
9381789390 bytesCorrente sem golfe
Se precisarmos lidar com N> 9, podemos usar o seguinte em 78 bytes, no entanto, é necessário importar o
fmt
pacote.Se incluirmos a declaração de importação, agora estou de volta à minha inicial
939290 bytesTeste on-line aqui: http://play.golang.org/p/BWLQ9R6ilw
A versão com
fmt
está aqui: http://play.golang.org/p/hQEkLvpiqtfonte
!=
para>
, no entanto.import
afirmação emboraZX / Sinclair BASIC - 39 bytes
O ZX Basic usa 1 byte por palavra-chave (todas as palavras em maiúsculas), portanto, ajuda a manter um pouco o tamanho do byte ...
Usando n = 8
fonte
VAL("1")
(6 bytes como VAL é 1) insted de1
(7 bytes))R, 28
fonte
[1]
em cada linha está violando as especificações.1; 1 0
. (Pretend;
é uma quebra de linha.)cat(1:i,"\n")
. Mesmo que seja um pouco mais longo queprint(1:i)
isso, não inclui um líder[1]
em cada linha.TI-Basic, 28 bytes
fonte
C, 89 caracteres
Para eliminar a confusão sobre
puts("");
. Isso simplesmente imprime um caractere de nova linha (como visto aqui ):Fiquei um pouco mais curto com o algoritmo java do @TheBestOne:
fonte
puts("");
faz nada. Você pode usar emchar b[999]=""
vez dechar b[999]={0}
salvar 1 caractere.puts("");
imprime um caractere de nova linha.Perl: 34 caracteres
Este código obtém o número de entrada fornecido através da variável especial
$_
.fonte
print"@$_\n"for map[1..$_],1..$_
também funciona.C # - 94 bytes
Escrita como uma função anônima que retorna uma string, que não parece ser desaprovada pela especificação.
Aqui está uma versão não destruída (os comentários são lidos em ordem BDCA):
fonte
Bash + coreutils, 26 bytes
seq
simplesmente gera os números de 1 a nsed
salva a saída inteira de uma determinada linha no espaço de espera e depois anexa a próxima linha a ela.fonte
Haskell,
6257 bytesEstilo sem pontos. Exemplo de uso:
fonte
e=enumFromTo 1
economiza 7 bytes.enumFromTo 1
, também tenho que dar um nome à função principal, por isso são 5 bytes. Sem o nome, seria umalet
construção:let e=enumFromTo 1 in (putStr.unlines.map(unwords.map show.e).e) 5
Mathematica, 32
fonte
TableForm[Range/@Range@#]&
?Grid[Range/@Range@#]&
Grid
.)Scala,
736562 bytesUngolfed
fonte