Imprimir números de 1 a 10


42

Este pode ser um desafio muito simples, mas estou surpreso que ainda não tenha sido feito no code-golf:

Imprima todos os números inteiros de 1 a 10, inclusive em ordem crescente para a saída padrão.

Seu formato de saída pode ser o que seu idioma suportar. Isso inclui separadores arbitrários (vírgulas, ponto-e-vírgula, novas linhas, combinações desses, etc., mas sem dígitos) e prefixos e postfixes (como [...]). No entanto, você não pode emitir outros números além de 1 a 10. Seu programa não pode receber nenhuma entrada. As brechas padrão não são permitidas.

Isso é , então a resposta mais curta em bytes vence!

Entre os melhores


10
Relacionados (? Duplicado)
Luis Mendo

17
Se a única alteração é codificar um único parâmetro, ele se enquadra na faixa de " alteração trivial " e, segundo os padrões deste site, ainda é considerado um tolo.
Peter Taylor

10
@ PeterTaylor O outro desafio tem um enorme problema com os limites de números inteiros. A maneira como é especificada em toda linguagem de TC que não possui números inteiros de 64 bits precisa implementá-los. (E isso afeta um monte de línguas.)
Martin Ender

17
@xnor Francamente, prefiro fechar o outro desafio como duplicado deste. O requisito praticamente o arruina.
Dennis

9
Não acredito que todas as respostas (atualmente) 71 assumem que a base deve ser decimal ... #
Skippy le Grand Gourou

Respostas:


68

C, 36 bytes

main(i){while(printf("%d ",i++)<3);}

Isso funciona porque o loop termina após o primeiro número de 2 dígitos.


1
Não há menção de poder passar parâmetros para a função.
Ash Burlaczenko

10
@AshBurlaczenko Do que você está falando? Essa é uma técnica padrão no golfe para inicializar um int para 1. Você não precisa passar nenhum argumento de linha de comando. De fato, isso fará com que o programa produza a saída errada.
xsot

6
@AshBurlaczenko Por consenso , concordamos que os programas podem assumir que não serão chamados com informações desnecessárias (nesse caso, sem argumentos adicionais na linha de comando, além do próprio programa). Isso significa que iaqui sempre será 1 quando este programa for executado. Você quis dizer outra coisa?
FryAmTheEggman

2
Desculpe, eu não escrevi C, mas assumi que o valor padrão seria 0, como em todos os idiomas que usei.
Ash Burlaczenko

16
@AshBurlaczenko Em C, o primeiro argumento para main é o número de argumentos da linha de comando (incluindo o próprio nome do executável). Como nenhum argumento adicional é passado, essa contagem é 1. O segundo argumento para main é a lista real de argumentos da linha de comando, mas esse argumento é ignorado neste programa.
21416 Chris Bouchard

43

HTML, 44 bytes

<ol><li><li><li><li><li><li><li><li><li><li>

Isso é mais longo do que codificar a saída, mas é mais interessante dessa maneira. Ele cria uma lista ordenada ( <ol>) com dez elementos de lista vazios ( <li>). Por padrão, as listas ordenadas são delimitadas por números decimais começando com 1 e um ponto.

O HTML5 perdoa muito as tags não fechadas, por isso fecha as litags implicitamente.


4
+1 por abusar do perdão do HTML5 (?).
HyperNeutrino

1
A sangue frio. Eu amo isso.
Ricdesi

Na verdade, NinjaBearMonkey e @HyperNeutrino, isso não é "perdão" em si; O HTML5 é bastante explícito sobre quais tags podem ser deixadas não fechadas. Só que listas e itens de lista são dois.
KRyan #

41

Bash, 12 caracteres

echo {1..10}

Exemplo de execução:

bash-4.3$ echo {1..10}
1 2 3 4 5 6 7 8 9 10

Bash + coreutils, 10 caracteres

(Apenas tentando ser engraçado e usar ': No such file or directory↵ls: cannot access 'como separador.)

