Tulis sebuah program atau fungsi yang, ketika diberikan n
, akan mencetak n
karakter spiral yang terdiri dari alfabet Latin yang ABCDEFGHIJKLMNOPQRSTUVWXYZ
diulang sesuai kebutuhan. Spiral ini harus dijalankan melalui alfabet hanya ke depan.
Terkait dengan Alfabet Spiral , meskipun spiral berjalan melalui alfabet maju dan mundur, dan spiral itu konstan.
Uji kasus
4 AB
DC
40 UVWXYZ
TGHIJA
NSFABKB
MREDCLC
LQPONMD
KJIHGFE
0
10 GHIJ
FAB
EDC
1000 UVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
TGHIJKLMNOPQRSTUVWXYZABCDEFGHIJA
SFABCDEFGHIJKLMNOPQRSTUVWXYZABKB
REZCDEFGHIJKLMNOPQRSTUVWXYZABCLC
QDYBMNOPQRSTUVWXYZABCDEFGHIJCDMD
PCXALEFGHIJKLMNOPQRSTUVWXYZKDENE
OBWZKDEFGHIJKLMNOPQRSTUVWXALEFOF
NAVYJCDMNOPQRSTUVWXYZABCDYBMFGPG
MZUXIBCLCDEFGHIJKLMNOPQREZCNGHQH
LYTWHABKBABCDEFGHIJKLMNSFADOHIRI
KXSVGZAJAZGHIJKLMNOPQROTGBEPIJSJ
JWRUFYZIZYFUVWXYZABCDSPUHCFQJKTK
IVQTEXYHYXETQRSTUVWXETQVIDGRKLUL
HUPSDWXGXWDSPUVWXYZYFURWJEHSLMVM
GTORCVWFWVCROTGHIJAZGVSXKFITMNWN
FSNQBUVEVUBQNSFABKBAHWTYLGJUNOXO
ERMPATUDUTAPMREDCLCBIXUZMHKVOPYP
DQLOZSTCTSZOLQPONMDCJYVANILWPQZQ
CPKNYRSBSRYNKJIHGFEDKZWBOJMXQRAR
BOJMXQRARQXMLKJIHGFELAXCPKNYRSBS
ANILWPQZQPWVUTSRQPONMBYDQLOZSTCT
ZMHKVOPYPONMLKJIHGFEDCZERMPATUDU
YLGJUNOXONMLKJIHGFEDCBAFSNQBUVEV
XKFITMNWVUTSRQPONMLKJIHGTORCVWFW
WJEHSLMLKJIHGFEDCBAZYXWVUPSDWXGX
VIDGRKJIHGFEDCBAZYXWVUTSRQTEXYHY
UHCFQPONMLKJIHGFEDCBAZYXWVUFYZIZ
TGBEDCBAZYXWVUTSRQPONMLKJIHGZAJA
SFAZYXWVUTSRQPONMLKJIHGFEDCBABKB
REDCBAZYXWVUTSRQPONMLKJIHGFEDCLC
QPONMLKJIHGFEDCBAZYXWVUTSRQPONMD
LKJIHGFE
Aturan
- Input Anda akan berupa bilangan bulat non-negatif
0 <= n <= 1000
, tetapi kode Anda secara teoritis harus menangani bilangan bulat non-negatif. - Format output Anda mungkin dalam format waras, dengan pembatas jika perlu.
- Rotasi dan refleksi setara.
- Alfabet Anda mungkin huruf besar atau kecil.
- Ruang kosong di spiral Anda dapat diisi dengan nol non-alfabet apa pun yang Anda inginkan.
- Spiral itu sendiri mungkin dalam bentuk apa pun yang Anda inginkan. Spiral persegi panjang paling sesuai dengan solusi ASCII, tetapi solusi grafis mungkin lebih pendek dengan spiral melingkar.
- Ruang memimpin dan mengikuti dan baris baru diizinkan.
- Ini kode golf. Jawaban terpendek dalam byte (atau setara) menang.
Seperti biasa, jika ada yang tidak jelas atau salah, harap beri tahu saya di komentar. Semoga berhasil dan bermain golf dengan baik!
Jawaban:
Logo,
12987 byteSolusi grafis, diimplementasikan sebagai fungsi
Ini dibangun di atas penerjemah Logo Calormen.com . The
S
fungsi mengambil sejumlah karakter sebagai parameter dan menarik mereka dalam spiral.The. Saya memutuskan bahwa itu tampak lebih baik (dan golf 42 byte ) untuk menghilangkan mengoreksi orientasi huruf. Saya juga memperketat jarak yang tidak mengubah jumlah byte. Jika Anda benar-benar menggulung alfabet, toh akan terlihat lebih seperti ini.T
huruf fungsi output tegak untuk mencegah mereka dari berputar dengan spiral.Versi Diperbarui (roll huruf)
Doa
Panggil sebagai berikut:
S
iterasiOutput sampel
Versi Lama (huruf selalu tegak)
Keluaran lama dihapus untuk menghemat ruang. Lihat di sini .
sumber
95
akan mengubah ketatnya spiral, dan mengubah15
akan menyesuaikan spasi linear dari huruf-huruf.Javascript (ES6),
203201 byteDemo
Demo di bawah ini sebaiknya dijalankan di halaman penuh.
Tampilkan cuplikan kode
sumber
R, 46 atau 51 byte, tergantung pada jarak
(versi plot yang diperbarui: spiral abu-abu tidak diplot secara default, tetapi saya menambahkannya setelah itu untuk menunjukkan bahwa huruf-huruf tersebut memang terletak pada spiral.)
Spiral tidak memiliki spasi konstan, jadi saya harap ini baik-baik saja. Jika diperlukan spasi konstan, mulailah dengan
s=(1:scan())^.5
, dan tambahkan 5 byte ke total. Maka hasilnya adalah seperti di bawah ini (n = 150):sumber
Python 3.5,
180157152147141 byte-6 karena Sherlock9
-5 karena Kap.
Solusi yang Direvisi, python 3.x:
Solusi Sebelumnya:
Penjelasan
r
adalah daftar daftar yang memuat spiral. Ide dasarnya adalah bahwa huruf-huruf baru ditambahkan ke baris bawah spiral (r[-1].append(chr(x%26+65))
). Ketika baris bawah terisi, spiral diputar 90 searah jarum jam dan baris kosong baru ditambahkan ke bawah (r = list(zip(*r[::-1]))+[[]]
).Kuncinya adalah mencari tahu kapan harus memutar spiral. Dalam solusi pertama, generator
(j<1for i in R(n)for j in R(i//2+1))
menghasilkan urutan nilai Benar / Salah yang memberi tahu kapan harus memutar spiral. Dalam solusi yang direvisi, saya mengubah carar
diinisialisasi. Sekarang ketika panjang baris bawah sama dengan panjang baris atas, spiral harus diputar.sumber
if len(r[-1])==len(r[0]):r=list(zip(*r[::-1]))+[[]]
denganif len(r[-1])==len(r[0]):r=[*zip(*r[::-1]),[]]
untuk menyimpan 5 byte.range
sekali, Anda dapat menghapusR
untuk menyimpan byte. Anda juga dapat menyimpan byte dengan mengonversi jawaban Anda ke program lengkap, meskipun untuk mempertahankan penggunaannya[*zip(*r[::-1]),[]]
, Anda harus menggunakannyarange(int(input()))
.for x in range(int(input())):r=len(r[-1])<len(r[0])and r or[*zip(*r[::-1]),[]];r[-1]+=[chr(x%26+65)]
karena Anda memeriksa kapan baris terakhir sama atau lebih besar dari baris pertama.n
dalam versi ini. Entah Anda harus menggunakanint(input())
atau membungkus kembali dalam suatu fungsi.for
loop:for x in range(int(input())):r=len(r[-1])<len(r[0])and r or[*zip(*r[::-1]),[]];r[-1]+=[chr(x%26+65)]
MATL ,
2118 byteInput
0
keluar dengan kesalahan (yang diizinkan secara default ).Cobalah online!
Penjelasan
sumber
Python 2,
8482 byteSaya menggunakan Turtle lagi. Sangat menyenangkan! : D
Cobalah online
Sayangnya, Trinket.io memiliki kanvas kecil yang mengerikan. Saya mengubah
9+i
ke9+i/9
dan disesuaikan titik awal penyu untuk tujuan screen-menangkap gambar ini, sehingga lebih dari output akan cocok:sumber
from turtle import*
dan satu lagi dari mengubah dariwhile
kefor i in range(input())
Pyth, 32 byte
Sebuah program yang mencetak spiral ASCII huruf kecil persegi panjang. Bergantung pada input, satu baris atau kolom spasi putih terkemuka atau tambahan mungkin ada.
Cobalah online
Bagaimana itu bekerja
sumber
TSQL,
386362358306 byteHarap dicatat bahwa TSQL tidak memiliki cara untuk memutar teks. Script ini dimulai dari A dan menghitung ke arah mana huruf berikutnya harus ditempatkan. (kanan, bawah, kiri, kiri, kiri, atas, atas, kanan ...)
Script dapat menangani maksimal 7744 huruf.
Golf:
Tidak Disatukan:
Biola
sumber
Python 2, 243 byte
Ide itu!
sumber
PHP , 219 byte
Cobalah online!
PHP, 260 Bytes
Versi lama
sumber