จะปรับปรุง Pyth ได้อย่างไร? [ปิด]


24

Pyth อยู่ในการพัฒนาอย่างต่อเนื่องซึ่งหมายความว่ามีการเพิ่มฟีเจอร์ใหม่ตลอดเวลา

ฉันต้องการทำให้ Pyth เป็นแบบที่ดีกว่าดังนั้นฉันต้องการทราบว่าคุณลักษณะใดที่ผู้คนกำลังมองหา

นี่คือสถานที่ที่โพสต์ความคิดที่คุณมีเพื่อทำให้ Pyth ดีขึ้น

ในคำตอบของคุณโปรดระบุ:

  • สิ่งที่คุณต้องการที่จะเห็นการเปลี่ยนแปลง / เพิ่ม

  • ตัวอย่างการใช้งานของการเปลี่ยนแปลง

ฉันจะแสดงความคิดเห็นหากฉันวางแผนที่จะใช้ข้อเสนอแนะ

โปรดตรวจสอบว่าความคิดที่คุณต้องการแนะนำนั้นได้รับการแนะนำหรือไม่ โหวตความคิดที่คุณต้องการนำไปใช้


คำแนะนำการใช้งาน:


นี่เป็นหัวข้อตามคำถามเมตานี้เมื่อฉันโพสต์คำถามมันไม่ชัดเจนอีกต่อไป


1
ทำไมนี่เป็นวิกิชุมชน
Geobits

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

9
ฉันไม่แน่ใจว่าฉันรู้สึกอย่างไรกับคำถามเช่นนี้ ฉันเห็นว่ามันเหมาะสมแล้วที่นี่เพราะ PPCG อาจครอบคลุมฐานผู้ใช้ของ Pyth มากที่สุด (ถ้าไม่ใช่ทั้งหมด) แต่ฉันไม่แน่ใจว่าเราควรใช้มันเป็นตัวติดตามปัญหา ฉันได้เพิ่มคำตอบไปยังโพสต์เมตา
Martin Ender

สิ่งนี้ไม่ควรเป็นเมตาหรือ พวกอย่างจริงจัง
Alec Teal

2
@AlecTeal "Meta Programming Puzzles & Code Golf Stack Exchange เป็นส่วนหนึ่งของเว็บไซต์ที่ผู้ใช้พูดคุยเกี่ยวกับการทำงานและนโยบายของ Code Golf Stack Exchange แทนที่จะพูดถึงการเขียนโปรแกรมไขปริศนาหรือโค้ดกอล์ฟเอง" Meta เป็นพิเศษเกี่ยวกับชุมชนแห่งนี้ มันไม่ได้อยู่ในเมตาดาต้าจริงๆ ไม่ว่าจะเป็นที่นี่หรือไม่บน PPCG เลยกำลังมีการหารือในเมตาโพสต์ที่ฉันเชื่อมโยง
Martin Ender

คำตอบ:


7

ลูปซ้อนกัน

หากคุณต้องการซ้อนforลูปคุณต้องเสียไบต์ในการใช้F<var><seq>ภายในV<seq>หรือในทางกลับกัน ฉันชอบที่จะมีสิ่งเดียวกันกับ lambdas ซึ่งตัวแปรที่ใช้สำหรับลูปจะเปลี่ยนไปเมื่อทำรังวนซ้ำ


สิ่งนี้อาจขยายได้กับสิ่งอื่น ๆ เช่นLซึ่งสามารถกำหนดใหม่ว่าCครั้งที่สองที่ถูกเรียก
FryAmTheEggman


4

การนำเข้าโมดูลที่ง่ายขึ้น

จนถึงทุกครั้งที่ฉันใช้$มันเป็นสิ่งที่ชอบ:

$from <module> import <function> as <pyth-function-with-same-arity>$
for example:
$from unicodedata import name as neg$

อาจมีฟังก์ชันใหม่ที่สรุปเช่นนี้.$:

.$"unicodedata""name""neg"
.$"unicodedata name neg"

หรือใช้รูปแบบที่ใหม่กว่า_Mซึ่งอาจไม่ง่าย / ทำได้:

_$unicodedata name$

นอกจากนี้หนึ่งฟังก์ชันที่มีแต่ละ arity สามารถกำหนดชื่อแมโครตัวอักษรเดียวเพื่อให้การเรียกเหล่านี้อาจสั้นลง (ยกเว้น_$ตัวเลือก)


4

นอนหลับ

นี้ปัญหาที่เกิดที่นี่และ@ mbomb007 แนะนำให้ใส่เป็นปรับปรุง Pyth โดยทั่วไปตอนนี้เพื่อที่จะนอนในจำนวนวินาทีที่กำหนดฉันต้องทำสิ่งที่ชอบ:

Q$__import__('time').sleep(Q)$

ซึ่งเป็นที่น่ารำคาญและยาวนาน


คุณสามารถจำลองพฤติกรรมการนอนหลับด้วยฟังก์ชั่นวันที่ f>.d1Q0เช่นหลับQวินาที
Jakube

