Estoy trabajando en un problema que me puse divertido, que es crear un script de Python que imprima los números pares del 0 al 100. El desafío es hacer que el script sea lo más pequeño posible. Esto es lo que tengo hasta ahora:
for x in range(0, 101):
if (x % 2 == 0):
print x
Actualmente es de 60 bytes. ¿Alguien puede pensar en una manera de hacerlo más pequeño?
Editar: print(*range(2,101,2),sep='\n')
que es de 30 bytes. Cualquier menor?
i=2;exec"print i;i+=2;"*50
0
o2
? No uso mucho Python, pero me parece que sus dos ejemplos hacen cosas diferentes. Por favor corrígeme si no.print "0 10 100"
(¿binario está bien?)Respuestas:
Python 2 - 12 caracteres
La representación decimal de todos los números pares del 0 al 100 se puede encontrar en la salida:
Como beneficio adicional, también pueden hacerlo los números impares.
fuente
Python 3, 22 (posiblemente no permitido)
Si el desafío es "crear un script de Python que imprima los números pares de 0 a 100" y no "crear un script de Python que imprima los números pares de 0 a 100, separados por una nueva línea ", entonces la solución más corta es:
Recuerde, es muy importante en el golf de código que no se imponga limitaciones a sí mismo que no tiene que hacer: hacer lo que el problema le pida y nada más.
fuente
possibly not allowed
está en el título. Por otro lado, también es posible que él / ella se haya quedado atrapado en la coincidencia de la salida de su programa inicial y haya olvidado la especificación del problema inicial. Como no sé cuál es el caso, di esta respuesta.Python2 26
descubrimiento independiente de la solución de @ bitpwner
fuente
Python 2 - 26
Basado en la sugerencia de ejecución con multiplicación de cuerdas que se encuentra en Consejos para jugar golf en Python .
fuente
Python 2, 26 (posiblemente no permitido)
No se especificó estrictamente, en qué orden se iban a imprimir los números.
fuente
Pitón 2, 28
fuente
Python 2 - 20 (posiblemente no permitido)
Esto es específico de Python 2 y probablemente hace trampa ya que imprime la lista, pero dado que todos los números terminan en la pantalla:
fuente
Python 2 en * NIX, 24
Si necesitas agregar
Entonces el total es de 33 caracteres.
fuente
os.system
llama a un programa del sistema.os.system('a')
, porque tengo un programa llamadoa
con el comportamiento deseado en mi sistema ...Pitón 3, 29
Si está en Python 2 y ya ha importado la función de impresión, no tiene que convertir el objeto iterador en una lista y se convierte en 25 caracteres:
Sin embargo, no sé si eso sea completamente justo.
Aquí hay otra idea divertida que funciona en Python 2 o 3. Es un poco más larga.
fuente
*a,=map(print,range(0,101,2))
usar el Desembalaje Iterable Extendido .Python 2 - 24
(basado en la solución Bitpwner y Sparr)
En el shell, "_" contiene el valor de la expresión evaluada previamente
fuente
range(0,102,2)
ya que esto mostraría todos los números pares (más algunas comas y dos corchetes) en la pantalla.Comprensión de la lista de Python - 39
Esto utiliza una comprensión de la lista, un truco para hacerlo más corto es multiplicar el índice por 2 en lugar de pasar de 0 a 100 y una
if x % 2
verificación final para pares.Usando un mapa y la sugerencia de @ isaacg, termina siendo los mismos 39 caracteres:
Editar: después de separar los valores por nueva línea, con mucho, no es el más corto.
fuente
prints the even numbers from 0 to 100
, no solo generarlos. Además, si solo quieres la lista,range(0,101,2)
es más corta.Python 2 - 20 (cuestionable)
Si la solución separada por espacios de isaacg está bien, entonces presumiblemente el formato de lista normal también es:
Para una mayor torsión de reglas, aplique la sugerencia de SirBraneDamuj de los comentarios:
y estás en 16. Entonces, ¿qué pasa si hay algo de basura adicional que los separa?
fuente