Pythonバージョンのリスト


36

Pythonは、今日最も急速に成長している主要なプログラミング言語です。これは3年連続で最も求められている言語です。つまり、まだ使用していない開発者は学習したいと言っています。[1]

Pythonの人気の理由は、その多くのバージョンにあります。[要出典]実際には、2つの開発バージョンを含む116のバージョンのPythonがあります。

あなたの仕事は、すべてのPythonバージョンのリストを、好きな順序で、好きな形式で出力/印刷することです。この情報が保存されている組み込み関数は使用できません。

出力形式は自由に選択できますが、各バージョンは、標準的な方法1.12.3.02.7.10など)で識別する必要があります。

コンマ区切りのPythonバージョンの完全なリスト2を以下に示します。

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の公式Webサイト(こちらこちら)から取得されています0.9.0.. 0.9.91.5.1p1。など、含まれていないバージョンがいくつかあります。含まれていないバージョンが見つかった場合でも、上記のリストを使用する必要があります。そうでなければ誰かがおそらく2.1.0.1.2バージョンまたはそのようなものを見つけるだろうので、私は公式リストに固執することにしました。


2
1.1.0代わりに(すべてのバージョンを3の数字にするために)出力することは許可されていません1.1
ケビンクルーッセン

2
あなたは正しく@Kevinを推測します。許可することを検討しましたが、代わりに公式名を使用しました。
Stewie Griffin

回答:


17

JavaScriptの(ES6)、 128の125  124バイト

@OlivierGrégoireのおかげで1バイト節約

各バージョンを別々の行に出力します。メジャーバージョンの最上位から最下位、およびリビジョンの最下位から最上位の順に並べられます。

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]

  • 主要= v/10+1
  • vmod10

リビジョンは変数保持されます。の最大値は依存し、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));

コードが括弧内に示されている多くの印刷できないものが含まれています。これは完全なプログラムです。\0私のデバイスはそれらをコピーして貼り付けることができないため、TIOリンクではnullバイトはsに置き換えられます。

@OlivierGregoireのおかげで1バイト節約できました。

オンラインでお試しください!(nullバイトの埋め込みについて@OlivierGregoireに感謝します)

説明

文字列の各文字は、メジャーポジションにあるマイナーバージョンの数を表します。たとえば、インデックス5(ETX)の文字のASCII値は3であり、1.5.x3つのマイナーバージョンがあるメジャーバージョンに対応しています。プログラムは、現在の文字の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として表す5つのヌルバイト
Sefa

@Sefaはい、おそらく...しかし、私は確実性を求めています。
オリビエグレゴワール

@OlivierGrégoireSefaが言ったとおり、nullバイトをコピーアンドペーストすることはできません。\0sがヌルバイトに置き換えられた場合、110バイトになります
無知の具現化

1
次に、ここであなたが、あるNULバイトのTIO
オリヴィエ・グレゴワール

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チップ-セクションビット単位及び論理チェックを組み合わせる代わりに括弧を用い
ケビンCruijssen

@KevinCruijssenありがとうございます、しかし、私はあなたの提案が今では無関係であるほど多くの変更を加えました...私はあなたの提案をもう使用しないのであなたに信用する方法を知りません:(
OlivierGrégoire

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$`.
$&_$.`

各文字について、接尾辞a _とその列番号をリストします。

T
10
E
11
S
17

3文字を数値に変換します。

.+_
*

数値を単項に変換します。

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

指定された値までの各値について、バージョン番号のサフィックスとして使用し、列番号からメジャーとマイナーを抽出します。

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

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.