Tulis program atau fungsi yang menggunakan dua bilangan bulat positif, lebar dan tinggi, dan gambar pola kisi houndstooth art ASCII dengan dimensi tersebut menggunakan kisi teks 25 × 26 ini sebagai sel dasar:
.......#.....#####.......
.......##.....#####......
.......###.....#####.....
.......####.....####.....
.......#####.....###.....
.......######.....##.....
.......#######.....#.....
.......########..........
####################.....
.####################....
..####################...
...####################..
....####################.
.....####################
#.....##############.####
##.....#############..###
###....#############...##
####...#############....#
#####..#############.....
.#####.#############.....
..##################.....
........#####............
.........#####...........
..........#####..........
...........#####.........
............#####........
Jadi jika inputnya adalah 2,1
output:
.......#.....#####..............#.....#####.......
.......##.....#####.............##.....#####......
.......###.....#####............###.....#####.....
.......####.....####............####.....####.....
.......#####.....###............#####.....###.....
.......######.....##............######.....##.....
.......#######.....#............#######.....#.....
.......########.................########..........
####################.....####################.....
.####################.....####################....
..####################.....####################...
...####################.....####################..
....####################.....####################.
.....####################.....####################
#.....##############.#####.....##############.####
##.....#############..#####.....#############..###
###....#############...#####....#############...##
####...#############....#####...#############....#
#####..#############.....#####..#############.....
.#####.#############......#####.#############.....
..##################.......##################.....
........#####....................#####............
.........#####....................#####...........
..........#####....................#####..........
...........#####....................#####.........
............#####....................#####........
Dan jika inputnya adalah 5,4
outputnya adalah:
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
- Argumen lebar harus didahulukan. Format input yang masuk akal (mis
w,h
.w h
,(w, h)
) Baik-baik saja. - Cetak atau kembalikan hasilnya dengan baris tambahan opsional.
- Anda dapat menggunakan dua karakter ASCII yang dapat dicetak untuk menggantikan
.
dan#
. - Anda dapat menerjemahkan sel pangkalan secara vertikal atau horizontal, seolah-olah memiliki kondisi batas periodik . Jadi sudut kiri atas dari output tidak harus persegi panjang 7 × 8
.
. ( Aturan baru! )
Kode terpendek dalam byte menang.
Sebagai bonus, hasilkan gambar sebagai gantinya di mana masing .
- masing adalah pixel dari satu warna dan masing-masing #
adalah pixel dari warna lain.
code-golf
ascii-art
kolmogorov-complexity
Hobi Calvin
sumber
sumber
Jawaban:
Pyth,
61605549 byteCobalah online: Demonstrasi
sunting 1: Gabungkan dua pernyataan yang menghasilkan pita dan segitiga (lihat di bawah)
sunting 2: Tidak melihat bahwa kami dapat menggunakan simbol apa pun. Disimpan 5 byte edit
sunting 3: @Hobi Calvin diizinkan menerjemahkan gambar dasar. Karena pendekatan saya didasarkan pada ide ini, ini banyak membantu. -6 byte
Dan untuk bonus Cookie :
Ini hanya 2 byte lebih lama (51 byte) dan menghasilkan file
o.png
. Untuk input5\n4
itu menghasilkan gambar berikut:Penjelasan:
Pola Houndstooth terlihat sangat tidak teratur. Tetapi jika kita membawa 7 kolom kiri ke kanan dan 5 baris teratas ke botton kita mendapatkan pola yang lebih bagus:
Pertama saya membuat blok 13x13 kiri atas:
Ada 2 ketidaksetaraan sederhana, yang menggambarkan dua-
#
daerah. Band dapat dijelaskan olehy + 1 <= x <= y + 5
dan segitiga dapat dijelaskan olehx <= y - 5
. Saya sudah menggabungkan dua kondisi ini:Kemudian
+Rm012
tambahkan 12 nol di akhir setiap baris, untuk mendapatkan blok 25x13 atas.Blok 25x13 bawah sekarang sangat sederhana:
Yang tersisa sekarang adalah mengulangi pola dan mencetaknya
Perbedaan dengan kode bonus Cookie :
255
dari pada1
mjk*Qd
saya gunakan*RQ
, karena saya tidak ingin string.w
menyimpan 2D-array ini ke file (mengubahnya ke png secara implisit)sumber
CJam,
1067371 byteMencetak
1
dan0
bukannya.
dan#
. Cobalah online di juru bahasa CJam .Bagaimana itu bekerja
Bonus kue
mencetak Portable BitMap alih-alih seni ASCII.
Di bawah ini adalah output untuk input
24 13
, dikonversi ke PNG:sumber
Befunge-93 ,
21201967 bytesIni beberapa befunge berkualitas tinggi, dengan penanganan pengecualian untuk debugging!
(Jelas, ini masih sangat golf. Saya hanya ingin mendapatkan jawaban di sini untuk saat ini)
Jadi, ini terdiri dari bagian yang berbeda.
Ini hanya penginisialisasi, mengambil nilai dan menyimpannya
Bagian ini mengatur ulang jumlah baris, sehingga kami dapat mencetak gambar (lebar) lainnya berdampingan.
94+2*
menghitung 26, jumlah baris. Juga, jika tingginya nol, program akan berakhir.Ini mendapatkan lebar pada tumpukan sehingga kita tahu berapa banyak yang harus dicetak
Ini menambahkan dua nilai dummy ke stack untuk memberi tahu kapan kita telah menyelesaikan operasi, serta baris (n) apa yang sedang kita gunakan. Ini kemudian menambahkan nilai n ke stack
Ini adalah bagian kontrol yang akan ke baris (26-n). Ini adalah cara termudah yang saya tahu bagaimana melakukannya.
Ini, jelas, sudah dibaca dan akan memunculkan baris apa pun yang dibaca ke tumpukan ke belakang. Ini berarti ketika kita mematikannya, itu akan dicetak dengan benar.
Ini akan mencetak sampai tumpukan mencapai angka 0, yang kita tinggalkan sebelumnya.
Ini menghilangkan 1 dari jumlah baris tertentu untuk dicetak, kemudian memeriksa apakah nol atau tidak. Jika bukan nol, kita kembali ke blok kode keempat.
Ini mengurangi 1 dari baris (n), mencetak baris baru, dan kembali ke blok 3
Setelah semua baris telah dicetak, ini mengurangi satu dari ketinggian awal dan kembali ke blok 2.
Seluruh kode lainnya adalah kontrol aliran atau manajemen tumpukan. Menulis mas ini lebih dari yang saya kira, tapi saya puas dengan tampilannya. Ini jauh lebih golf, dan itu kemungkinan akan tetap menjadi proyek untuk hari lain.
2120 -> 1967 : memangkas beberapa garis dengan banyak ruang kosong
sumber
Perl, 243
(Satu byte ditambahkan untuk
-n
switch untuk mengambil input dari stdin.)Ini cukup mudah - yang dilakukannya hanyalah mengonversi array 26 angka hex ke biner dan mencetaknya beberapa kali.
Contoh:
Memasukkan:
Keluaran:
sumber
Rev 1, C,
118115 byte9 byte disimpan karena aturan baru yang memungkinkan terjemahan sel. 3 byte disimpan dengan menggunakan
w*=25
. Sisa pos tetap tidak berubah.Rev 0, C, 127 byte
Ini melewati karakter, mencetaknya satu per satu.
i%(25*w)||puts("")
menyisipkan baris baru di akhir setiap baris.Cara saya melihat desainnya mirip dengan Jakube, tapi saya membawa 8 baris teratas ke bawah dan 5 kolom kanan ke kiri untuk mendapatkan tampilan berikut. Dalam program ini langkah ini "terbalik" oleh
+20
dan+8
dalam ekspresi untuk x dan y.Terlepas dari "inversi warna" mungkin terlihat sangat mirip, tetapi ada perbedaan penting: garis-garis diagonal cocok. (perhatikan bahwa desain aslinya tidak memiliki simetri diagonal karena ukurannya 25x26.)
Ekspresi
((y>x^y>x+5^x>y+4)^y/13)+34
menghasilkan yang berikut, di mana berbagai operator perbandingan menghasilkan garis-garis, yang^y/13
menghasilkan "flip warna" setengah jalan dan+34
mengambil jumlah yang dihasilkan0,1
dan mendorongnya ke kisaran ASCII34,35
.Istilah
&y/13==x/13
mengevaluasi ke false = 0 di perempat kanan atas dan kiri bawah, menghasilkan bagian kuadrat dari pola seperti yang ditunjukkan sebelumnya. Perhatikan bahwa karena program downcounts, asal x = y = 0 ada di kanan bawah. Ini berguna karena kuadrat#
adalah 13 karakter sedangkan kuadrat"
hanya 12 karakter.sumber
Befunge -93, 968 byte
Ya itu betul! Jawaban Befunge yang bersaing!
Penjelasan besok, tidur sekarang. Saya akan mengatakan, bagaimanapun, bahwa saya melakukan hal-hal pintar dengan memindahkan beberapa panah redirection dan saya menggunakan properti wrap-around juga sedikit. Uji dalam juru bahasa online ini .
sumber