ความท้าทายนี้สร้างขึ้นเพื่อเฉลิมฉลองภาษาลับแรกของฉันแบ็คแฮนด์ !
แบ็คแฮนด์เป็นภาษาหนึ่งมิติที่มีโฟลว์ตัวชี้ที่ไม่ใช่เชิงเส้น ตัวชี้ย้ายทีละสามขั้นตอนดำเนินการตามคำสั่งที่สามทุกครั้งเท่านั้น
โปรแกรม1..1..+..O..@
จะเพิ่ม 1 + 1 และเอาท์พุท 2 ก่อนที่จะยุติ คำแนะนำระดับกลางถูกข้ามไปดังนั้น1<>1()+{}O[]@
เป็นโปรแกรมเดียวกันทั้งหมด
เมื่อตัวชี้กำลังจะก้าวออกจากจุดสิ้นสุดของเทปมันจะกลับทิศทางและทำตามขั้นตอนในลักษณะอื่นดังนั้นจึง1.@1.O+.
เป็นโปรแกรมเดียวกัน โปรดทราบว่ามันจะนับคำสั่งสิ้นสุดเพียงครั้งเดียวเท่านั้น สิ่งนี้ทำให้เราสามารถบีบอัดโปรแกรมเชิงเส้นส่วนใหญ่ได้เช่น1O+1@
ความท้าทายของคุณที่นี่คือการเขียนโปรแกรมหรือฟังก์ชั่นที่รับสายและส่งคำสั่งที่จะถูกดำเนินการหากโปรแกรมตีความเช่น Backhand (คุณไม่จำเป็นต้องจัดการกับคำแนะนำ Backhand จริง ๆ ) คุณจะต้องส่งออกเท่านั้นจนกว่าตัวชี้จะตกลงบนอักขระตัวสุดท้ายของสตริง (ซึ่งการดำเนินการตามปกติจะย้อนกลับ)
แต่รอนั่นไม่ใช่ทั้งหมด! เมื่อโปรแกรมของคุณถูกตีความในลักษณะนี้โค้ดผลลัพธ์ควรออกด้านล่างอย่างใดอย่างหนึ่ง:
(Mostly) works
Turing complete
'Recreational'
(คำพูดที่สามารถเป็นได้ทั้ง'
หรือ"
แต่ไม่ใช่ทั้งสอง)Perfectly okay
Only a few bugs
ตัวอย่างเช่นหากซอร์สโค้ดของคุณคือcode 2 backhand
โปรแกรมce cankb od2ahd
ควรส่งออกหนึ่งในวลีเหล่านี้
กรณีทดสอบ:
"1 1 + O @" -> "11+O@"
"1O+1@" -> "11+O@"
"HoreWll dlo!" -> "Hello World!"
"abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz"
"0123456789" -> "0369" (not "0369630369")
"@" -> "@"
"io" -> "io" (Cat program in Backhand)
"!?O" -> "!?O" (Outputs random bits forever in Backhand)
"---!---!" -> "-!-----!"
และแน่นอนว่าโปรแกรมอ้างอิงที่เขียนด้วยแบ็คแฮนด์ ( อาจเป็นรถบักกี้เอาล่ะฉันคิดว่าฉันคงซ่อมแล้ว)
กฎระเบียบ
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- อินพุตของโปรแกรมแรกจะมีเฉพาะ ASCII ที่พิมพ์ได้และขึ้นบรรทัดใหม่ (นั่นคือไบต์
0x20
-0x7E
และ 0x0A) - คุณสามารถเลือกได้ว่าโปรแกรมที่สองของคุณจะถูกแปลงจากไบต์แรกหรือตามตัวอักษร UTF-8
- โปรแกรมที่สอง:
- เคสไม่สำคัญดังนั้นผลลัพธ์ของคุณอาจเป็นไปได้
pErFectLy OKay
หากคุณต้องการ - จำนวนของช่องว่างต่อท้าย / นำหน้า (ขึ้นบรรทัดใหม่แท็บช่องว่าง) ก็ไม่เป็นไร
- โปรแกรมที่สองควรเป็นภาษาเดียวกันกับภาษาแรก แต่ไม่จำเป็นต้องเป็นรูปแบบเดียวกัน (โปรแกรม / ฟังก์ชั่น)
- ฉันยินดีที่จะรวมข้อเสนอแนะจากความคิดเห็นเกี่ยวกับวลีพิเศษ (ตราบใดที่ไม่สั้นเกินไป)
- เคสไม่สำคัญดังนั้นผลลัพธ์ของคุณอาจเป็นไปได้
- เนื่องจากนี่คือcode-golfเป้าหมายของคุณคือการได้รับคำตอบสั้น ๆ สำหรับภาษาของคุณ!
- ในสองสัปดาห์ฉันจะให้รางวัล 200 ค่าหัวกับคำตอบแบ็คแฮนด์ที่สั้นที่สุด
"---!---!"
(หรือสตริงใด ๆ ที่อักขระตัวสุดท้ายปรากฏมากกว่าหนึ่งครั้ง)