ถึงเวลาสำหรับการฝึกแบบ 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)