Pyth Practice 2


21

ถึงเวลาสำหรับการฝึกแบบ Pyth อื่น ฉันแสดงคำแถลงปัญหาที่นี่ 8 ข้อโดยใช้วิธีการแก้ปัญหาแบบ Pyth โซลูชันเหล่านี้เขียนขึ้นโดย Pythorn เขาค่อนข้างมีความสุขกับการแก้ปัญหาเหล่านี้เนื่องจากสั้นกว่าคำตอบของ Python มาก อย่างไรก็ตามงานของคุณคือการแสดงเขาให้ดีขึ้น สร้างโปรแกรมที่เทียบเท่า แต่สั้นกว่า

นี่เป็นความท้าทายเกี่ยวกับลูกเล่นและการปรับแต่งที่สามารถใช้ได้เมื่อเล่นกอล์ฟใน Pyth นักกอล์ฟ Pyth อาจรู้จักกลอุบายมากมายที่เกี่ยวข้องซึ่งนำไปสู่การแก้ปัญหาที่สั้นลง อย่างไรก็ตามปัญหาบางอย่างจะต้องใช้วิธีผิดปกติบางอย่างที่ไม่ค่อยได้ใช้ เทคนิคบางอย่างที่ฉันไม่เคยเห็นมาก่อนในป่า แต่ไม่มีวิธีแก้ปัญหาที่ต้องการข้อบกพร่องหรือพฤติกรรมแปลก ๆ ที่ไม่ได้ตั้งใจโดยนักออกแบบของ Pyth คำตอบทั้งหมดจะต้องถูกต้องสำหรับการกระทำPythล่าสุด ( 2b1562b ) ในการโพสต์ของคำถามนี้ คุณสามารถใช้Pyth interpreterสำหรับการทดสอบ เป็นข้อมูลล่าสุดและฉันไม่คาดหวังการเปลี่ยนแปลงครั้งใหญ่ใน Pyth ที่จะทำให้โซลูชันที่ดีที่สุดหรือทำให้โซลูชันสั้นลง ล่ามออนไลน์ยังมีการอ้างอิงอักขระใหม่ เนื่องจากมันค่อนข้างใหม่คุณสามารถ (ควร) ใช้เอกสารเก่าด้วยในกรณีที่มีบางอย่างไม่ถูกต้องหรือหายไป

เป้าหมาย:โซลูชันอ้างอิงทั้งหมด 81 ไบต์ เป้าหมายของคุณคือเอาชนะให้ได้มากที่สุด การส่งที่แก้ปัญหา 8 ทั้งหมดด้วยจำนวนไบต์ที่น้อยที่สุดที่ชนะทั้งหมด Tiebreaker คือวันที่ส่ง

แน่นอนว่ามีเพียงการส่งที่ถูกต้องซึ่งมีวิธีแก้ไขปัญหาสำหรับ 8 ปัญหาทั้งหมด คุณสามารถใช้การดำเนินการอ้างอิงหากคุณไม่สามารถปรับปรุงคะแนนของปัญหาหนึ่ง (หรือมากกว่า) โดยเฉพาะ

โซลูชันของคุณจะต้องพิมพ์ผลลัพธ์เดียวกันกับโซลูชันอ้างอิง ยกเว้นบรรทัดใหม่ที่เป็นตัวเลือก

เนื่องจากนี่คือการฝึกแบบ Pyth อนุญาตให้เฉพาะโปรแกรมที่เขียนในภาษา Pyth เท่านั้นที่ได้รับอนุญาต

ตอบ:โปรดทำลายคำตอบทั้งหมดของคุณยกเว้นคะแนนรวมของคุณ มีจุดประสงค์ที่คุณจะไม่ดูคำตอบของคนอื่นก่อนที่จะส่งของคุณเอง คุณสามารถสร้างสปอยเลอร์โดยใส่>! ด้านหน้าของทุกบรรทัดเช่น:

>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...

ฉันหวังว่าฉันไม่ได้เลือกปัญหาที่ยากเกินไปหรือเล็กเกินไป หวังว่าผู้เข้าร่วมจำนวนมากและทุกคนจะได้รับข้อมูลเชิงลึกใหม่ ๆ ใน Pyth มีความสุขในการเล่นกอล์ฟ!

ปัญหาที่ 1:

สร้างเมทริกซ์ 9x9 ต่อไปนี้และพิมพ์:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 9]

โซลูชันอ้างอิง ( ลิงก์ ):

V9m?>dNd0S9 (11 bytes)

ปัญหาที่ 2:

พิมพ์ตัวเลขทั้งหมดและตัวอักษรทั้งหมดในบรรทัดแยก:

