Cuộc thi này đã kết thúc. Cảm ơn các mục nhập phi esolang thú vị và chúc mừng Jakuje đã gửi bài JavaScript chiến thắng.
Trong truyền thống vĩ đại của những thách thức nghệ thuật ASCII trên trang web này, đây là một thử thách khác. Cho một đầu vào, vẽ một hình xoắn ốc.
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Đơn giản, phải không? Heh, heh, heh ... Yeah ...
(Lấy cảm hứng từ bài viết Đường cong rồng của ASCII và bài đăng Nghệ thuật trong ngày của ASCII )
Đầu vào
Đầu vào sẽ ở dạng một loạt các tham số, được lấy từ STDIN / đối số hàm / v.v. thông thường, bất kể ngôn ngữ của bạn tương đương, bao gồm bốn phần. Các phần này có thể là bốn đối số riêng biệt, một bộ tứ, một mảng có kích thước 4, v.v ... Để đơn giản và nhất quán trong suốt thử thách, tôi sẽ biểu thị đầu vào dưới dạng một từ.
- Một số nguyên
2 ≤ x ≤ 20
chỉ định kích thước của hình xoắn ốc theo "hình vuông" với mỗi ký tự được in đại diện cho một "hình vuông" có kích thước. Về mặt lý thuyết, điều này có thể rất lớn về phạm vi, nhưng do chúng ta đang vẽ nghệ thuật ASCII, giới hạn trên an toàn cho điều này sẽ là 20 để nó phù hợp với màn hình. - Một chữ cái duy nhất
d u r
hoặcl
, cho biết chuyển động ban đầu từ "hình vuông" bắt đầu (xuống, lên, phải, trái). - Một tùy chọn
c
, cho biết "ngược chiều kim đồng hồ." Nếuc
được bỏ qua, giả sử xoay theo chiều kim đồng hồ cho hình xoắn ốc. - Một số nguyên cuối cùng
1 ≤ y ≤ 10
chỉ định số lần lặp lại bản vẽ xoắn ốc, sử dụng "hình vuông" hoàn thành của hình xoắn ốc trước đó làm "hình vuông" bắt đầu của hình mới. Tôi đang chọn giới hạn trên là 10 vì tôi muốn bản vẽ kết thúc tại một số điểm. - Một vài ví dụ đầu vào:
20lc5
13d2
2rc1
Quan tâm, lưu ý rằng các giá trị lẻ cho đầu vào kích thước sẽ dẫn đến @
luôn luôn là tâm chính xác của hình xoắn ốc, nhưng các giá trị thậm chí có thể có phần bù "vuông" bắt đầu theo bất kỳ hướng nào trong bốn hướng chéo, phụ thuộc vào hướng ban đầu du lịch. Điều này có thể dẫn đến một số ... mô hình ... thú vị. Xem hai ví dụ thậm chí dưới đây.
Đầu vào không tuân theo thông số kỹ thuật đầu vào (ví dụ 11q#s
:) không được xác định và tôi hoàn toàn mong đợi chương trình sẽ được xử lý phù hợp. :)
Đầu ra
Đầu ra là đầu ra có thể in ASCII thông qua STDOUT tương đương với ngôn ngữ, với các thông số kỹ thuật sau:
- "Hình vuông" bắt đầu (của mỗi lần đệ quy) phải được đánh dấu bằng dấu hiệu
@
. - "Hình vuông" cuối cùng phải được đánh dấu bằng dấu và
&
. Trong trường hợp có nhiều lần thu hồi, chỉ nên đánh dấu "hình vuông" cuối cùng&
. - Các góc của đường xoắn ốc cần "chỉ" theo hướng di chuyển, sử dụng
< > v ^
. - Du lịch dọc cần được vẽ bằng đường ống
|
. - Du lịch ngang cần được vẽ bằng dấu gạch ngang
-
. - "Hình vuông" được ghi đè bởi các lần thu hồi sau sẽ hiển thị hướng di chuyển gần đây nhất. Điều này sẽ dẫn đến việc thu hồi "mới hơn" dường như được xếp chồng lên trên các lần thu hồi "cũ" hơn. Xem
4rc3
ví dụ dưới đây. - Một dòng mới cuối cùng là OK, không gian hàng đầu có thể là phải và vì vậy được phép, nhưng không gian dấu không được phép.
- Tôi sẽ không cập bến bạn nếu bạn sử dụng các chuỗi thoát để vẽ nghệ thuật ASCII sang STDOUT, nhưng tôi sẽ thất vọng trong bạn. (Bạn vẫn sẽ đủ điều kiện nhận tiền thưởng nếu bạn sử dụng chúng)
Ví dụ
2d4
= đường kính 2, bắt đầu bằng cách đi xuống, theo chiều kim đồng hồ, 4 lần thu hồi
&@@@@
^<<<<
Trong ví dụ này, bản vẽ bắt đầu ở phía trên bên phải @
, đi xuống một, trái một, lên một. Tại thời điểm này, chúng tôi đã hoàn thành 2d
phần này, và vì vậy bắt đầu đệ quy thứ 2, vì vậy chúng tôi có một phần khác @
, xuống một, còn lại một, lên một; sau đó là đệ quy thứ 3; sau đó lần thứ 4 và cuối cùng của chúng tôi &
.
4rc3
= đường kính 4, bắt đầu bằng cách đi bên phải, ngược chiều kim đồng hồ, 3 lần thu hồi
&--<
v-<|
|@^|<
>--^|
|@^|<
>--^|
|@^|
>--^
Trong ví dụ này, bản vẽ bắt đầu ở phía dưới @
, đi bên phải, lên một, xoắn ốc xung quanh, cho đến khi nó đến giữa @
và hoàn thành 4rc
phần. Điều này sau đó lặp lại hai lần nữa để có đủ 3 lần thu hồi được yêu cầu. Lưu ý rằng đó 4rc1
sẽ chỉ là khối 4x4 phía trên bên trái của ví dụ này.
7u1
= đường kính 7, bắt đầu bằng cách đi lên, theo chiều kim đồng hồ, 1 đệ quy (lưu ý giống như phần giới thiệu)
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Chiến thắng & Hạn chế
Đây là Code Golf, vì vậy câu trả lời nhỏ nhất trong byte thắng. Đệ trình phải ở dạng thông thường của chương trình / chức năng / Khối mã CJam / v.v. Hạn chế lỗ hổng tiêu chuẩn áp dụng. Lái xe chuyên nghiệp trên khóa học khép kín. Nếu kích thích vẫn còn, ngừng sử dụng và tham khảo ý kiến bác sĩ của bạn.