รายการเวอร์ชันของ Python


36

Python เป็นภาษาโปรแกรมหลักที่เติบโตเร็วที่สุดในปัจจุบัน มันเป็นภาษาที่ต้องการมากที่สุดสำหรับปีที่สามติดต่อกันซึ่งหมายความว่านักพัฒนาที่ยังไม่ได้ใช้มันบอกว่าพวกเขาต้องการที่จะเรียนรู้มัน [1]

สาเหตุของความนิยมของ Python ก็คือหลายรุ่น [อ้างจำเป็น]มีจริง ๆ แล้วหลาม 116 รุ่นรวมทั้งสองรุ่นพัฒนา

งานของคุณคือส่งออก / พิมพ์รายการเวอร์ชัน Python ทั้งหมดตามลำดับที่คุณต้องการและในรูปแบบที่คุณชอบ คุณไม่สามารถใช้ฟังก์ชันในตัวที่มีการจัดเก็บข้อมูลนี้

คุณมีอิสระในการเลือกรูปแบบการส่งออก แต่ในแต่ละรุ่นจะต้องมีการระบุไว้ในวิธีมาตรฐาน: 1.1, 2.3.0, 2.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รายการจะนำมาจากเว็บไซต์ของงูใหญ่อย่างเป็นทางการที่นี่และที่นี่ มีบางรุ่นที่ไม่ได้รวมเช่นมี0.9.0.. และ0.9.9 1.5.1p1คุณต้องใช้รายการด้านบนแม้ว่าคุณจะพบรุ่นที่ไม่ได้รวมอยู่ ฉันตัดสินใจที่จะยึดติดกับรายชื่ออย่างเป็นทางการเพราะมิฉะนั้นคนอาจจะหา2.1.0.1.2รุ่นหรืออะไรแบบนั้น


2
ฉันเดาว่าเราไม่ได้รับอนุญาตให้ส่งออก1.1.0(เพื่อให้ทุกรุ่นที่ 3 หมายเลข) แทน1.1?
Kevin Cruijssen

2
คุณเดาถูกต้อง @Kevin ฉันพิจารณาอนุญาต แต่ไปกับชื่ออย่างเป็นทางการแทน
Stewie Griffin

คำตอบ:


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]

  • v/10+1
  • vmod10

การแก้ไขจะจัดขึ้นในตัวแปรrค่าสูงสุดของขึ้นอยู่กับและเก็บไว้ในตารางการค้นหาที่เข้ารหัสใน 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));

มี unprintables จำนวนมากซึ่งมีรหัสแสดงอยู่ในวงเล็บ นี่เป็นโปรแกรมเต็ม ไบต์ว่างจะถูกแทนที่ด้วย\0s ในลิงก์ TIO เนื่องจากอุปกรณ์ของฉันไม่สามารถคัดลอกและวางได้

บันทึกหนึ่งไบต์ด้วย @OlivierGregoire

ลองออนไลน์! (ต้องขอบคุณ @OlivierGregoire สำหรับการปลูกฝังค่า null แบบ null)

คำอธิบาย

อักขระแต่ละตัวในสตริงแสดงจำนวนรุ่นย่อยในตำแหน่งหลัก ตัวอย่างเช่นตัวละครที่ดัชนี 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 ไบต์) ได้หรือไม่
Olivier Grégoire

@ OlivierGrégoireน่าจะเป็นห้าไบต์ว่างที่ tio แสดงเป็น \ 0
Sefa

@Sefa ใช่อาจจะ ... แต่ฉันขอความมั่นใจ
Olivier Grégoire

@ OlivierGrégoireสิ่งที่ Sefa พูดเอาไว้จริงๆฉันไม่สามารถคัดลอกและวางค่า null ได้ ถ้า\0s ถูกแทนที่ด้วย null bytes จะเป็น 110 bytes
ศูนย์รวมของความไม่รู้

1
ถ้าอย่างนั้นคุณก็มาถึงแล้วด้วยnul-byte TIO
Olivier Grégoire

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 ที่เกี่ยวข้อง - ส่วนการรวมเช็คบิตที่ชาญฉลาดและมีเหตุผลแทนการใช้วงเล็บ
Kevin Cruijssen

@KevinCruijssen ขอบคุณ แต่ฉันได้ทำการเปลี่ยนแปลงมากมายที่ข้อเสนอแนะของคุณไม่เกี่ยวข้อง ... ไม่ทราบวิธีให้เครดิตคุณเนื่องจากฉันไม่ได้ใช้คำแนะนำของคุณอีกต่อไป :(
Olivier Grégoire

1
Np แต่ฉันขอแนะนำกอล์ฟใหม่;) /10dสามารถ*.1
Kevin Cruijssen

1
int a=28-> int a=1และลบเงื่อนไขในลูป for จากนั้นเพิ่ม an 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

แปลงตัวอักษรสามตัวเป็นค่าตัวเลข

.+_
*

แปลงค่าตัวเลขให้เป็นค่าเดียว

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

สำหรับแต่ละค่าจนถึงค่าที่กำหนดให้ใช้เป็นส่วนต่อท้ายสำหรับหมายเลขรุ่นโดยแยกส่วนหลักและส่วนย่อยออกจากหมายเลขคอลัมน์

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

ลบศูนย์ต่อท้ายสำหรับ 16 เวอร์ชันแรกที่มี


2

เยลลี่ , 51 ไบต์

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

ลองออนไลน์!

ลิงก์ niladic ที่แสดงรายการของ.จำนวนเต็ม -separated จัดกลุ่มตามรุ่นหลัก บน 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 สไตล์ของฉัน

มันพิมพ์แต่ละรุ่นหลามที่จำเป็นสำหรับความท้าทายคั่นด้วยการขึ้นบรรทัดใหม่

นี่คือคำอธิบายเล็ก ๆ

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