Estou trabalhando em um problema que me propus por diversão, que é criar um script python que imprima os números pares de 0 a 100. O desafio é tornar o script o menor possível. Isto é o que eu tenho até agora:
for x in range(0, 101):
if (x % 2 == 0):
print x
Atualmente, são 60 bytes. Alguém pode pensar em uma maneira de torná-lo menor?
Editar: print(*range(2,101,2),sep='\n')
que é 30 bytes. Qualquer menor?
i=2;exec"print i;i+=2;"*50
0
ou2
? Eu não python muito, mas me parece que seus dois exemplos fazem coisas diferentes. Por favor, corrija-me se não.print "0 10 100"
(é binário OK?)Respostas:
Python 2 - 12 caracteres
A representação decimal de todos os números pares de 0 a 100 pode ser encontrada na saída:
Como bônus, os números ímpares também.
fonte
Python 3, 22 (possivelmente não permitido)
Se o desafio é "criar um script python que imprima os números pares de 0 a 100" e não "criar um script python que imprima os números pares de 0 a 100, nova linha separada ", a solução mais curta é:
Lembre-se de que é muito importante no código golf não impor limitações a si mesmo que você não precisa - faça o que o problema pede e nada mais.
fonte
possibly not allowed
está no título. Por outro lado, também é possível que ele / ela seja pego na correspondência do resultado do seu programa inicial e tenha esquecido a especificação do problema inicial. Como não sei qual é o caso, dei essa resposta.Python2 26
descoberta independente da solução da @ bitpwner
fonte
Python 2-26
Com base na dica sobre exec, com multiplicação de strings, encontrada em Dicas para jogar golfe em Python .
fonte
Python 2, 26 (possivelmente não permitido)
Não foi especificado estritamente, em que ordem os números seriam impressos.
fonte
Python 2, 28
fonte
Python 2 - 20 (Possivelmente não permitido)
Isso é específico do python 2 e provavelmente engana, pois imprime a lista, mas como todos os números acabam na tela:
fonte
Python 2 em * NIX, 24
Se você precisar adicionar
Em seguida, o total é de 33 caracteres.
fonte
os.system
chama um programa de sistema.os.system('a')
, porque eu tenho um programa chamadoa
com o comportamento desejado no meu sistema ..Python 3, 29
Se você está no Python 2 e já importou a função de impressão, não é necessário transformar o objeto iterador em uma lista e ele se torna 25 caracteres:
Não sei se isso é totalmente justo.
Aqui está outra idéia divertida que funciona no python 2 ou 3. É um pouco mais longo.
fonte
*a,=map(print,range(0,101,2))
uso da Descompactação Iterável Estendida .Python 2-24
(com base na solução bitpwner e Sparr)
No shell, "_" contém o valor da expressão avaliada anteriormente
fonte
range(0,102,2)
já que isso exibirá todos os números pares (mais algumas vírgulas e dois colchetes) na tela.Compreensão da lista em Python - 39
Isso usa uma compreensão de lista, um truque para reduzi-lo é multiplicar o índice por 2, em vez de ir de 0 a 100 e fazer uma
if x % 2
verificação final para o par.Usando um mapa e a sugestão de @ isaacg, ele acaba tendo os mesmos 39 caracteres:
Editar: Após separar os valores por nova linha, não é de longe o menor.
fonte
prints the even numbers from 0 to 100
, não apenas os gera. Além disso, se você quiser apenas a lista,range(0,101,2)
é menor.Python 2-20 (questionável)
Se a solução separada por espaço do isaacg estiver OK, presumivelmente a formatação normal da lista também será:
Para distorcer ainda mais as regras, aplique a sugestão de SirBraneDamuj nos comentários:
e você tem 16 anos. E se houver algum lixo extra separando-os?
fonte