Liste des versions Python

36

Python est le principal langage de programmation dont la croissance est la plus rapide. Il s'agit de la langue la plus demandée pour la troisième année consécutive, ce qui signifie que les développeurs qui ne l'utilisent pas encore disent vouloir l'apprendre. [1]

La popularité de Python tient à ses nombreuses versions. [citation nécessaire] Il existe en fait 116 versions de Python, y compris deux versions de développement.

Votre tâche consiste à imprimer / imprimer une liste de toutes les versions de Python, dans l'ordre de votre choix et dans le format de votre choix. Vous ne pouvez utiliser aucune fonction intégrée dans laquelle ces informations sont stockées.

Vous êtes libre de choisir le format de sortie, mais chaque version doit être identifié sur la manière standard: 1.1, 2.3.0, 2.7.10et ainsi de suite.

La liste complète 2 des versions de Python, séparées par des virgules, est présentée ci-dessous:

1.1, 1.2, 1.3, 1.4, 1.5, 1.5.1, 1.5.2, 1.6, 2.0, 2.0.1, 2.1, 2.1.1, 2.1.2, 2.1.3, 2.2, 2.2.1, 2.2.2, 2.2.3, 2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.4, 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.5, 2.5.1, 2.5.2, 2.5.3, 2.5.4, 2.6, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8, 2.6.9, 2.7, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10, 2.7.11, 2.7.12, 2.7.13, 2.7.14, 2.7.15, 2.7.16, 3.0, 3.0.1, 3.1, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.2 , 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7, 3.4.0, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 3.4.10, 3.5.0, 3.5.1, 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6, 3.5.7, 3.6.0, 3.6.1, 3.6.2, 3.6.3, 3.6.4, 3.6.5, 3.6.6, 3.6.7, 3.6.8, 3.7.0, 3.7.1, 3.7.2, 3.7.3

ou par versions majeures:

1.1
1.2
1.3
1.4
1.5, 1.5.1, 1.5.2
1.6
2.0, 2.0.1
2.1, 2.1.1, 2.1.2, 2.1.3
2.2, 2.2.1, 2.2.2, 2.2.3
2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5
2.4, 2.4.1, 2.4.2, 2.4.3, 2.4.4
2.5, 2.5.1, 2.5.2, 2.5.3, 2.5.4
2.6, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8, 2.6.9
2.7, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10, 2.7.11, 2.7.12, 2.7.13, 2.7.14, 2.7.15, 2.7.16
3.0, 3.0.1
3.1, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5
3.2, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6
3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7
3.4.0, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 3.4.10 
3.5.0, 3.5.1, 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6, 3.5.7
3.6.0, 3.6.1, 3.6.2, 3.6.3, 3.6.4, 3.6.5, 3.6.6, 3.6.7, 3.6.8
3.7.0, 3.7.1, 3.7.2, 3.7.3

Le défi est un défi de production fixe, et très proche d’un , sauf que le format de sortie est optionnel.

2 La liste est extraite du site Web officiel de Python, ici et ici . Certaines versions ne sont pas incluses, telles que 0.9.0.. 0.9.9et 1.5.1p1. Vous devez utiliser la liste ci-dessus, même si vous trouvez des versions qui ne sont pas incluses. J'ai décidé de m'en tenir aux listes officielles, car sinon quelqu'un trouverait probablement une 2.1.0.1.2version ou quelque chose du genre.

Stewie Griffin
la source
2
Je suppose que nous ne sommes pas autorisés à sortir 1.1.0(pour faire toutes les versions 3 numéros) au lieu de 1.1?
Kevin Cruijssen le
2
Vous devinez correctement @ Kevin. J'ai envisagé de permettre cela, mais je suis allé plutôt avec les noms officiels
Stewie Griffin le

Réponses:

17

JavaScript (ES6),  128 125  124 octets

Enregistré 1 octets grâce à @ OlivierGrégoire

Affiche chaque version sur une ligne séparée. Ordonné de la version majeure la plus élevée à la plus basse, et de la révision la plus basse à la plus haute.

f=(r=v=28)=>v?r<parseInt('0111131000244655ah002678b8940'[v],36)?(1+v/10).toFixed(1)+(r|v>22?'.'+r:'')+`
`+f(r+1):f(+!v--):''

Essayez-le en ligne!

Comment?

v[0..27]

  • v/10+1
  • vmod10

r0rv0

v>220

Arnauld
la source
5

C # (compilateur interactif Visual C #) , 109 octets

