ค่อนข้างน่าเบื่อเกินกว่าที่จะเขียนโค้ดด้วยตนเองความท้าทายของคุณคือการแปลข้อความ ASCII เป็นซอร์สโค้ดแบบสองมิติ
Cubically
นี่เป็นเพียงการวิ่งลงอย่างรวดเร็วของ Cubically; พื้นที่เก็บข้อมูลมีคู่มือที่สมบูรณ์แบบและรายละเอียดเพิ่มเติม
ในทางตรงกันข้ามเป็น esolang ที่ฉันเขียนเมื่อไม่นานมานี้ออกแบบมาเพื่อใช้ในการเจ็บปวด มันมีหน่วยความจำสองส่วนลูกบาศก์รูบิค 3x3x3 และการลงทะเบียนที่เรียกว่า "notepad"
หน่วยความจำ
Cube ของ Rubik ภายในเริ่มต้นได้เช่นนี้:
000
000 top face
000
111222333444 left, front, right, and back faces, respectively
111222333444
111222333444
555
555 down face
555
หลังจากดำเนินการตามเข็มนาฬิกา 90 °หันหน้าไปทางขวาก้อนหน่วยความจำจะมีลักษณะดังนี้:
002
002
002
111225333044
111225333044
111225333044
554
554
554
คำสั่ง
อักขระที่ไม่ใช่จำนวนเต็มตั้งค่าคำสั่งเริ่มต้น สำหรับแต่ละจำนวนเต็มก่อนที่คำสั่งเริ่มต้นจะถูกตั้งค่าอีกครั้งคำสั่งจะดำเนินการกับจำนวนเต็มนั้น ตัวอย่างเช่นx524y312
จะดำเนินการคำสั่งx
ด้วย 5 จากนั้นด้วย 2 จากนั้นด้วย 4 จากนั้นดำเนินการคำสั่งy
ด้วย 3 จากนั้นด้วย 1 จากนั้นด้วย 2
จำนวนเต็มที่คำสั่งใช้แสดงดัชนีหน้า ดังนั้นx0
จะแสดงx
บนใบหน้า UP (0-indexed) x1
จะแสดงx
บนใบหน้าซ้าย (ดัชนี 1 รายการ) และอื่น ๆ
การดำเนินการคำสั่งใด ๆ ด้วย6
จะดำเนินการคำสั่งนั้นกับค่า notepad การดำเนินการคำสั่งใด ๆ ที่มีจำนวนเต็มมากกว่า 6 จะทำให้เกิดข้อผิดพลาด
นี่คือตัวอย่างคำสั่ง:
R1
- หมุนหน้าขวาตามเข็มนาฬิกา 90 °เพื่อให้ลูกบาศก์ภายในดูเหมือนกับตัวอย่างที่สองด้านบนR11
- หันหน้าไปทางขวาตามเข็มนาฬิกา 90 °สองครั้งเหมือนกันR2
+0
- เพิ่มค่าทั้งหมดของ UP face ให้กับ notepad+000
- เพิ่มค่าทั้งหมดของ UP face ให้กับ notepad สามครั้ง@6
- พิมพ์ใบหน้า (หน่วยความจำ) ที่ไม่มีดัชนีตัวที่ 6 เป็นตัวอักษร%4
- พิมพ์ผลรวมของค่าทั้งหมดบนใบหน้าด้านหลังเป็นจำนวนเต็ม
รายการที่สมบูรณ์ของคำสั่งและไวยากรณ์ที่มีอยู่ในพื้นที่เก็บข้อมูล
ท้าทาย
คุณจะใช้ข้อความ ASCII เป็นอินพุตและพิมพ์โปรแกรม Cubically เป็นเอาต์พุต
ตัวอย่าง (ขโมยมาจากที่นี่และที่นี่ ):
Input -> Output
Hello, World! -> +53@6+1F2L2+0@6L2F2U3R3F1L1+2@66L3F3R1U1B3+0@6:4U1R1+00@6-000@6*0-4+000@6-00@6+2-000000@6-5+4000@6-00@6/0+00@6:0+0/0+00@6
1$2$3$4$5$6$7$8$9$10$ -> B1+2/2%6@4+00/0%6@4+00/1%6@4+21/1%6@4+30/0%6@4+22/1%6@4+22/1%6@4+40/1%6@4+52/1%6@4+42/1%6@4
กฎระเบียบ
- โปรแกรมของคุณอาจไม่มีพจนานุกรมที่มีคำแปลสำหรับ 100 testcase
- โปรแกรมของคุณจะต้องเสร็จสิ้นในเวลาน้อยกว่า 180 วินาที (ไม่มีโปรแกรมบังคับโดยใช้เวลาสัปดาห์)
- โปรแกรมของคุณต้องส่งออกรหัส Cubically ที่ถูกต้องซึ่งเสร็จสิ้นในเวลาน้อยกว่า 180 วินาที
- โปรแกรมของคุณจะรับอินพุตผ่านอินพุตมาตรฐานเว้นแต่คุณต้องการยุ่งกับไดรเวอร์ทดสอบ
- โปรแกรมของคุณจะต้องแสดงผลรหัสแบบสองมิติที่ไม่ก่อให้เกิดสิ่งใดนอกจากอินพุตของโปรแกรมเมื่อทำงาน ಠ_ಠ
เกณฑ์การให้คะแนน
คุณจะทดสอบโปรแกรมของคุณด้วย 100 pseudorandom สตริงของความยาว pseudorandom (มีการระบุสคริปต์ทุบตีที่จะทำสิ่งนี้ให้คุณ) นี่คือวิธีที่คุณจะได้คะแนน:
- ให้ความยาวของโปรแกรมที่ส่งออกเป็นo
- ให้ความยาวของสายป้อน พ.ศ. ลิตร
- ให้ตัวแปรRเป็นผลมาจากการo /ลิตร
- หาค่าเฉลี่ยของทุกR : (R 1 + R 2 + R ... + R 100 ) / 100
ทดสอบด้วยสคริปต์นี้ คุณจะต้องแก้ไขมันตามคำแนะนำ โปรดทราบว่าโปรแกรมไม่ได้ตรวจสอบว่าการส่งออกเป็นรหัส Cubically ที่ถูกต้อง หากคุณไม่สามารถทำให้สคริปต์ทำงานได้ฉันสามารถช่วยได้ Ping ฉันในห้องแชท Cubically
@6
- พิมพ์ผลรวมของใบหน้าที่ไม่มีดัชนีที่มี 6 (แผ่นจดบันทึก) เป็นตัวอักษร" แม่นยำกว่านี้หรือไม่ คือ%4
ยังรวมหรือไม่? จะถูก+
คำสั่งรวมใบหน้าแล้วเพิ่มที่ค่าทั้งหมดหรือ ... ?
@6
/ %6
เพียงพิมพ์ค่า notepad โดยตรงเป็นอักขระ / จำนวนเต็ม @x
/ %x
(โดยที่ x คือใบหน้าใด ๆ ที่มีอยู่) เพิ่มค่าทั้งหมดในx
-indexed face และพิมพ์ผลรวมเป็นอักขระ / จำนวนเต็ม +
เพิ่มค่าทั้งหมดบนใบหน้าที่ระบุในการลงทะเบียน