การแข่งขันครั้งนี้จบลงแล้ว ขอบคุณสำหรับรายการที่ไม่ใช่ esolang ที่น่าสนใจและขอแสดงความยินดีกับJakuje ที่ได้รับรางวัลจาวาสคริปต์
ในประเพณีที่ยิ่งใหญ่ของความท้าทายศิลปะ ASCII ในเว็บไซต์นี้นี่คืออีกหนึ่ง รับอินพุตวาดเกลียว
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
ง่ายใช่มั้ย เฮ้เฮ้ ... เฮ้ ...
(ได้รับแรงบันดาลใจจากการโพสต์Curve ASCII DragonsและASCII Art of the Dayของเครื่องมือเพิ่มประสิทธิภาพ)
อินพุต
ข้อมูลที่ป้อนจะอยู่ในรูปแบบของชุดพารามิเตอร์ที่นำมาจากอาร์กิวเมนต์ STDIN / function / etc ตามปกติไม่ว่าภาษาของคุณจะประกอบด้วยอะไรประกอบด้วยสี่ส่วน ส่วนเหล่านี้อาจเป็นอาร์กิวเมนต์ที่แยกกันสี่ส่วนสี่ส่วนอาร์เรย์ขนาด 4 เป็นต้นเพื่อความเรียบง่ายและสอดคล้องกันตลอดการท้าทายฉันจะแสดงอินพุตเป็นคำเดียว
- จำนวนเต็มที่
2 ≤ x ≤ 20ระบุขนาดของเกลียวในรูปของ "กำลังสอง" ที่มีอักขระที่พิมพ์แต่ละตัวที่แทนขนาดหนึ่ง "สี่เหลี่ยม" ตามหลักวิชานี้อาจมีขอบเขตขนาดใหญ่ แต่เนื่องจากเรากำลังวาดศิลปะ ASCII ขีด จำกัด บนที่ปลอดภัยของสิ่งนี้จะเท่ากับ 20 เพื่อให้พอดีกับหน้าจอค่อนข้างเหมาะสม - อักษรตัวเดียวของ
d u rหรือlแสดงการเคลื่อนไหวเริ่มต้นจาก "สี่เหลี่ยม" เริ่มต้น (ลง, ขึ้น, ขวา, ซ้าย) - ตัวเลือก
cระบุว่า "ทวนเข็มนาฬิกา" ถ้าcเว้นไว้ให้ถือว่าหมุนตามเข็มนาฬิกาสำหรับเกลียว - จำนวนเต็มสุดท้าย
1 ≤ y ≤ 10ที่ระบุจำนวนครั้งที่จะวาดรูปเกลียวหมุนวนโดยใช้ "สแควร์" ที่เสร็จสิ้นของเกลียวก่อนหน้าเป็น "สแควร์" เริ่มต้นของรูปแบบใหม่ ฉันเลือกขีด จำกัด สูงสุดที่ 10 เพราะฉันต้องการให้การวาดภาพเสร็จสิ้นในบางจุด - ตัวอย่างอินพุต:
20lc513d22rc1
สิ่งที่น่าสนใจโปรดทราบว่าค่าคี่สำหรับอินพุตขนาดจะส่งผลให้เกิดการ@เป็นศูนย์กลางที่แน่นอนของเกลียวอยู่เสมอ แต่แม้ค่าอาจมีการเริ่มต้น "สแควร์" ชดเชยในทิศทางแนวทแยงทั้งสี่ใด ๆ ขึ้นอยู่กับทิศทางของการเริ่มต้น การท่องเที่ยว. ซึ่งอาจส่งผลให้ ... รูปแบบ ... น่าสนใจ ... ดูตัวอย่างทั้งสองด้านล่าง
การป้อนข้อมูลที่ไม่เป็นไปตามข้อกำหนดการป้อนข้อมูล (เช่น11q#s) จะไม่ได้กำหนดและฉันคาดหวังอย่างเต็มที่ว่าโปรแกรมจะต้องถูกต้อง :)
เอาท์พุต
เอาต์พุตเป็นเอาต์พุต ASCII ที่พิมพ์ได้ผ่าน STDOUT เทียบเท่าภาษาโดยมีข้อกำหนดดังต่อไปนี้:
- เริ่มต้น "สแควร์" (ของแต่ละ recursion)
@จะต้องมีเครื่องหมายที่เข้าสู่ระบบ - "สี่เหลี่ยม" สุดท้ายจะต้องทำเครื่องหมายด้วยเครื่องหมาย
&และ ในกรณีที่มีการเรียกซ้ำหลายครั้งควรทำเครื่องหมาย "สี่เหลี่ยม" สุดท้าย&เท่านั้น - มุมของความจำเป็นในเส้นทางเกลียวที่ "จุด"
< > v ^ในทิศทางของการเดินทางโดยใช้ |จำเป็นที่จะต้องเดินทางในแนวตั้งที่จะวาดโดยท่อ-ต้องการเดินทางแนวนอนจะถูกวาดด้วยขีดกลาง- "สี่เหลี่ยม" ที่ถูกเขียนทับโดยการเรียกซ้ำในภายหลังควรแสดงทิศทางการเดินทางล่าสุด ซึ่งจะส่งผลให้เกิดการสอบถามซ้ำ "ที่ใหม่กว่า" ซึ่งดูเหมือนว่าจะซ้อนทับกันบนการเรียกซ้ำ "รุ่นเก่า" ดู
4rc3ตัวอย่างด้านล่าง - ขึ้นบรรทัดใหม่สุดท้ายต่อท้ายคือตกลงช่องว่างนำอาจเป็นสิ่งจำเป็นและได้รับอนุญาต แต่ไม่อนุญาตช่องว่างต่อท้าย
- ฉันจะไม่เทียบท่าคุณถ้าคุณใช้ escape sequences เพื่อวาด ASCII art ไปที่ STDOUT แต่ฉันจะผิดหวังในตัวคุณ (คุณจะยังคงมีสิทธิ์ได้รับเงินรางวัลถ้าคุณใช้พวกเขา)
ตัวอย่าง
2d4 = เส้นผ่านศูนย์กลางของ 2 เริ่มต้นโดยลงไปตามเข็มนาฬิกา 4 รอบซ้ำ
&@@@@
^<<<<
ในตัวอย่างนี้รูปวาดเริ่มต้นที่มุมขวาบน@เลื่อนลงหนึ่งซ้ายซ้ายขึ้นหนึ่งอัน ณ จุดนี้เราได้ทำการ2dแบ่งเสร็จแล้วจึงเริ่มต้นการสอบถามซ้ำครั้งที่ 2 ดังนั้นเราจึงมีอีก@อันลงหนึ่งเหลือหนึ่งเพิ่มขึ้นหนึ่งใหม่ จากนั้นเรียกซ้ำครั้งที่ 3; แล้วที่ 4 &และในที่สุดก็ของเรา
4rc3 = เส้นผ่านศูนย์กลางของ 4 เริ่มโดยไปทางขวาทวนเข็มนาฬิกา 3 รอบ
&--<
v-<|
|@^|<
>--^|
|@^|<
>--^|
|@^|
>--^
ในตัวอย่างนี้การวาดเริ่มต้นที่ด้านล่าง@ไปทางขวาหนึ่งขึ้นไปวนรอบจนกว่าจะถึงตรงกลาง@และเสร็จสิ้น4rcส่วน จากนั้นซ้ำอีกสองครั้งเพื่อรับคำขอแบบเต็ม 3 ครั้ง โปรดทราบว่า4rc1จะเป็นเพียง 4x4 บล็อกซ้ายบนของตัวอย่างนี้
7u1 = เส้นผ่านศูนย์กลางของ 7 เริ่มต้นด้วยการขึ้นไปตามเข็มนาฬิกา 1 ครั้งที่เรียกซ้ำ (สังเกตว่าเป็นอินโทรเดียวกัน)
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
การชนะและการ จำกัด
นี่คือ Code Golf คำตอบที่เล็กที่สุดเป็นหน่วยชนะ การส่งควรอยู่ในรูปแบบปกติของโปรแกรม / ฟังก์ชั่น / CJam Code Block / ฯลฯ ใช้ข้อ จำกัด ช่องโหว่มาตรฐาน คนขับมืออาชีพในหลักสูตรปิด หากการระคายเคืองยังคงอยู่ให้หยุดใช้และปรึกษาแพทย์ของคุณ