Список версій Python


36

Python - це найбільш швидко зростаюча основна мова програмування на сьогодні. Це найпопулярніша мова вже третій рік поспіль, тобто розробники, які ще не користуються нею, кажуть, що хочуть її вивчити. [1]

Причиною популярності Python є його безліч версій. [потрібна цитата] Насправді існує 116 версій Python, включаючи дві версії розробки.

Ваше завдання - вивести / надрукувати список усіх версій Python у будь-якому порядку, який ви хочете, та в будь-якому форматі, який вам подобається. Ви не можете використовувати будь-які вбудовані функції, які зберігають цю інформацію.

Ви можете вибрати вихідний формат, але кожен варіант повинен бути ідентифікований по стандартному шляху: 1.1, 2.3.0, 2.7.10і так далі.

Повний список 2 версій Python, розділених комами, показаний нижче:

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

або за основними версіями:

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

Виклик - це фіксований вихідний виклик і дуже близький до , за винятком того, що вихідний формат не є обов'язковим.

2 Список взято з офіційного веб-сайту Python, тут і тут . Є деякі версії, які не включені, наприклад, 0.9.0.. 0.9.9і 1.5.1p1. Ви повинні скористатися списком вище, навіть якщо ви знайдете версії, які не включені. Я вирішив дотримуватися офіційних списків, оскільки інакше хтось, мабуть, знайде 2.1.0.1.2версію чи щось подібне.


2
Я думаю, нам не дозволяється виводити 1.1.0(щоб зробити всі версії 3 числа) замість 1.1?
Кевін Кройсейсен

2
Ви правильно здогадалися @Kevin. Я вважав, що це дозволяю, але натомість пішов з офіційними іменами.
Стюі Гріффін

Відповіді:


17

JavaScript (ES6),  128 125  124 байт

Збережено 1 байт завдяки @ OlivierGrégoire

Виводить кожну версію в окремий рядок. Упорядковано від найвищої до найнижчої основної версії та від найнижчої до найвищої версії.

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

Спробуйте в Інтернеті!

Як?

Основні та другорядні версії містяться в змінній :v[0..27]

  • major =v/10+1
  • мінор =vмод10

Ревізія проводиться в змінній . Максимальне значення залежить від і зберігається в таблиці пошуку, закодованої в Base-36. Будь-який у цій таблиці означає, що ця версія взагалі не була випущена.r0rv0

Крім того, ми використовуємо тест щоб знати, чи слід включати редакцію навіть тоді, коли вона дорівнює (починаючи з Python 3.3.0).v>220


5

C # (Visual C # Interactive Compiler) , 109 байт

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

Містить багато недрукованих матеріалів, коди яких вказані в дужках. Це повна програма. Нульові байти замінюються \0s на посилання TIO, оскільки мій пристрій не може їх копіювати та вставляти.

Збережено один байт завдяки @OlivierGregoire.

Спробуйте в Інтернеті! (Завдяки @OlivierGregoire за імплантацію нульових байтів)

Пояснення

Кожен символ у рядку представляє скільки незначних версій у головній позиції. Наприклад, символ в індексі 5 ( ETX) має значення ASCII три і відповідає основній версії, 1.5.xяка має три другорядні версії. Програма приймає значення ascii поточного символу та циклічно багато разів, друкуючи другорядні версії, перш ніж перейти до наступної основної версії.

Для деяких версій існують прогалини до наступних версій. Щоб виправити це, рядок містить нульові байти, так що програма циркулює нульовий раз, коли вона стикається з цими.

Недрукований рядок містить такі значення символів:

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

Можна скоротити j="..."[k];j-->0;, тим більше, що порядок не має важливого значення. Також, чи можете ви пояснити різницю в розмірі між TIO (115 байт) і записом (110 байт)?
Олів'є Грегоар

@ OlivierGrégoire Напевно, п'ять нульових байтів, які tio представляють як \ 0
Sefa

@Sefa так, напевно ... Але я прошу впевненості.
Олів'є Грегоар

@ OlivierGrégoire Точно те, що сказав Сефа, я не можу реально скопіювати і вставити нульові байти. Якби \0s були замінені нульовими байтами, це було б 110 байт
Втілення Незнання


4

Pyth, 52 байти

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

Спробуйте його онлайн тут .

Вихід - це вкладений список з елементами, згрупованими за основною та другорядною версією. На початку виходу є порожній список, а після - ще один 1.6. Повний вихід такий:

[[], ['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']]

Якщо це неприйнятно, додайте .nдо коду вихід, який має вирівняний список, вартістю 2 байти.


4

Java (JDK) , 134 байти

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

Спробуйте в Інтернеті!

Версії друкуються від найвищої до найнижчої.

Кредити


1
(a>1|b>0)&c<a.valueOf(y,36)можна a>1|b>0&&c<a.valueOf(y,36)і c<1&(a<3|b<3)?можна c<1&&a<3|b<3?зберегти 2 байти. Відповідна порада Java - розділ Поєднання бітових та логічних перевірок замість використання дужок
Кевін Круїйсен

@KevinCruijssen Дякую, але я вніс стільки змін, що ваші пропозиції тепер не мають ніякого значення ... Не знаю, як кредитувати вас, бо я навіть більше не використовую вашу пропозицію :(
Олів'є Грегоар

1
Np, замість цього я запропоную новий гольф;) /10dможе бути*.1
Кевін Круїссен

1
int a=28-> int a=1і видаліть умову в циклі for, а потім додайте a++збереження 3 байтів. TIO
Втілення невігластва


3

Сітківка , 105 байт


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

Спробуйте в Інтернеті! На основі рішення @ Arnauld. Пояснення:


11* 111131   244655TS  2678E894

Вставте рядок, що складається з 11 пробілів, за якими подаються символи.

L$`.
$&_$.`

Для кожного символу вкажіть суфікс із а _та номером його стовпця.

T
10
E
11
S
17

Перетворіть три букви в числові значення.

.+_
*

Перетворіть числові значення в одинакові.

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

Для кожного значення до заданого значення використовуйте це як суфікс для номера версії, витягуючи головне та другорядне з номера стовпця.

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

Видаліть нульовий суфікс для перших 16 версій, у яких є.


2

Желе , 51 байт

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

Спробуйте в Інтернеті!

Ніладичне посилання, що виводить список списків .розділених цілих чисел, згрупованих за основною версією. У TIO є якийсь код нижнього колонтитулу, щоб їх гарненько надрукувати.


0

33 , 484 байти

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

Я хотів би сказати це мовою мого стилю brainf * ck.

Він друкує кожну версію python, необхідну для виклику, розмежувану новими рядками.

Ось невелике пояснення.

[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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.