Je travaille sur un problème que je me suis fixé pour le plaisir, qui est de créer un script python qui imprime les nombres pairs de 0 à 100. Le défi est de rendre le script le plus petit possible. Voici ce que j'ai jusqu'à présent:
for x in range(0, 101):
if (x % 2 == 0):
print x
Actuellement, il est de 60 octets. Quelqu'un peut-il penser à un moyen de le réduire?
Edit: print(*range(2,101,2),sep='\n')
qui est de 30 octets. Tout petit?
i=2;exec"print i;i+=2;"*50
0
ou2
? Je ne python pas beaucoup, mais il me semble que vos deux exemples font des choses différentes. Veuillez me corriger sinon.print "0 10 100"
(est binaire OK?)Réponses:
Python 2 - 12 caractères
La représentation décimale de tous les nombres pairs de 0 à 100 peut être trouvée dans la sortie:
En prime, les nombres impairs peuvent aussi.
la source
Python 3, 22 (éventuellement non autorisé)
Si le défi est "de créer un script python qui imprime les nombres pairs de 0 à 100" et non "de créer un script python qui imprime les nombres pairs de 0 à 100, séparés par des sauts de ligne ", alors la solution la plus courte est:
N'oubliez pas, il est très important dans le golf de code de ne pas vous imposer de limites, vous n'avez pas à le faire - faites ce que le problème demande, et pas plus.
la source
possibly not allowed
est dans le titre. D'un autre côté, il est également possible qu'il / elle se soit retrouvé (e) à faire correspondre la sortie de son programme initial et ait oublié la spécification de problème initiale. Comme je ne sais pas quel est le cas, j'ai donné cette réponse.Python2 26
découverte indépendante de la solution de @ bitpwner
la source
Python 2 - 26
Basé sur l'astuce sur l'exec avec multiplication de chaînes trouvée sur Tips for golfing in Python .
la source
Python 2, 26 (éventuellement non autorisé)
Il n'était pas strictement spécifié, dans quel ordre les numéros devaient être imprimés.
la source
Python 2, 28
la source
Python 2 - 20 (éventuellement non autorisé)
C'est spécifique à Python 2 et probablement à la tricherie car il imprime la liste, mais puisque tous les nombres finissent à l'écran:
la source
Python 2 dans * NIX, 24
Si vous devez ajouter
Le total est alors de 33 caractères.
la source
os.system
appelle un programme système.os.system('a')
, parce que j'ai un programme appeléa
avec le comportement souhaité sur mon système ..Python 3, 29
Si vous êtes en Python 2 et que vous avez déjà importé la fonction d'impression, vous n'avez pas besoin de faire l'objet itérateur dans une liste et il devient 25 caractères:
Je ne sais pas si c'est tout à fait juste cependant.
Voici une autre idée amusante qui fonctionne en python 2 ou 3. C'est un peu plus long.
la source
*a,=map(print,range(0,101,2))
utiliser le déballage terrable étendu .Python 2-24
(basé sur la solution bitpwner et Sparr)
Dans le shell, "_" contient la valeur de l'expression précédemment évaluée
la source
range(0,102,2)
puisque cela afficherait tous les nombres pairs (plus quelques virgules et deux crochets) à l'écran.Compréhension de la liste Python - 39
Cela utilise une compréhension de liste, une astuce pour la raccourcir est de multiplier l'index par 2 plutôt que de passer de 0 à 100 et une
if x % 2
vérification de fin pour pair.En utilisant une carte et la suggestion de @ isaacg, cela finit par être les mêmes 39 caractères:
Edit: Après avoir séparé les valeurs par un saut de ligne, ce n'est de loin pas le plus court.
la source
prints the even numbers from 0 to 100
, pas seulement les générer. De plus, si vous voulez juste que la listerange(0,101,2)
soit plus courte.Python 2 - 20 (questionable)
If isaacg's space-separated solution is OK, then presumably the normal list formatting is as well:
For further rule-twisting, apply SirBraneDamuj's suggestion from the comments:
and you are at 16. So what if there's some extra garbage separating them?
la source