for(int j,k=1;;k++)for(j=@" [SOH][SOH][SOH][SOH][ETX][SOH][NUL][NUL][NUL][STX][EOT][EOT][ACK][ENQ][ENQ]
[DC1][NUL][NUL][STX][ACK][BEL][BS][VT][BS][TAB][EOT]"[k];j-->0;)Print($"{k*.1+1:N1}"+(j<1&k<17?"":"."+j));

Contient de nombreux non imprimables, dont les codes sont indiqués entre parenthèses. Ceci est un programme complet. Les octets nuls sont remplacés par \0s dans le lien TIO, car mon appareil ne peut pas les copier et les coller.

Sauvegardé d'un octet grâce à @OlivierGregoire.

Essayez-le en ligne! (Merci à @OlivierGregoire pour l'implantation des octets nuls)

Explication

Chaque caractère de la chaîne représente le nombre de versions mineures en position principale. Par exemple, le caractère à l’index 5 ( ETX) a une valeur ASCII de trois et correspond à la version principale.1.5.x qui comporte trois versions mineures. Le programme prend la valeur ascii du caractère actuel et le répète en boucle, en imprimant les versions mineures avant de passer à la version majeure suivante.

Pour certaines versions, il y a des lacunes dans les versions suivantes. Pour résoudre ce problème, la chaîne contient des octets nuls, de sorte que le programme effectue une boucle zéro fois lorsqu'il les rencontre.

La chaîne non imprimable contient les valeurs suivantes:

1,1,1,1,3,1,0,0,0,2,4,4,6,5,5,10,17,0,0,2,6,7,8,11,8,9,4
Incarnation de l'ignorance
la source
Peut être raccourci avec j="..."[k];j-->0;, d'autant plus que l'ordre n'a pas d'importance. Aussi, pouvez-vous expliquer la différence de taille entre le TIO (115 octets) et l'entrée (110 octets)?
Olivier Grégoire
@ OlivierGrégoire Probablement les cinq octets nuls que tio représentent comme \ 0
Sefa
@Sefa oui, probablement ... Mais je demande une certitude.
Olivier Grégoire
@ OlivierGrégoire Exactement ce que dit Sefa, je ne peux pas vraiment copier-coller les octets nuls. Si les \0s étaient remplacés par des octets nuls, il s'agirait de 110 octets
Incarnation of Ignorance
1
Alors, vous voilà avec un octet nul TIO
Olivier Grégoire
4

Pyth, 52 octets

.emj\.+W|d>k18,h/k8%k8dbxLG"abbbbdbaceegffkrcghilije

Essayez-le en ligne ici .

La sortie est une liste imbriquée, avec des éléments regroupés par version majeure et mineure. Il existe une liste vide au début de la sortie et une autre après 1.6. La sortie complète est la suivante:

[[], ['1.1'], ['1.2'], ['1.3'], ['1.4'], ['1.5', '1.5.1', '1.5.2'], ['1.6'], [], ['2.0', '2.0.1'], ['2.1', '2.1.1', '2.1.2', '2.1.3'], ['2.2', '2.2.1', '2.2.2', '2.2.3'], ['2.3', '2.3.1', '2.3.2', '2.3.3', '2.3.4', '2.3.5'], ['2.4', '2.4.1', '2.4.2', '2.4.3', '2.4.4'], ['2.5', '2.5.1', '2.5.2', '2.5.3', '2.5.4'], ['2.6', '2.6.1', '2.6.2', '2.6.3', '2.6.4', '2.6.5', '2.6.6', '2.6.7', '2.6.8', '2.6.9'], ['2.7', '2.7.1', '2.7.2', '2.7.3', '2.7.4', '2.7.5', '2.7.6', '2.7.7', '2.7.8', '2.7.9', '2.7.10', '2.7.11', '2.7.12', '2.7.13', '2.7.14', '2.7.15', '2.7.16'], ['3.0', '3.0.1'], ['3.1', '3.1.1', '3.1.2', '3.1.3', '3.1.4', '3.1.5'], ['3.2', '3.2.1', '3.2.2', '3.2.3', '3.2.4', '3.2.5', '3.2.6'], ['3.3.0', '3.3.1', '3.3.2', '3.3.3', '3.3.4', '3.3.5', '3.3.6', '3.3.7'], ['3.4.0', '3.4.1', '3.4.2', '3.4.3', '3.4.4', '3.4.5', '3.4.6', '3.4.7', '3.4.8', '3.4.9', '3.4.10'], ['3.5.0', '3.5.1', '3.5.2', '3.5.3', '3.5.4', '3.5.5', '3.5.6', '3.5.7'], ['3.6.0', '3.6.1', '3.6.2', '3.6.3', '3.6.4', '3.6.5', '3.6.6', '3.6.7', '3.6.8'], ['3.7.0', '3.7.1', '3.7.2', '3.7.3']]

Si cela n'est pas acceptable, ajoutez .nau code une sortie sous forme de liste aplatie au coût de 2 octets.

Sok
la source
4

Java (JDK) , 134 octets

v->{for(int a=0,b;;)for(b="0111131000244655:A002678;894".charAt(++a)-48;b-->0;)System.out.printf("%.1f%s ",a*.1+1,b<1&a<23?"":"."+b);}

Essayez-le en ligne!

Les versions sont imprimées du plus haut au plus bas.

Crédits

Olivier Grégoire
la source
1
(a>1|b>0)&c<a.valueOf(y,36)peut être a>1|b>0&&c<a.valueOf(y,36)et c<1&(a<3|b<3)?peut être c<1&&a<3|b<3?de sauver 2 octets. Conseil Java pertinent - section Combinaison de contrôles binaires et logiques au lieu de parenthèses
Kevin Cruijssen
@KevinCruijssen Merci, mais j'ai apporté tellement de modifications que vos suggestions ne sont plus pertinentes ... Je ne sais pas comment vous créditer, car je n'utilise même plus votre suggestion :(
Olivier Grégoire
1
Np, au lieu de cela, je proposerai un nouveau golf;) /10dpeut être*.1
Kevin Cruijssen
1
int a=28-> int a=1, et supprimez la condition dans la boucle for, puis ajoutez un a++pour enregistrer 3 octets. TIO
Incarnation de l'Ignorance
3

Retina , 105 octets


11* 111131   244655TS  2678E894
L$`.
$&_$.`
T
10
E
11
S
17
.+_
*
Lv$`_+(.)(.)
$1.$2.$.%`
,16`(...)\.0
$1

Essayez-le en ligne! Librement inspiré de la solution de @ Arnauld. Explication:


11* 111131   244655TS  2678E894

Insérer la chaîne composée de 11 espaces suivis des caractères donnés.

L$`.
$&_$.`

Pour chaque caractère, listez-le avec le suffixe et un _numéro de colonne.

T
10
E
11
S
17

Convertissez les trois lettres en valeurs numériques.

.+_
*

Convertissez les valeurs numériques en unaires.

Lv$`_+(.)(.)
$1.$2.$.%`

Pour chaque valeur allant jusqu'à la valeur donnée, utilisez-le comme suffixe pour le numéro de version, en extrayant les majeures et les mineures du numéro de colonne.

,16`(...)\.0
$1

Supprimez le suffixe zéro pour les 16 premières versions qui en ont une.

Neil
la source
2

Gelée , 51 octets

+⁵D;ⱮḶ}j€”.
“øṄƇịɱ⁽Ɱj>⁶7,Ẉ¢’b18Ė0ị$Ƈç/€ḣ3$€1¦€17R¤¦

Essayez-le en ligne!

Un lien niladique qui produit une liste de listes d' .entiers séparés par groupes de versions majeures. Sur TIO, il existe un code de bas de page pour les imprimer joliment.

Nick Kennedy
la source
0

33 , 484 octets

"1."es[lz1azpois4m]"1.5"pi"1.5."z1apoiapoi"1.6"pi"2.0"pip".1"pizcz"2.1"''pie"."e''es[lz1azpois3m]"2.2"''pie"."et''es[lz1azpois3m]"2.3"''pie"."et''es[lz1azpois5m]"2.4"''pie"."et''es[lz1azpois4m]"2.5"''pie"."et''es[lz1azpois4m]"2.6"''pie"."et''es[lz1azpois9m]"2.7"''pie"."et''es[lz1azpois16m]"3.0"pip".1"pi"3.1"''pie"."et''es[lz1azpois5m]"3.2"''pie"."et''es[lz1azpois6m]"3.3."''es[lzpoi1azs8m]"3.4."''es[lzpoi1azs11m]"3.5."''es[lzpoi1azs8m]"3.6."''es[lzpoi1azs9m]"3.7."''es[lzpoi1azs4m]

Je voulais essayer ceci dans mon langage de style brainf * ck.

Il imprime chaque version de python requise pour le défi, délimitée par des nouvelles lignes.

Voici une petite explication.

[lz1azpois4m] | Imitates a for loop starting at 1
[  1az    4m] | For i in range 1 through 4
      p       | - Print the string declared previously (1.5., 3.4., etc.)
       o      | - Print the current value of i
        i     | - Print a newline

[lzpoi1azs8m] | Imitates a for loop starting at 0
[     1az 8m] | For i in range 0 through 7
   poi        | Print the version
TheOnlyMrCat
la source