สรุป
มีการสร้างภาษาการจัดการสตริงใหม่โดยใช้เฉพาะอักขระ$+#-!*|@>
! งานของคุณคือการใช้ล่ามให้กับมันในไม่กี่ไบต์เท่าที่จะทำได้
อินพุต
สตริงซึ่งเป็นบรรทัดเดียวของภาษานี้ สิ่งนี้สามารถดำเนินการได้ในวิธีที่สมเหตุสมผล (stdin, พารามิเตอร์ฟังก์ชัน, อาร์กิวเมนต์บรรทัดคำสั่ง ฯลฯ ) หรือเป็นตัวแปรที่กำหนดไว้ล่วงหน้า หากโปรแกรมขอการป้อนข้อมูลจากผู้ใช้ให้ยอมรับการป้อนข้อมูลจากผู้ใช้ทั้งหมดที่ร้องขอจาก stdinและไม่มีอะไรเพิ่มเติมดูด้านล่าง คุณอาจคิดว่ามันเป็นโปรแกรมที่ถูกต้อง
เอาท์พุต
สิ่งที่ภาษาจะออกข้อกำหนดรายละเอียดด้านล่าง คุณต้องส่งออกสตริงในลักษณะที่สมเหตุสมผล (stdout, ฟังก์ชั่นเอาท์พุท ฯลฯ ) หรือค่าตัวแปร เมื่อภาษาออกมาอย่างชัดเจนต้องไปที่ stdout ช่องโหว่มาตรฐานถูกแบน
ข้อมูลจำเพาะภาษา
การประมวลผลและไวยากรณ์
ภาษามีรูปแบบของการประมวลผลที่ง่ายมากเนื่องจากมีการจัดการสตริงเท่านั้น: เริ่มต้นด้วยสตริงว่าง ( ""
) และเปลี่ยนด้วยแต่ละคำ คำประกอบด้วยหนึ่งหรือสองส่วน: ฟังก์ชั่น (ด้านล่าง) ตามด้วยอาจเป็นพารามิเตอร์ (ด้านล่าง) ซึ่งแก้ไขพฤติกรรมของมัน ข้อกำหนดถูกคั่นด้วยไพพ์ ( |
) คุณอาจคิดว่ามันจะไม่เป็นโปรแกรมเปล่าและไม่มีคำใดจะว่างเปล่า คุณควรส่งออกค่าในตอนท้ายของโปรแกรม
ฟังก์ชั่น
ภาษามีเพียง 6 ฟังก์ชันดังที่แสดงด้านล่าง แต่ละฟังก์ชั่นยอมรับพารามิเตอร์หนึ่งหรือศูนย์
+
เชื่อมสตริง (ใช้พารามิเตอร์สตริงเดียวเชื่อมต่อกับค่าปัจจุบัน)!
กลับลำดับอักขระของค่าปัจจุบัน (ไม่มีพารามิเตอร์)*
ทำซ้ำสตริง (รับพารามิเตอร์จำนวนเต็มหนึ่งพารามิเตอร์ทำซ้ำค่าปัจจุบันที่หลาย ๆ ครั้ง)-
ลบค่าที่เกิดขึ้นทั้งหมด (ใช้พารามิเตอร์สตริงเดียวลบสิ่งที่เกิดขึ้นทั้งหมดออกจากค่าปัจจุบัน)$
[หลอก -] สับค่าปัจจุบันแบบสุ่ม (ไม่มีพารามิเตอร์)<
ส่งออกมูลค่าปัจจุบันไปที่stdout
(ไม่มีพารามิเตอร์)
ค่า
เหล่านี้เป็นค่าที่อาจถูกส่งผ่านไปยังฟังก์ชั่นซึ่งแสดงโดย regex ที่จะตรงกับพวกเขา:
@[^|]*
สตริงตัวอักษรรวมถึงตัวละครอื่น ๆ นอกเหนือจากท่อ อาจว่างเปล่า#[0-9]+
ตัวอักษรจำนวนเต็ม>
stdin
บรรทัดถัดไปของ หากใช้กับ*
ให้แปลงเป็นจำนวนเต็ม
กรณีทดสอบ
╔════════════════════════╤═════════════╤══════════════╗
║code │input │output ║
╟────────────────────────┼─────────────┼──────────────╢
║+>|!|+@hello|*> │13 │31hello31hello║
║ │2 │ ║
╟────────────────────────┼─────────────┼──────────────╢
║+>|+@abcdefg|$ │hello │hcloeebafdlg ║
╟────────────────────────┼─────────────┼──────────────╢
║+@how areyou|-@o|-> │w │h areyu ║
╟────────────────────────┼─────────────┼──────────────╢
║+@out|<|*#3 │ │out ║
║ │ │outoutout ║
╟────────────────────────┼─────────────┼──────────────╢
║+> │what ever 345│what ever 345 ║
╟────────────────────────┼─────────────┼──────────────╢
║+@$pe<i@l|<|-@$pe<i@l|+>│A|$o $pe<!@| │$pe<i@l ║
║ │ │A|$o $pe<!@| ║
╟────────────────────────┼─────────────┼──────────────╢
║<|+>|!|< │input text | ║
║ │ │txet tupni ║
║ │ │txet tupni ║
╟────────────────────────┼─────────────┼──────────────╢
║+@># │ |># ║
╚════════════════════════╧═════════════╧══════════════╝
โปรดทราบว่ากรณีทดสอบ 2 เป็นแบบสุ่มดังนั้นการเปลี่ยนแปลงของอักขระในนั้นจึงถูกต้อง นอกจากนี้เอาต์พุตในตารางจะถูกคั่นด้วยการขึ้นบรรทัดใหม่ แต่โปรแกรมของคุณไม่จำเป็นต้องทำเช่นเดียวกัน ค่าสุดท้ายในแต่ละกรณีคือผลลัพธ์สุดท้าย
ล่ามไพ ธ อนตัวอย่าง (Un-golfed)
ลองออนไลน์! IMO ดีกว่าถ้าคุณเรียกใช้ผ่าน IDLE หรืออะไรก็ตามที่คุณใช้ (ฉันเล่นมันลงไปที่ 424 ไบต์หลังจากนั้น แต่ฉันแน่ใจว่าคุณสามารถทำได้ดีกว่า)
<
พบ เป็นข้อบังคับหรือไม่
+@>#
อย่างไร ฉันใช้#
เช่นกัน