0
...
9
a
...
z

โซลูชันอ้างอิง ( ลิงก์ ):

VTN)VGN (7 bytes)

ปัญหาที่ 3:

ค้นหารูปสัณฐานที่เล็กที่สุดในพจนานุกรมซึ่งมีขนาดใหญ่กว่าหรือเท่ากับสายอักขระที่มีตัวอักษรตัวพิมพ์เล็กและเท่ากับสตริงอินพุต

a -> a
abc -> aca
adcb -> adda

โซลูชันอ้างอิง ( ลิงก์ ):

hf&gTzqT_T^Glz (14 bytes)

ปัญหาที่ 4:

ตรวจสอบว่าตัวเลขอยู่ในช่วง [0, หมายเลขอินพุต) หรือไม่ สิ่งนี้ควรใช้ได้กับการลอย

4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True

โซลูชันอ้างอิง ( ลิงก์ ):

&gQ0<QE (7 bytes)

to be tested value<newline>end valueรูปแบบการอ้างอิง คุณสามารถเลือกรูปแบบอินพุตอื่นได้ สิ่งสำคัญคือให้คุณทำคำแถลงปัญหาและให้ผลลัพธ์ที่ถูกต้องเท่านั้น

ปัญหาที่ 5:

แยกสตริงการป้อนของรูปแบบ "\ d + [a-zA-Z] +" โปรดสังเกตว่าหมายเลขนั้นต้องเป็นตัวเลขไม่ใช่สตริงที่มีตัวเลข

'123Test' -> [123, 'Test']

โซลูชันอ้างอิง ( ลิงก์ ):

A.ggk\Az,sGH (12 bytes)

ปัญหาที่ 6:

คำนวณผลรวมของตัวเลขที่คั่นด้วยเครื่องหมายจุลภาคหนึ่งหรือหลายรายการ คุณสามารถสันนิษฐานได้ว่ามีอย่างน้อยหนึ่งหมายเลขในสตริง

11,2,,,3,5,,8 -> 29

โซลูชันอ้างอิง ( ลิงก์ ):

svM:z",+"3 (10 bytes)

ปัญหาที่ 7:

อ่านจำนวนเต็มบวกจากอินพุตจนกว่าคุณจะได้รับตัวเลข 0 พิมพ์ผลรวมของตัวเลขทั้งหมด

โซลูชันอ้างอิง ( ลิงก์ ):

WJE=+ZJ)Z (9 bytes)

ปัญหาที่ 8:

สรุปองค์ประกอบทั้งหมดของเมทริกซ์จตุรัสยกเว้นองค์ประกอบของเส้นทแยงมุมหลัก (มุมบนซ้ายถึงมุมล่างขวา)

โซลูชันอ้างอิง ( ลิงก์ ):

-ssQs.e@bkQ (11 bytes)

ฉันชอบความคิดของคำถามเฉพาะเกี่ยวกับภาษา (และฉันได้อัปเดตคำถามนี้) แต่ฉันคิดว่าคำถามเฉพาะเกี่ยวกับภาษาได้รับการรวบรวมใน PPCG หรือไม่
Luis Mendo

3
@ LuisMendo ฉันคิดว่าคำถามที่เฉพาะเจาะจงเกี่ยวกับภาษานั้นไม่ได้รับความสนใจหากเหตุผลที่ทำให้คำถามไม่ชอบภาษากอล์ฟทั่วไปเช่น CJam, Pyth, ... หรือเพราะ OP เข้าใจภาษาบางอย่างเท่านั้น นี่คือสิ่งที่แตกต่างกันเล็กน้อย คำถามนี้ได้รับการออกแบบมาเพื่อแสดงคุณสมบัติที่ซ่อนอยู่ของภาษาที่เป็นที่นิยม (บน PPCG) ในแบบที่มันเป็นเหมือนชุดของเทคนิค มันไม่มีเหตุผลที่จะยอมให้มันกับทุกภาษา นี่คือ Meta-post เกี่ยวกับหัวข้อนี้: ลิงค์
Jakube

ใน 6 ตัวเลขเป็นเลขจำนวนเต็มบวกหรือไม่
xnor

@xnor คุณสามารถสันนิษฐานได้ว่าพวกเขาเป็นบวก แต่พวกเขาอาจประกอบด้วยมากกว่าหนึ่งหลัก ฉันจะเปลี่ยนกรณีทดสอบ
Jakube

1
ฉันลงคะแนนเพื่อปิดคำถามนี้เป็นหัวข้อนอกเพราะมันเป็นความท้าทายแบบหลายส่วนที่ไม่มีการโต้ตอบระหว่างส่วนต่างๆ
pppery

