pengantar
Tulis sebuah program untuk menampilkan spiral pangram keluar yang terkenal berikut aturan yang diberikan.
Tantangan
Sebuah pangram adalah kalimat menggunakan setiap huruf dari alfabet diberikan setidaknya sekali. Salah satu pangram yang paling terkenal adalah pangram yang digunakan secara luas di penampil font Windows, yaitu " Rubah cokelat cepat melompati anjing yang malas ". Tantangannya adalah menghasilkan spiral berdasarkan teks ini.
Tugas Anda adalah menghasilkan teks yang tepat ini:
heeeeellllllllllllazzzzzzzzzzz
hummmmmmmmmmmmmppppppppppppppy
hubrrrrrrrrrrrrrrrrrrooooooosy
hukyddddoooooooooooooooggggwsy
hukyveeeeerrrrrrrrrrrrrrrrtwsy
hukyvxjjjjjjjjjjuuuuuuuuuttwsy
hukyvxkbbrrrrrrrrrrrrrrrmttwsy
hukyvxkogggggggttttttttomttwsy
tukyvokoellllllllllllahomttwsy
tukyvokoeovvvvvvvvvvvzhomttwsy
tukyvocoeoummmmmmmmmezhomttwsy
tukyvocoeoufooooooopezhomttwsy
tukyvocohoufroooooxpezhomttwsy
tukyvoiohoufrquuuwxpezhomttwsy
tucyvoiohoufbqttiwxpezhomttwsy
tucyvoiohoufbeehiwxprzhomttwsy
tucyvoiohoufkccciwxprzeomttwsy
tjiyvoidhounnnnnnwxprzeomttwsy
tjiyvoidhojjjjjjjjxprzeomttwsy
tjiyvoidhssssssssssprzeopttwsy
tjiyvoidttttttttttttrzeopttwsy
tjiyvoiyyyyyyyyyyyyyyzqopttwoy
tjiyvouuuuuuuuuuuuuuuuqwpttwoy
tjiyvffffnnnnnnnnnnnnnnwpttwoy
tjiyossssssssssssssssssspthwoy
tjizzzzalllllllllllleeeeehhwoy
tjuuqqqqqqqqqqqqqqqqqeeeeehnod
txxxxxoooooooooooooooffffffnod
reeeeevvvvvvvvvvvvvvvvvvvvvvod
gggggggoooooooooooooood
Berikut adalah bagaimana ini dihasilkan,
- Ada rubah yang bersemangat yang menikmati pangram "Rubah cokelat cepat melompati anjing malas". Suatu hari dia berada di tengah spiral luar dan memutuskan untuk melompat dan melukis bersama.
- Dia ingin membaca pangram dari awal hingga akhir, dan jika sebuah huruf adalah huruf ke-n dalam alfabet dia ingin melukisnya sebanyak n kali.
- Namun, rubah tidak pandai berbelok di tikungan, sehingga setelah mencapai setiap sudut ia juga harus berhenti dan beralih ke huruf berikutnya.
- Dia juga memutuskan untuk mengulang tiga kali pangram untuk menekankan bahwa ia adalah yang cepat rubah cokelat.
- Tugas Anda adalah menunjukkan bagaimana bentuk spiral setelah rubah melukis semua huruf itu.
(Versi polos tanpa bercerita)
Pangram yang terkenal "Si rubah cokelat cepat melompati anjing yang malas" diulang tiga kali, dengan spasi dihilangkan dan semua huruf dalam huruf kecil, untuk menghasilkan
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
Spiral dimulai dari pusat dan dimulai dengan huruf "t", itu dimulai dengan pergi ke kanan, dan pergi ke luar searah jarum jam. Jika karakter saat ini adalah huruf ke-n dalam alfabet, maka ia beralih ke karakter berikutnya kapan saja
- spiral mencapai sudut, atau
- huruf saat ini dicetak tepat n kali.
Untuk menggambarkannya dengan lebih baik, saya akan menjelaskan bagaimana spiral terkait dengan tiga kata pertama "thequickbrown" dihasilkan.
rooooo
rquuuw
bqttiw
beehiw
kccciw
nnnnnnw
Rubah mulai dari "t", ke kanan, mencapai sudut 1, melukisnya dengan "t" dan kemudian beralih ke "h" dan turun, mencapai sudut 2, beralih ke "e" dan pergi ke kiri, mencapai Sudut ke-3, beralih ke "q" dan naik, mencapai sudut ke-4, beralih ke "u" dan ke kanan, mencapai sudut dan beralih ke "i", turun, mencapai sudut dan beralih ke "c", pergi kiri, berhasil melukis 3 "c" sebelum mencapai sudut berikutnya , beralih ke "k" dan pergi ke kiri , langsung mencapai sudut, beralih ke "b" dan naik, melukis 2 "b" sebelum mencapai sudut selanjutnya, beralih ke "r"dan terus ke atas , mencapai sudut dan beralih ke "o", ke kanan, lalu "w", ke bawah, "n", ke kiri.
Spesifikasi
Anda dapat mengambil input opsional yang berisi segala bentuk standar string
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
Output Anda harus diformat sebagai string, dan harus pergi ke STDOUT bukan file atau STDERR, dengan baris baru ditempatkan dengan benar. Menuju dan mengikuti garis kosong tidak masalah. Ruang judul dan trailing di setiap baris diizinkan, tetapi harus konsisten. Jadi, jika Anda menambahkan 5 spasi sebelum satu baris teks yang diberikan, Anda harus menambahkan tepat 5 spasi sebelum setiap baris sehingga spiral terlihat sama.
Ini adalah kode-golf , jumlah byte terendah yang menang.
Seperti biasa, celah default berlaku di sini.
Penjelasan dipersilahkan, meskipun tidak perlu.
Judul diedit untuk menjadikannya sebuah pangram per komentar oleh caird coinheringaahing.
Anjing malas terlalu malas untuk muncul dalam cerita.
Saya bertujuan untuk menciptakan tantangan string di mana surat untuk keluaran tidak dapat dihitung dengan fungsi sederhana dari koordinat.
sumber
Jawaban:
Stax ,
35343332 byteJalankan dan debug secara online
Stax adalah bahasa yang telah saya kerjakan selama sekitar 6 bulan. Ini adalah golf publik pertama dengan itu. Mari kita mulai bisnis.
Stax biasanya ditulis dalam set karakter ASCII yang dapat dicetak. Pengiriman 34 byte ini dikemas ke dalam varian set karakter CP437. Representasi ascii yang sesuai adalah
Stax adalah bahasa berbasis tumpukan, tetapi memiliki dua tumpukan data, "utama" dan "input". Sebagian besar operasi menggunakan tumpukan utama, tetapi input dimulai pada tumpukan input. Instruksi Stax sebagian besar satu atau dua urutan karakter ascii. Sebagian besar dari mereka kelebihan beban, yang berarti perilaku mereka ditentukan oleh beberapa nilai teratas pada tumpukan.
Pada level tinggi, program ini membangun kisi dengan menambahkan string berulang kali ke baris terakhir. Ketika baris terakhir terisi, ia memutar grid searah jarum jam. Pada akhirnya, itu mencerminkan grid secara horizontal. Secara lebih rinci, program ini bekerja seperti ini.
sumber
Arang ,
664036 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 16 byte dengan mengambil teks sebagai input. Penjelasan:
Mulailah dengan 2
t
s untuk beberapa alasan.Lingkari semua huruf dalam pangram.
Sudahkah kita mencapai sudut?
Turun ke bawah (atau apa pun arah berikutnya) satu baris.
Putar arah cetak 90 ° searah jarum jam.
Hitung panjang sisi selanjutnya.
Selesai memperbaiki posisi kursor. (Arang lebih suka sisi berakhir sebelum sudut, sehingga Anda memutar di sudut itu sendiri.)
Ulangi posisi huruf saat ini dalam alfabet.
Jika kita belum mencapai sudut,
Kurangi jumlah dan cetak huruf saat ini.
sumber
Ruby ,
217212209208 byteCobalah online!
Menghabiskan waktu yang cukup lama mengelola pointer, jadi mungkin ada ruang untuk bermain golf lebih banyak.
-5 byte: Tiga kali lipat pangram sebelum memasukkan. Terima kasih untuk Weijun Zhou .
-3 byte: Pad string input dan trim leg terakhir, alih-alih menghasilkan leg terakhir dari awal.
-1 byte: Gunakan
&&
sebagai ganti operator ternary dengan nilai sekali pakai.Penjelasan:
sumber
r
danl
lambdas. Berdasarkan jawaban saat ini kaki terakhir tampaknya menjadi pembuat masalah meskipun bukan ketika saya menulis cuplikan C saya untuk menghasilkan output sampel ...s*=3
semuanya dan juga menghilangkannya0
di?:
operator. tio.run/...0
, atau Ruby akan menarikc+=1
dari baris berikutnya dan hanya menjalankan sebagian besar waktu. Dan tantangan yang bagus!