Lista de versiones de Python

36

Python es el lenguaje de programación principal de más rápido crecimiento en la actualidad. Es el idioma más buscado por tercer año consecutivo, lo que significa que los desarrolladores que aún no lo usan dicen que quieren aprenderlo. [1]

La razón de la popularidad de Python son sus muchas versiones. [cita requerida] De hecho, hay 116 versiones de Python, incluidas dos versiones de desarrollo.

Su tarea es generar / imprimir una lista de todas las versiones de Python, en el orden que desee y en el formato que desee. No puede usar ninguna función integrada que tenga esta información almacenada.

Usted es libre de elegir el formato de salida, pero cada versión debe ser identificado en la forma estándar: 1.1, 2.3.0, 2.7.10y así sucesivamente.

La lista completa 2 de versiones de Python, separadas por comas, se muestra a continuación:

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

o por versiones principales:

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

El desafío es un desafío de salida fijo, y muy cercano a un , excepto que el formato de salida es opcional.

2 La lista está tomada del sitio web oficial de Python, aquí y aquí . Hay algunas versiones que no están incluidas, como 0.9.0.. 0.9.9y 1.5.1p1. Debe usar la lista anterior, incluso si encuentra versiones que no están incluidas. He decidido seguir con las listas oficiales, ya que de lo contrario alguien probablemente encontraría una 2.1.0.1.2versión o algo así.

Stewie Griffin
fuente
2
Creo que no se nos permite a la salida 1.1.0(para hacer todas las versiones 3 números) en lugar de 1.1?
Kevin Cruijssen
2
Adivinas correctamente @Kevin. Pensé en permitirlo, pero en su lugar fui con los nombres oficiales.
Stewie Griffin

Respuestas:

17

JavaScript (ES6),  128 125  124 bytes

Guardado 1 bytes gracias a @ OlivierGrégoire

Emite cada versión en una línea separada. Ordenado de mayor a menor versión principal, y de menor a mayor revisión.

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

Pruébalo en línea!

¿Cómo?

v[0..27]

  • v/ /10+1
  • vmod10

r0 0rv0 0

v>220 0

Arnauld
fuente
5

C # (compilador interactivo de Visual C #) , 109 bytes

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));

Contiene muchos no imprimibles, cuyos códigos se muestran entre paréntesis. Este es un programa completo. Los bytes nulos se reemplazan por \0s en el enlace TIO, ya que mi dispositivo no puede copiarlos ni pegarlos.

Guardado un byte gracias a @OlivierGregoire.

Pruébalo en línea! (Gracias a @OlivierGregoire por implantar los bytes nulos)

Explicación

Cada carácter en la cadena representa cuántas versiones menores en la posición principal. Por ejemplo, el carácter en el índice 5 ( ETX) tiene un valor ASCII de tres y corresponde a la versión principal 1.5.xque tiene tres versiones menores. El programa toma el valor ASCII del personaje actual y repite muchas veces, imprimiendo las versiones menores antes de pasar a la siguiente versión principal.

Para algunas versiones, hay lagunas en las próximas versiones. Para arreglar eso, la cadena contiene bytes nulos, de modo que el programa se repite cero veces cuando los encuentra.

La cadena no imprimible contiene estos valores de caracteres:

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
Encarnación de la ignorancia
fuente
Se puede acortar j="..."[k];j-->0;, especialmente porque el pedido no tiene importancia. Además, ¿puede explicar la diferencia de tamaño entre el TIO (115 bytes) y la entrada (110 bytes)?
Olivier Grégoire
@ OlivierGrégoire Probablemente los cinco bytes nulos que tio representan como \ 0
Sefa
@Sefa sí, probablemente ... Pero estoy pidiendo seguridad.
Olivier Grégoire
@ OlivierGrégoire Exactamente lo que dijo Sefa, realmente no puedo copiar y pegar los bytes nulos. Si los \0s fueran reemplazados por bytes nulos, serían 110 bytes
Encarnación de la ignorancia
1
Entonces, aquí estás, con un TIO de nul-byte
Olivier Grégoire
4

Pyth, 52 bytes

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

Pruébelo en línea aquí .

La salida es una lista anidada, con elementos agrupados por versión mayor y menor. Hay una lista vacía al comienzo de la salida y otra después 1.6. La salida completa es la siguiente:

[[], ['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 esto no es aceptable, anteponga .nal código para que salga como una lista aplanada, a un costo de 2 bytes.

Sok
fuente
4

Java (JDK) , 134 bytes

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);}

Pruébalo en línea!

Las versiones se imprimen de mayor a menor.

Créditos

Olivier Grégoire
fuente
1
(a>1|b>0)&c<a.valueOf(y,36)puede ser a>1|b>0&&c<a.valueOf(y,36)y c<1&(a<3|b<3)?puede ser c<1&&a<3|b<3?para guardar 2 bytes. Sugerencia relevante de Java: sección Combinación de comprobaciones lógicas y de bits en lugar de utilizar paréntesis
Kevin Cruijssen
@KevinCruijssen Gracias, pero hice tantos cambios que tus sugerencias ahora son irrelevantes ... No sé cómo acreditarte ya que ya ni siquiera uso tu sugerencia :(
Olivier Grégoire
1
Np, en cambio sugeriré un nuevo golf;) /10dpuede ser*.1
Kevin Cruijssen
1
int a=28-> int a=1, y elimine la condición en el bucle for, luego agregue un a++para guardar 3 bytes. TIO
Encarnación de la ignorancia
@EmbodimentofIgnorance Dado que REPL parece aceptado en este desafío, eso es realmente aceptable. ¡Gracias!
Olivier Grégoire
3

Retina , 105 bytes


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

Pruébalo en línea! Basada en la solución de @ Arnauld. Explicación:


11* 111131   244655TS  2678E894

Inserte la cadena que consta de 11 espacios seguidos de los caracteres dados.

L$`.
$&_$.`

Para cada carácter, enumere el sufijo con ay _su número de columna.

T
10
E
11
S
17

Convierte las tres letras en valores numéricos.

.+_
*

Convierta los valores numéricos a unarios.

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

Para cada valor hasta el valor dado, úselo como sufijo para el número de versión, extrayendo el mayor y el menor del número de columna.

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

Elimine el sufijo cero para las primeras 16 versiones que tienen uno.

Neil
fuente
2

Jalea , 51 bytes

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

Pruébalo en línea!

Un enlace niládico que genera una lista de listas de .enteros separados, agrupados por versión principal. En TIO, hay un código de pie de página para imprimirlos de forma bonita.

Nick Kennedy
fuente
0

33 , 484 bytes

"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]

Quería probar esto en mi lenguaje de estilo brainf * ck.

Imprime cada versión de Python requerida para el desafío, delimitada por nuevas líneas.

Aquí hay una pequeña explicación.

[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
fuente