ls {1..10}

Exemplo de execução:

bash-4.3$ ls {1..10}
ls: cannot access '1': No such file or directory
ls: cannot access '2': No such file or directory
ls: cannot access '3': No such file or directory
ls: cannot access '4': No such file or directory
ls: cannot access '5': No such file or directory
ls: cannot access '6': No such file or directory
ls: cannot access '7': No such file or directory
ls: cannot access '8': No such file or directory
ls: cannot access '9': No such file or directory
ls: cannot access '10': No such file or directory

Bash + coreutils, 6 caracteres

(Apenas tentando ser chato. Ou não apenas tentando ...)

seq 10

Exemplo de execução:

bash-4.3$ seq 10
1
2
3
4
5
6
7
8
9
10

6
O último é apenas seq / coreutils, o bash não está envolvido.
hyde 21/07

1
@hyde: Sem o bash, a chamada para seq não seria possível, seria?
Mega Man

Na minha visão, se deixarmos de fora bash, seqseria o intérprete. Mas então 10é um programa válido na linguagem "seq"?
Manatwork

Nunca tente fazer isso no seu console: eco {1..1000000000} Se você estiver curioso, faça por sua conta e risco.
Brain90

@ Brain90, não há perigo na minha má máquina de 8 GB de RAM. ;) “Bash: expansão de chaves: falha ao alocar memória para 1000000000 elementos”. Pelo menos com bash4.3.46.
manatwork

24

Geléia, 2 bytes

⁵R

Explicação

⁵  Return the fifth command line argument or 10
 R Range
   Implicit output

7
⁵R, dois bytes
Luis Mendo

13
Por que diabos alguém inventar uma linguagem em que um comando retorna ou o quinto argumento ou o inteiro 10 ..?
Andreï Kostyrka

14
@ AndreïKostyrka Porque Dennis
TuxCrafting

1
Existe uma codificação onde há apenas um byte? Como possui 3 bytes em UTF-8, o comprimento do programa deve ser de 4 bytes.
Radovan Garabík

2
@ RadovanGarabík Jelly usa sua própria página de códigos
TuxCrafting 26/01

20

Brainfuck, 58 bytes

-[----->+>+<<]>--<+++++[<++<++>>-]<<-[->>>.+<<.<]>>>>--.-.

Experimente online!


1
Bata-me para isso, e mais curto também, postará o meu de qualquer maneira, pois acho que não usamos o mesmo truque. Tenho a minha +1 :)
Katenkyo

Eu estava perto de 67 bytes, mas não perto o suficiente: #++++++[>++++++++<-]>>>++++++++++[-<+<<+>>>]<[-<.+<.>>]<<-[>-<-]>.-.
Julian Lachniet 29/12/16


16

LOLCODE, 79 bytes

IM IN YR l UPPIN YR v TIL BOTH SAEM v AN 10
VISIBLE SUM OF v AN 1
IM OUTTA YR l

Esse código pode precisar de alguns ajustes, dependendo do compilador que você está usando. Alguns querem que você adicione HAI / KTHXBYE, outros querem que você declare a variável com antecedência. Um compilador é interrompido se o nome do seu loop tiver menos de dois caracteres, mesmo que o nome do loop nunca seja usado.


15

CJam, 6 5 bytes

A,:)`

1 byte economizado graças a Luis Mendo

Saída: [1 2 3 4 5 6 7 8 9 10]

Explicação:

A,      e# Push a list from 0 to 9.
  :)    e# Increment all values.
    `   e# Stringify the list.

Experimente online!


3
Eu gosto da carinha sorridente. (Não está lá um erro em sua explicação: A, cria uma lista de 0 a 9)
KarlKastor

14

R, 4 bytes

2:10

O ":" é provavelmente um dos comandos R mais usados. Melhoria por Barranka nos comentários.


2
Se eles exigirem imprimir uma string, não retornando um vetor, considere cat(1:10).
Andreï Kostyrka

