Danh sách các phiên bản Python


36

Python là ngôn ngữ lập trình lớn phát triển nhanh nhất hiện nay. Đây là ngôn ngữ được mong muốn nhất trong năm thứ ba liên tiếp, có nghĩa là các nhà phát triển chưa sử dụng nó nói rằng họ muốn học nó. [1]

Lý do cho sự phổ biến của Python là nhiều phiên bản của nó. [cần dẫn nguồn] Trên thực tế có tới 116 phiên bản Python, bao gồm hai phiên bản phát triển.

Nhiệm vụ của bạn là xuất / in danh sách tất cả các phiên bản Python, theo bất kỳ thứ tự nào bạn thích và trên bất kỳ định dạng nào bạn thích. Bạn không được sử dụng bất kỳ chức năng tích hợp nào có thông tin này được lưu trữ.

Bạn có thể tự do chọn định dạng đầu ra, nhưng mỗi phiên bản phải được xác định trên con đường tiêu chuẩn: 1.1, 2.3.0, 2.7.10và vân vân.

Danh sách đầy đủ 2 phiên bản Python, được phân tách bằng dấu phẩy được hiển thị bên dưới:

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

hoặc theo các phiên bản chính:

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

Thử thách là một thử thách đầu ra cố định và rất gần với , ngoại trừ định dạng đầu ra là tùy chọn.

2 Danh sách được lấy từ trang web chính thức của Python, tại đâyđây . Có một số phiên bản không được bao gồm, chẳng hạn như 0.9.0.. 0.9.91.5.1p1. Bạn phải sử dụng danh sách trên, ngay cả khi bạn tìm thấy các phiên bản không được bao gồm. Tôi đã quyết định gắn bó với các danh sách chính thức, vì nếu không ai đó có thể sẽ tìm thấy một 2.1.0.1.2phiên bản hoặc một cái gì đó tương tự.


2
Tôi đoán chúng tôi không được phép xuất 1.1.0(để tạo tất cả 3 phiên bản số) thay vì 1.1?
Kevin Cruijssen

2
Bạn đoán đúng @Kevin. Tôi đã xem xét cho phép nó, nhưng thay vào đó là tên chính thức.
Stewie Griffin

Câu trả lời:


17

JavaScript (ES6),  128 125  124 byte

Đã lưu 1 byte nhờ @ OlivierGrégoire

Xuất ra mỗi phiên bản trên một dòng riêng biệt. Được đặt hàng từ phiên bản chính cao nhất đến thấp nhất và từ phiên bản thấp nhất đến cao nhất.

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

Hãy thử trực tuyến!

Làm sao?

Các phiên bản chính và phụ được giữ trong biến :v[0,27]

  • chính =v/10+1
  • nhỏ =vmod10

Việc sửa đổi được tổ chức trong biến . Giá trị tối đa của phụ thuộc vào và được lưu trữ trong bảng tra cứu được mã hóa trong Base-36. Bất kỳ trong bảng này có nghĩa là phiên bản này hoàn toàn không được phát hành.r0rv0

Ngoài ra, chúng tôi sử dụng thử nghiệm để biết liệu có nên đưa vào sửa đổi ngay cả khi nó là (bắt đầu với Python 3.3.0).v>220


5

C # (Trình biên dịch tương tác Visual C #) , 109 byte

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

Chứa nhiều dấu vết, có mã được hiển thị trong ngoặc. Đây là một chương trình đầy đủ. Các byte null được thay thế bằng \0s trong liên kết TIO, vì thiết bị của tôi không thể sao chép và dán chúng.

Đã lưu một byte nhờ @OlivierGregoire.

Hãy thử trực tuyến! (Cảm ơn @OlivierGregoire vì đã cấy các byte rỗng)

Giải trình

Mỗi ký tự trong chuỗi biểu thị có bao nhiêu phiên bản nhỏ ở vị trí chính. Ví dụ, ký tự ở chỉ số 5 ( ETX) có giá trị ASCII là ba và tương ứng với phiên bản chính 1.5.xcó ba phiên bản nhỏ. Chương trình lấy giá trị ascii của ký tự hiện tại và các vòng lặp nhiều lần, in các phiên bản nhỏ trước khi chuyển sang phiên bản chính tiếp theo.