คำตอบ:


9

59 58 56 ไบต์

ปัญหาที่ 1:

j.tmLdS9Z (9 ไบต์)

ปัญหาที่ 2:

MTjG (5 ไบต์) (อักขระตัวแรกคือขึ้นบรรทัดใหม่)

ปัญหาที่ 3:

h.f_IZ1z (8 ไบต์)

ปัญหาที่ 4:

%IQE (4 ไบต์)

ปัญหาที่ 5:

,J.vz-zJ (8 ไบต์)

ปัญหาที่ 6:

srXz\,d7 (8 ไบต์)

ปัญหาที่ 7:

u+GE0 (5 ไบต์)

ปัญหาที่ 8:

ss.DR~hZQ (9 ไบต์)


2

66 ไบต์

1. 10 ไบต์: V9+mZN}hN9
2. 6 ไบต์: jUT)jG
3. 8 ไบต์: h.f_IZ1z
4. (การดำเนินการอ้างอิง) 7 ไบต์: &gQ0<QE
5. 11 ไบต์: ,sK-rzZG-zK
6. 7 ไบต์: ssMcz\,
7. 8 ไบต์: s<.Qx.QZ
8. 9 ไบต์:ss.eXbkZQ


2

68 67 66 65 ไบต์

ภารกิจที่ 1

10 ไบต์: V9m*d>dNS9

ภารกิจที่ 2

5 ไบต์: \nMTjGโดยที่\nเป็นบรรทัดใหม่

ภารกิจที่ 3

9 ไบต์: h.fqZ_Z1z

ภารกิจที่ 4

5 ไบต์: qQ%QE

ภารกิจที่ 5

โซลูชันอ้างอิง 12 ไบต์: A.ggk\Az,sGH

ภารกิจที่ 6

7 ไบต์: ssMcz\,

ภารกิจที่ 7

8 ไบต์: s<.Qx.Q0

ภารกิจที่ 8

9 ไบต์: ss.DVQUlQ


1

54 ไบต์

นี่คือโซลูชั่นที่ตั้งใจไว้ ยกเว้นงาน 8 พบวิธีแก้ปัญหาทั้งหมด

1. j.tmLdS9Z (9 bytes) โดยใช้แผนที่สำหรับแผนที่ซ้ายสลับและเติมด้วยศูนย์
2 \ nMTjG (5 ไบต์) ใช้บรรทัดใหม่สำหรับแผนที่
3. h.f_IZ1z (8 ไบต์) สร้างสตริงที่เป็นไปได้ด้วย. f
4 .% IQE (4 bytes) พบ usecase ซึ่งตัวดำเนินการค่าคงที่ต้องการพารามิเตอร์ 2 ตัว
5. , J.vz-zJ (8 bytes) .v ประเมินเฉพาะคำสั่งแรกของสตริงและละเว้นส่วนที่เหลือ
6 ssMcz \, ( 7 bytes) s "" = 0
7. u + GE0 (5 bytes) ลดจนกว่าจะถึงจำนวนที่รู้
8 ss.DVQUQ (8 bytes) ลบเส้นทแยงมุมโดยใช้ vectorization


ประณามฉันลืมUทำlในรายการ!
lirtosiast

1
เก่งในการเต้น isaacg ในภาษาของเขาเอง
Stan Strum

1

 60 59  57 ไบต์

1. 9 ไบต์ :j.tmRdS9Z


2. 6 ไบต์ :jbUTjG


3. 8 ไบต์ :h.f_IZ1z


4. 4 ไบต์ :}sEU


5. 8 ไบต์ :,K.vz-zK


6. 7 ไบต์ :ssMcz\,


7. 8 ไบต์ :s<FxB.Q0


8. 11 10 7 ไบต์ : ss.DVQU เวอร์ชันก่อนหน้า:ss.e+<bk>bh

โปรดทราบว่าฉันพัฒนาโซลูชั่นนี้อย่างสมบูรณ์โดยอิสระจากคำตอบอื่น ๆ แม้ว่าฉันจะค่อนข้างช้าไปงานเลี้ยง


ความพยายามที่ดี ปัญหาที่สามคือ 8 ไบต์แม้ว่า
Jakube

และฉันค่อนข้างแน่ใจว่าทางออกสำหรับปัญหา 8 ไม่ได้รวบรวมในเวลานั้น แต่ฉันยังไม่ได้ทดสอบ
Jakube

@ Jakube โอ้ขอบคุณสำหรับการสังเกต!
นาย Xcoder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.