Existe um espaço em branco à esquerda?
Clashsoft

9
Dado que a saída é [1] 1 2 3 4 5 6 7 8 9 10, talvez, seria melhor 2:10, qual a saída vontade[1] 2 3 4 5 6 7 8 9 10
Barranka

@ Clashsoft, isso foi um erro - obrigado. E sim, Barranka, bom ponto - votado.
Forgottenscience

13

Ruby, 8 bytes

Separado por novas linhas.

p *1..10

* Separado por novas linhas.
David Conrad

Você pode fazer isso?
Dkudriavtsev 18/10/19

@DmitryKudriavtsev sim, a estrela faz com que o código seja quebrado p 1,2,3,4,5,6,7,8,9,10e as vírgulas façam pcom que sejam separados por novas linhas.
Value Ink

ESTÁ BEM. Eu não acho que o operador tenha uma precedência menor que o alcance.
Dkudriavtsev 18/10/19

11

Pitão, 2 bytes

ST

Primeira vez que usei um idioma de golfe para responder!

Explicação:

S    1-indexed range. [1, 2, ... A].
 T   Variable. Initialized to 10. (Ten)
     Implicitly printed.

Ninja'd por segundos: /
TuxCrafting 21/07


10

Na verdade, 9 bytes

19`;1+`na

Experimente aqui!

Explicação:

19`;1+`na

