Persaingan ini berakhir. Terima kasih atas entri non-esolang yang menarik, dan selamat kepada Jakuje untuk pengajuan JavaScript yang menang.
Dalam tradisi besar Tantangan Seni ASCII di situs ini, inilah satu lagi. Diberikan input, gambar sebuah spiral.
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Sederhana ya Heh, heh, heh ... Ya ...
(Terinspirasi oleh posting ASCII Dragons Curve , dan posting ASCII Art of the Day dari Optimizer )
Memasukkan
Input akan berupa serangkaian parameter, yang diambil dari argumen STDIN / function / etc, seperti apa pun bahasa Anda, terdiri dari empat bagian. Bagian-bagian ini dapat berupa empat argumen terpisah, empat kali lipat, array ukuran 4, dll. Untuk kesederhanaan dan konsistensi sepanjang tantangan, saya akan mewakili input sebagai satu kata.
- Integer
2 ≤ x ≤ 20yang menentukan ukuran spiral dalam hal "kotak" dengan masing-masing karakter yang dicetak mewakili satu "kotak" dalam ukuran. Secara teoritis ini bisa sangat besar dalam ruang lingkup, tetapi mengingat bahwa kita menggambar seni ASCII, batas atas yang aman pada ini adalah 20 sehingga cocok agak sopan di layar. - Satu huruf
d u rataul, yang menunjukkan gerakan awal dari awal "kotak" (bawah, atas, kanan, kiri). - Opsional
c, menunjukkan "berlawanan arah jarum jam." Jikacdihilangkan, asumsikan rotasi searah jarum jam untuk spiral. - Integer akhir
1 ≤ y ≤ 10yang menentukan berapa kali untuk mengulang gambar spiral, menggunakan "kotak" akhir dari spiral sebelumnya sebagai "kotak" awal dari yang baru. Saya memilih batas atas 10 karena saya ingin gambarnya selesai di beberapa titik. - Beberapa contoh input:
20lc513d22rc1
Yang menarik, perlu dicatat bahwa nilai ganjil untuk input ukuran akan menghasilkan @selalu menjadi pusat yang tepat dari spiral, tetapi bahkan nilai mungkin memiliki awal "kuadrat" di salah satu dari empat arah diagonal, tergantung pada arah awal perjalanan. Ini dapat menghasilkan beberapa ... pola ... menarik. Lihat dua contoh genap di bawah ini.
Input yang tidak mengikuti spesifikasi input (mis., 11q#s) Tidak terdefinisi dan saya sepenuhnya berharap program untuk muntah dengan tepat. :)
Keluaran
Output adalah output ASCII yang dapat dicetak melalui STDOUT setara bahasa, dengan spesifikasi sebagai berikut:
- Awal "kuadrat" (dari setiap rekursi) harus ditandai dengan tanda-at
@. - "Kotak" akhir harus ditandai dengan ampersand
&. Dalam kasus beberapa rekursi, hanya "kotak" yang paling final yang harus ditandai&. - Sudut-sudut jalan spiral perlu "menunjuk" ke arah perjalanan, menggunakan
< > v ^. - Perjalanan vertikal perlu ditarik oleh pipa
|. - Perjalanan horizontal perlu digambar dengan garis putus-putus
-. - "Kotak" yang ditimpa oleh rekursi nanti harus menampilkan arah perjalanan terbaru. Ini akan menghasilkan rekursi "baru" yang tampaknya berlapis-lapis di atas rekursi "lama". Lihat
4rc3contoh di bawah ini. - New trailing newline adalah OK, spasi mengarah bisa menjadi suatu keharusan dan diperbolehkan, tetapi spasi tambahan tidak diperbolehkan.
- Saya tidak akan berlabuh jika Anda menggunakan urutan melarikan diri untuk menggambar seni ASCII pergi ke STDOUT, tapi saya akan diam-diam kecewa pada Anda. (Anda masih berhak menerima hadiah jika Anda menggunakannya)
Contohnya
2d4 = diameter 2, dimulai dengan turun, searah jarum jam, 4 rekursi
&@@@@
^<<<<
Dalam contoh ini, gambar dimulai di kanan atas @, turun satu, kiri, atas satu. Pada titik ini, kami telah menyelesaikan 2dbagiannya, dan mulailah rekursi ke-2, jadi kami memiliki yang lain @, turun satu, kiri satu, naik satu; kemudian rekursi ke-3; lalu tanggal 4 dan akhirnya milik kami &.
4rc3 = diameter 4, dimulai dengan berbelok ke kanan, berlawanan arah jarum jam, 3 rekursi
&--<
v-<|
|@^|<
>--^|
|@^|<
>--^|
|@^|
>--^
Dalam contoh ini, gambar dimulai di bagian bawah @, ke kanan, ke atas, berputar di sekitar, sampai mencapai tengah @dan menyelesaikan 4rcbagian. Ini kemudian diulangi dua kali lagi untuk mendapatkan 3 kali rekursi yang diminta. Perhatikan bahwa 4rc1hanya akan menjadi blok 4x4 kiri atas dari contoh ini.
7u1 = diameter 7, dimulai dengan naik, searah jarum jam, 1 rekursi (perhatikan sama dengan intro)
&>----v
||>--v|
|||>v||
|||@|||
||^-<||
|^---<|
^-----<
Menang & Batasan
Ini adalah Code Golf, jadi jawaban terkecil dalam bytes menang. Pengajuan harus dalam bentuk program / fungsi / CJam Code Block / etc. Batasan Standar Loophole Berlaku. Pengemudi profesional di jalur tertutup. Jika iritasi berlanjut, hentikan penggunaan dan konsultasikan dengan dokter Anda.