Đối với một số phiên bản, có những khoảng trống cho các phiên bản tiếp theo. Để khắc phục điều đó, chuỗi chứa byte rỗng, do đó chương trình lặp lại 0 lần khi nó gặp các chuỗi đó.

Chuỗi không thể in chứa các giá trị ký tự này:

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

Có thể được rút ngắn với j="..."[k];j-->0;, đặc biệt là vì thứ tự không có tầm quan trọng. Ngoài ra, bạn có thể giải thích sự khác biệt về kích thước giữa TIO (115 byte) và mục nhập (110 byte) không?
Olivier Grégoire

@ OlivierGrégoire Có lẽ là năm byte rỗng mà tio đại diện là \ 0
Sefa

@Sefa có, có lẽ ... Nhưng tôi đang yêu cầu sự chắc chắn.
Olivier Grégoire

@ OlivierGrégoire Chính xác như những gì Sefa đã nói, tôi thực sự không thể sao chép-dán các byte rỗng. Nếu các \0s được thay thế bằng byte rỗng, nó sẽ là 110 byte
Hiện thân của sự thiếu hiểu biết

1
Sau đó, bạn đang ở đây, với một TIO byte nul
Olivier Grégoire

4

Bình thường, 52 byte

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

Hãy thử trực tuyến tại đây .

Đầu ra là một danh sách lồng nhau, với các thành phần được nhóm theo phiên bản chính và phụ. Có một danh sách trống ở đầu ra, và một danh sách khác sau 1.6. Đầu ra đầy đủ như sau:

[[], ['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ếu điều này không được chấp nhận, hãy thêm vào .nmã để có đầu ra dưới dạng danh sách dẹt, với chi phí là 2 byte.


4

Java (JDK) , 134 byte

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

Hãy thử trực tuyến!

Các phiên bản được in từ cao nhất đến thấp nhất.

Tín dụng


1
(a>1|b>0)&c<a.valueOf(y,36)có thể a>1|b>0&&c<a.valueOf(y,36)c<1&(a<3|b<3)?có thể c<1&&a<3|b<3?lưu 2 byte. Mẹo Java có liên quan - phần Kết hợp kiểm tra bit-khôn ngoan và logic thay vì sử dụng dấu ngoặc đơn
Kevin Cruijssen

@KevinCruijssen Cảm ơn bạn, nhưng tôi đã thực hiện rất nhiều thay đổi mà các đề xuất của bạn hiện không liên quan ... Không biết làm thế nào để ghi có cho bạn vì tôi thậm chí không sử dụng đề xuất của bạn nữa :(
Olivier Grégoire

1
Np, thay vào đó tôi sẽ đề xuất một sân golf mới;) /10dcó thể*.1
Kevin Cruijssen

1
int a=28-> int a=1và xóa điều kiện trong vòng lặp for, sau đó thêm một a++để lưu 3 byte. TIO
Hiện thân của sự thiếu hiểu biết


3

Võng mạc , 105 byte


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

Hãy thử trực tuyến! Dựa vào giải pháp của @ Arnauld. Giải trình:


11* 111131   244655TS  2678E894

Chèn chuỗi bao gồm 11 khoảng trắng theo sau là các ký tự đã cho.

L$`.
$&_$.`

Đối với mỗi ký tự, liệt kê nó có hậu tố a _và số cột của nó.

T
10
E
11
S
17

Chuyển đổi ba chữ cái thành giá trị số.

.+_
*

Chuyển đổi các giá trị số thành đơn nguyên.

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

Đối với mỗi giá trị lên đến giá trị đã cho, hãy sử dụng đó làm hậu tố cho số phiên bản, trích xuất chính và phụ từ số cột.

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

Xóa hậu tố 0 cho 16 phiên bản đầu tiên có một.


2

Thạch , 51 byte

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

Hãy thử trực tuyến!

Một liên kết niladic đưa ra một danh sách các danh sách các .số nguyên được phân tách , được nhóm theo phiên bản chính. Trên TIO, có một số mã chân trang để in những thứ này một cách đẹp mắt.


0

33 , 484 byte

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

Tôi muốn thực hiện điều này bằng ngôn ngữ kiểu cf * ck của tôi.

Nó in mỗi phiên bản python cần thiết cho thử thách, được phân định bởi các dòng mới.

Đây là một lời giải thích nhỏ.

[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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.