1           Push 1 to stack
 9          Push 9 to stack
  `;1+`     Push Function inside ` to stack
   ;        Push top element to stack
    1+      Add 1 to top element
       n    Run function x times (9 times)
        a   Invert stack

9
Bem-vindo à Programação de Puzzles e Code Golf!
Adnan

10

Mathematica - 13 bytes

Echo@Range@10

Economizou 4 bytes graças a MartinEnder !

Saída: >> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}


10

JavaScript (ES6), 29 bytes

alert([...`${1e11/81^14}`]+0)

Saídas 1,2,3,4,5,6,7,8,9,10. Não é a resposta mais curta, mas achei que era um cálculo divertido.


por que nãoalert([...'1'+234567891]+0)
edc65 26/07

2
@ edc65 a) não é tão divertido b) não é tão curto quanto a resposta JavaScript postada anteriormente c) não é tão curto quanto alert([...'1234567891']+0).
305 Neil


8

DC , 12 bytes

... um pouco malvado agora ...

[zzpA>L]dsLx

Desenrolado:

[   # start string constant
z   # push stack length (0 on 1st cycle)
z   # push stack length (1 on 1st cycle)
p   # print top of stack
A>L # if 10(decimal) < tos: execute L
]   # end string constant, push it
d   # duplicate the string
sL  # store a copy in L
x   # execute tos (which is the other string copy)

Uma das zoperações (comprimento da pilha de envio) não possui uma operação correspondente que a retira da pilha. Dessa forma, a pilha cresce a cada iteração em um. Isso é abusado como contador de loop.

Esse loop começa com uma pilha vazia; portanto, o 1º zempurra 0a 1ª iteração para que a impressão ocorra após o 2º, o zque corresponde à duplicação do resultado da 1+dversão abaixo. Dessa forma, a comparação precisa testar para maiores do que 10aqui, em vez de bigger than 11abaixo.


DC , 14 bytes

Apenas para a frente ...

1[p1+dB>L]dsLx

Desenrolado:

1   # push 1
[   # start string constant
p   # print top of stack
1+  # add 1 to tos
d   # push tos (duplicate)
B>L # if 11(decimal) < tos: execute L
]   # end string constant, push it
d   # duplicate the string
sL  # store a copy in L
x   # execute tos (which is the other string copy)

Eu gostaria que você explicasse estes = (
Evan Carroll

@EvanCarroll - Escrever dcprogramas é mais fácil do que explicar. Mas eu tentei ... ;-)

7

> <> , 13 bytes

01+:a)?;:nao!

Explicação:

01+:a)?;:nao!

0                 push initial value of n on the stack
 1+               increments n
   :              duplicates n on the stack
    a             push 10 on the stack
     )            pops n and 10 of the stack, push n>10 on the stack
      ?;          if n>10, stops program execution
        :n        duplicates n on the stack in order to display it
          ao      display 10 (x0A, linefeed)
            !     skips the next instruction, which since ><> loops is the push 0

Você pode vê-lo em ação no intérprete online .


Você poderia adicionar uma explicação?
Clashsoft 21/07

1
Execute o programa nao!
Cyoce

@Cyoce> <> é ótimo para escrever peças entusiastas de código, eu tenho essa resposta verificador de engrenagem da motocicleta na mesma linha;)
Aaron


6

J, 6 bytes

1+i.10

Saída: 1 2 3 4 5 6 7 8 9 10

Explicação:

1+       NB. Add one to...
  i.10   NB. A range from 0 to 9.

Meu pensamento era >:i.10, mas é a mesma coisa.
Dane

6

Haskell, 17 bytes

main=print[1..10]

Saídas [1,2,3,4,5,6,7,8,9,10].


Estou um pouco confuso aqui ... Estou quase certo de que deveria estar [1..10]. Não tenho acesso a um compilador haskell, mas checarei duas vezes pela manhã.
Zwei 21/07

As faixas @Zwei não incluem seu limite superior em Haskell.
C. Quilley

1
@ C.Quilley Eles fazem totalmente. Você pode estar pensando em Python.
Xnor

Tinha certeza de ter testado esse código. Desculpas pela afirmação anterior.
C. Quilley

1
Eu não acho que você precise da parte principal =; o restante tem o tipo de um programa haskell, IO (). Corrija-me se houver uma decisão específica contra isso.
Lazersmoke 16/08/16

6

Fuzzy Octo Guacamole, 7 bytes

1.25*$:

Multiplica 2*5, assume o intervalo disso 1e imprime a pilha inteira.

1.25*$:
1.      # Push 1 to the stack and switch stacks
  25*   # Push 10 to the stack
     $  # Push every number in the inclusive range on the top of inactive stack and top of active stack ([1,2,3,4,5,6,7,8,9,10])
      : # Print the stack, which is a list containing the numbers.

6

PowerShell, 5 bytes

1..10

Cria um intervalo dinâmico com o ..operador de 1para 10, então esse array é deixado no pipeline. A saída está implícita. O .ToString()método padrão de uma matriz é nova linha, portanto, ela será separada por nova linha quando executada em um shell limpo.


6

Java 7, 53 51 52 bytes (loop)

void l(){for(int i=0;++i<11;)System.out.println(i);}

Alternativa 51 bytes (codificado permanentemente é mais curto .., mas considerado uma brecha padrão , portanto não é permitido):

void h(){System.out.print("1 2 3 4 5 6 7 8 9 10");}

54 bytes alternativos (recursivos):

int i=1;void r(){System.out.println(i);if(i++<10)r();}

Código não testado e teste para todos os três:

Experimente aqui.

class Main{
  static void h(){
    System.out.print("1 2 3 4 5 6 7 8 9 10");
  }      

  static void l(){
    for(int i=0; ++i < 11;){
      System.out.println(i);
    }
  }

  static int i = 1;
  static void r(){
    System.out.println(i);
    if(i++ < 10){
      r();
    }
  }

  public static void main(String[] a){
    h();
    System.out.println();
    l();
    System.out.println();
    r();
  }
}

EDIT: Para divertidos: Como corretamente apontado por @SkippyLeGrandGourou , a base de 1 a 10 não está especificada na pergunta, então aqui está o código Java (sem código) que gera de 1 a 10 nas bases 2 a 10:

Experimente aqui.

BASE-2: 1 10 
BASE-3: 1 2 10 
BASE-4: 1 2 3 10 
BASE-5: 1 2 3 4 10 
BASE-6: 1 2 3 4 5 10 
BASE-7: 1 2 3 4 5 6 10 
BASE-8: 1 2 3 4 5 6 7 10 
BASE-9: 1 2 3 4 5 6 7 8 10 
BASE-10: 1 2 3 4 5 6 7 8 9 10 

Loop pode ser for(int i=1;i<11;)System.out.println(i++), economiza um byte.
Clashsoft 21/07/16

@ zyabin101 Alterou o pedido para que a resposta codificada não seja competitiva. Ainda deixado na resposta, porém, uma vez que é muito engraçado (e triste) que codificado é o caminho mais curto para imprimir 1-10 em Java 7 ..
Kevin Cruijssen

2
@ zyabin101 Exceto quando a pergunta é marcada com complexidade kolmogorov .
Neil

@ Neil Oh, certo. o_o
user48538

1
O Java 8 é o vencedor claro aqui, graças às lambdas! ()->java.util.stream.IntStream.range(1,11).forEach(System.out::println). Por que você diz que é mais longo? É Java 8 ... Java 8 é mais curto por padrão! Eu nem coloquei aparelho antes e depois do código! Posso contar até 98 sem ter um personagem extra! Vejo? Regras do Java 8!
Olivier Grégoire

6

Perl 6, 12 bytes

say @(1..10)

A @()é necessária para converter para uma matriz

Solução alternativa:

say @(^10+1)

Cria um intervalo [0,10), depois adiciona um e depois converte em um array.


Para Perl 5.10, 14 bytes e quase como o seu:say for(1..10)
Paul Picard

@PaulPicard do post! Perl 5 é um idioma diferente.
Ven

Você pode remover o espaço para say@(1..10)?
Cyoce

@Cyoce infelizmente não, é um erro.
Ven

5

Python2 - 19 17 bytes

print range(1,11)

Guardado 1 byte, graças a KevinLau - não Kenny !

Saída: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


Use em rangevez de xrange, assumindo o Python 2. De fato, esta versão atual parece não funcionar na minha máquina nas versões do Python.
Value Ink

@ KevinLau-notKenny Eu poderia jurar que tentei isso e não tenho nada a dizer. Obrigado!
Yytsi 21/07

Importante: É apenas Python 2
Mega Man

1
@ABcDexter Eu verifiquei, muito bom! O motivo de eu não usar o Python3 foi porque fui forçado a converter o rangeobjeto que retorna um iterador em uma lista.
Yytsi 23/07/16

1
@TuukkaX Sim, exatamente. Vou tentar outras línguas também. Obrigado :).
ABCDexter

5

Vim, 12 bytes

i1<Esc>qqYp<C-a>q8@q

Saídas

1
2
3
4
5
6
7
8
9
10

Explicação:

i1<Esc>qqYp<C-a>q8@qZZ
       qqYp<C-a>q      -- Macro q: duplicate line and increment (6)
i1<Esc>                -- Insert 1 (3)
                 8@q   -- Run macro q 8 times (3)

Testado no Neovim 0.1.4, que é do meu conhecimento compatível com o pressionamento de tecla do Vim.


Agradável. Eu inventei iYp<C-v><C-a>1<Esc>d^9@-ZZ. Contagem de mesmos bytes.
primo



4

Groovy, 11 caracteres

print 1..10

Exemplo de execução:

bash-4.3$ groovy -e 'print 1..10'
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

4

JavaScript, 25 24 bytes

for(i=1;i<11;)alert(i++)

1
Bem-vindo ao PPCG! Eu acho que você pode salvar um byte fazendo alert(i++)(e removendo o outro i++).
Martin Ender

Pena que a pergunta estipule que a ordem deve estar em ascensão; caso contrário, você poderia ter salvo um byte usando um loop decrescente em vez do loop for i=10;while(i)alert(i--).
precisa saber é o seguinte

O código não precisa ser incorporado em uma função?
ericw31415

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.