การแข่งขันครั้งนี้จบลงแล้ว ขอบคุณสำหรับรายการที่ไม่ใช่ 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 เพราะฉันต้องการให้การวาดภาพเสร็จสิ้นในบางจุด - ตัวอย่างอินพุต:
20lc5
13d2
2rc1
สิ่งที่น่าสนใจโปรดทราบว่าค่าคี่สำหรับอินพุตขนาดจะส่งผลให้เกิดการ@
เป็นศูนย์กลางที่แน่นอนของเกลียวอยู่เสมอ แต่แม้ค่าอาจมีการเริ่มต้น "สแควร์" ชดเชยในทิศทางแนวทแยงทั้งสี่ใด ๆ ขึ้นอยู่กับทิศทางของการเริ่มต้น การท่องเที่ยว. ซึ่งอาจส่งผลให้ ... รูปแบบ ... น่าสนใจ ... ดูตัวอย่างทั้งสองด้านล่าง
การป้อนข้อมูลที่ไม่เป็นไปตามข้อกำหนดการป้อนข้อมูล (เช่น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 / ฯลฯ ใช้ข้อ จำกัด ช่องโหว่มาตรฐาน คนขับมืออาชีพในหลักสูตรปิด หากการระคายเคืองยังคงอยู่ให้หยุดใช้และปรึกษาแพทย์ของคุณ