@Jakube นั่นไม่ได้ผลเสมอไป ตามเอกสารใน Unix จะคืนค่าระยะเวลาที่โปรแกรมใช้งาน ซึ่งไม่ดีเมื่อผู้ใช้ป้อนอินพุต
kirbyfan64sos

J.d0f>-.d0JQ0วิธีการเกี่ยวกับหนึ่งกว่านี้: มันค่อนข้างนานแม้ว่า ... ฉันเห็นด้วยฟังก์ชั่นการนอนหลับจะดี
Jakube

4

lambdas เพิ่มเติม

นี่เป็นความคิดของ FryAmTheEggmanจริงๆแต่ฉันโพสต์ไว้เพื่อนำไปใช้ที่นั่น

บางครั้งฉันพบว่าการใช้แลมบ์ดาหนึ่งอาร์กิวเมนต์ที่ต่างกันสองตัวจะทำให้โค้ดสั้นลงในขณะที่ต้องใช้แลมบ์ดาสองอาร์กิวเมนต์สำหรับสิ่งหนึ่งจะไม่เกิดขึ้น

มันจะดีที่จะมีL, Mและเพื่อน redefine ฟังก์ชั่นที่แตกต่างกันทุกครั้งที่ใช้ ตัวอย่างเช่นรหัสนี้:

L*b2L*b3y5'5

สามารถรวบรวมเป็น:

@memoized
def subsets(b):
 return times(b,2)
@memoized
def read_file(b):
 return times(b,3)
imp_print(subsets(5))
imp_print(read_file(5))

แน่นอนว่าอาจมีการเปลี่ยนแปลงตัวเลือกของฟังก์ชัน


3

ปรับปรุงอาร์เรย์หลายมิติ

การใช้อาร์เรย์หลายมิตินั้นทำได้ยาก ตัวอย่างเช่นรหัส C A[B][C][D]จะแปลเป็น@@@ABCDPyth สิ่งที่ต้องการ@A[BCD)จะดีกว่ามาก (แม้ว่าจะไม่สั้นลงที่นี่) เช่นเดียวกันไปสำหรับX; A[B][C][D] = Eในปัจจุบันคือเมื่อมันอาจจะเป็นX@@ABCDEXA[BCD)E


3

บางความคิดเล็กน้อย

  • abs(val1 - val2)ความแตกต่างที่แน่นอนคือ .a-<val1><val2>ขณะนี้ก็คือ
  • min/ maxสำหรับค่า ขณะนี้มันhS,<val1><val2>/ eS,<val1><val2>หรือสิ่งเดียวกันกับค่ามากขึ้น ( hS<seq>/ eS<seq>สำหรับลำดับสั้นพอ)

3

ไม่ใช่ฟีเจอร์ของ Pyth แต่อย่างไรก็ตาม ...

ทำให้รหัส Pyth เป็นโมดูล

สิ่งนี้มีผลต่อ Pyth ภายใต้ประทุนเท่านั้น บางส่วนของการนำ Pyth ไปใช้นั้นค่อนข้างยุ่ง ตัวแปรระดับโลกจำนวนมากและสิ่งอื่น ๆ ที่แฮ็ค

ฉันผิดหวังมากเมื่อไม่กี่วันที่ผ่านมาเมื่อฉันลองใช้ฟังก์ชั่นการใช้งาน Pyth (เช่นการใช้งานคำสั่ง Pyth) จากสคริปต์ Python อื่น

สิ่งต่อไปนี้น่าจะดี:

from pyth import execute_pyth
print(execute_pyth(code='sQ', input='[1, 2, 3]'))

ฉันเดาว่านี่เป็นเพียงความช่วยเหลือในการเรียก Pyth5



1

องค์ประกอบที่เป็นเอกลักษณ์

ขณะนี้ Pyth ไม่มีวิธีลัดในการรับองค์ประกอบที่เป็นเอกลักษณ์ของลำดับ คุณสามารถทดสอบว่ามันไม่ซ้ำกัน แต่คุณไม่สามารถรับรายการที่ไม่ซ้ำกันจริง ปัจจุบันวิธีที่สั้นที่สุดคือ :

{.-Q{Q

6 ไบต์! เปรียบเทียบกับ K =xที่ได้รับองค์ประกอบที่ไม่ซ้ำกันคือการดำเนินการอย่างใดอย่างหนึ่งไบต์:

อาจ.}จะทำงานที่นี่


คุณกำลังใช้กรณีใด (นอกเหนือจากทททที่ท้าทายหนึ่ง)
isaacg

@isaacg ฉันจำไม่ได้ แต่ฉันต้องลองใช้องค์ประกอบที่เป็นเอกลักษณ์ของรายการก่อนและต้องใช้อย่างอื่น (ซึ่งนานกว่านั้น)
kirbyfan64sos

ฉันไม่ใช่โปรแกรมเมอร์ Pyth แต่ฉันพบปัญหานี้ตลอดเวลาใน GolfScript / CJam: .&resp _&ปรากฏในคำตอบมากมาย มันมีประโยชน์มาก
Lynn

1
สิ่งนี้แตกต่างจาก{Qอย่างไร
isaacg

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