Tujuan
Tujuan program ini adalah menggambar persegi panjang seni ASCII berulang kali dua kali lipat, bergantian secara horizontal dan vertikal. Setiap kali persegi panjangnya berlipat ganda, area tambahan diwakili oleh karakter yang berbeda dan area sebelumnya tetap tidak berubah. Dua bagian terkecil masing-masing berisi satu karakter dan mungkin ada di sudut mana pun.
Program menerima bilangan bulat tunggal sebagai input, mendefinisikan jumlah bagian yang berisi persegi panjang penuh.
Tidak ada sumber daya eksternal atau input yang diizinkan.
Input dan output sampel
10
ABDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
CCDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
Kriteria pemilihan
Kode terpendek dalam seminggu memenangkan poin.
Jawaban:
APL, 25 karakter / byte *
Tampilan meledak
Contohnya
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL dapat ditulis dalam charset byte tunggal miliknya (legacy) yang memetakan simbol APL ke nilai 128 byte atas. Oleh karena itu, untuk tujuan penilaian, program karakter N yang hanya menggunakan karakter ASCII dan simbol APL dapat dianggap sebagai panjang N byte.
sumber
GolfScript, 30 karakter
Contoh (jalankan online ):
sumber
Python 2.7 - 85
103Ini menggunakan
zip(*s)
sintaks untuk terus mengubah urutan daftar. Terima kasih banyak untuk Daniel atas tipnya yang mencukur 12 karakter! Kemudian mencukur beberapa lagi dengan menggunakan angka, bukan huruf.Juga, ini menggunakan
1<<x
daripada2**x
bit shift memiliki prioritas lebih rendah (?). Mengamati:Dan beberapa output:
sumber
for i in s:print''.join(i)
.Ruby, 88
Membaca N dari input standar.
Contoh Penggunaan untuk N = 8:
Keluaran:
N = 10
Keluaran:
sumber
J,
5743Contoh:
sumber
MATLAB, 86 Karakter
Percobaan terpendek saya di MATLAB, pimped oleh @ flawr (dua kali!):
Contoh output:
sumber
function M=f(n) M=''; if n M=cat(mod(n,2)+1,f(n-1),64+n*ones(2.^fix([n-1,n-2]/2))); end
fix
denganfix(n/2-[.5,1])
PS: Solusi yang benar-benar baguscat
, tidak tahu tentang penggunaan ini di mana Anda dapat memilih dimensi =)q [73 karakter]
contoh
sumber
Sclipting , 59 karakter
(Program ini bisa menjadi sedikit lebih pendek jika saya memiliki instruksi untuk basis-2 logaritma, tetapi saya tidak melakukannya, jadi saya melakukannya secara manual dengan sebuah loop.)
Kode beranotasi
n
adalah input.Keluaran
Untuk
n
= 6:Tentu saja Anda dapat mengubah
뀀
(@
) ke karakter dasar lainnya, misalnya dengan글
(spasi) dann
= 7:Angka tertinggi yang tidak membuat program lebih lama adalah
믰
(= 255), yang memberi kami (n
= 8 kali ini):Jika kita membuat karakter program 1 lebih panjang, mis. Gunakan
냟및
(=\u4DFF
) dann
= 9, kita mendapatkan:sumber
C #,
239185182180 byteC # tidak memiliki apa pun dalam bahasa yang kurang bertele-tele.
Output, karakter yang dipilih untuk kecantikan:
sumber
for
lingkaran luar , menghasilkan 182.PERL, 122 karakter
dengan spasi tambahan:
Keluaran:
sumber
PERL,
9481 karakterItu membangun fraktal iteratif huruf per huruf, menambahkan baris dan kolom baru dan baris dan kolom ... Menggunakan operasi string sederhana untuk melakukan itu. Perhatikan bahwa saya menyalahgunakan variabel standar, bukan huruf satu untuk memungkinkan sintaksis gula (seperti menghilangkan spasi -
$:x2
dll.)Dengan spasi dan komentar tambahan:
Beberapa output:
sumber
Sclipting , 45 karakter
Solusi ini bekerja sangat berbeda dari solusi Sclipting lainnya. Ini jauh lebih membosankan, tetapi lebih pendek ...
Beranotasi
sumber
Delphi 348 || 449 dengan indentasi
Tanpa indentasi
Dengan indentasi
sumber
CJam, 30 (23) byte
CJam beberapa bulan lebih muda dari tantangan ini sehingga tidak memenuhi syarat untuk tanda centang hijau.
Uji di sini.
OP mengklarifikasi dalam komentar bahwa setiap set karakter unik yang dapat dicetak diperbolehkan, jadi saya hanya mengambil karakter ASCII yang dapat dicetak dari awal (dengan spasi di sudut,
!
berikutnya dan seterusnya).Jika orientasi dapat berubah antara input genap dan ganjil (yang menurut saya tidak, tapi itulah yang dilakukan oleh GolfScript), saya dapat melakukannya dalam 25 byte:
Idenya sangat sederhana: mulai dengan kisi yang berisi spasi, lalu N-1 kali transpos dan gandakan semua garis dengan karakter berikutnya.
Untuk versi panjang, pada akhirnya saya juga memindahkan lagi N-1 kali untuk menjamin orientasi yang konsisten.
sumber