Dalam font piksel huruf besar alfabet ini, semua karakter berukuran 5 unit dan 5 tinggi.
███ ████ ███ ████ █████ █████ ████ █ █ █████ █ █ █ █ █ █
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██ ██
█████ ████ █ █ █ ████ ████ █ ██ █████ █ █ ███ █ █ █ █
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █ ████ ███ ████ █████ █ ████ █ █ █████ ███ █ █ █████ █ █
█ █ ███ ████ ███ ████ ████ █████ █ █ █ █ █ █ █ █ █ █ █████
██ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █ █ █ █ ████ █ █ ████ ███ █ █ █ █ █ █ █ █ █ █ █
█ ██ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █ ███ █ ████ █ █ ████ █ ███ █ █ █ █ █ █ █████
Ada juga 1 unit ruang antara huruf dan antara garis, seperti yang bisa dilihat. Jadi setiap huruf bisa memakan ruang hingga 6 × 6 unit.
Misalkan alih-alih menggunakan karakter blok penuh ( █
) untuk langsung membentuk bentuk huruf, kami ingin menggunakan huruf lain dalam font yang sama . Ini melibatkan peningkatan dimensi teks 6 kali lipat sehingga huruf yang terbuat dari blok penuh dapat digunakan sebagai pengganti blok penuh dalam teks yang lebih besar.
Jika itu tidak masuk akal semoga contoh ini akan terjadi. Ini adalah A yang terbuat dari B menggunakan font pixelated:
████ ████ ████
█ █ █ █ █ █
████ ████ ████
█ █ █ █ █ █
████ ████ ████
████ ████
█ █ █ █
████ ████
█ █ █ █
████ ████
████ ████ ████ ████ ████
█ █ █ █ █ █ █ █ █ █
████ ████ ████ ████ ████
█ █ █ █ █ █ █ █ █ █
████ ████ ████ ████ ████
████ ████
█ █ █ █
████ ████
█ █ █ █
████ ████
████ ████
█ █ █ █
████ ████
█ █ █ █
████ ████
B dibuat dari blok penuh dan A dibuat dari B. Perhatikan bahwa B masih memiliki satu unit di antara mereka secara horizontal dan vertikal.
Kita dapat memperluas ide ini dengan menggunakan kata-kata, bukan hanya huruf. Inilah "AIR" yang terbuat dari "KEBAKARAN":
█████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████ ████ █ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █
█████ █████ ████ █████ █████ █████ ████ █████
█ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████
█ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████
█████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████ █████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████ █
█████ █████ ████ █████ █████ █████ ████ █████ █████
█ █ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████ ████
█ █ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████ █
█████ █████ ████ █████ █████ █████ ████ █████ █████ █████ ████ █████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █
████ █ ████ ████ ████ █ ████ ████ ████ █ ████ ████
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █████ █ █ █████ █ █████ █ █ █████ █ █████ █ █ █████
Perhatikan bagaimana "KEBAKARAN" muncul berulang kali pada setiap baris, dan selalu berurutan, tidak peduli berapa banyak ruang di antara huruf-huruf. Tiga contoh paling kanan dari "KEBAKARAN" terputus lebih awal karena bagaimana huruf "WATER" terbentuk.
Gagasan ini dapat dikembangkan lebih jauh, dengan menggunakan kata - kata yang terbuat dari kata-kata ini untuk membuat kata - kata yang terbuat dari kata-kata , atau bahkan kata - kata yang terbuat dari kata-kata yang terbuat dari kata-kata yang terbuat dari kata-kata . Secara teori tidak ada batasan.
Contoh lain akan menempatkan posting ini melebihi batas karakter 30k, tetapi Anda dapat melihat apa yang dimaksud dengan "kata-kata yang terbuat dari kata-kata" dengan menjalankan Cuplikan Stack yang bagus ini. Biarkan saja parameternya di default dan tekan "Go!". Anda akan melihat kata "DOG" yang terbuat dari kata "CAT" yang terbuat dari kata "MOUSE".
Mengetik daftar kata - kata yang dipisahkan oleh spasi yang hanya berisi huruf kapital di kotak teks akan menghasilkan kata pertama yang terbuat dari kata kedua yang dibuat dari kata ketiga, terbuat dari huruf keempat, terbuat dari ... dll.
PERINGATAN: Memasukkan lebih dari 4 atau bahkan 3 kata akan menghasilkan BANYAK teks dan membutuhkan waktu PANJANG. Ini dapat merusak browser / komputer / mobil Anda.
Tantangan
Tujuan dari tantangan ini adalah untuk mencerminkan apa yang dilakukan Stack Snippet dalam jumlah karakter paling sedikit.
Anda harus menulis sebuah program yang mengambil string kata-kata yang dipisahkan oleh spasi yang hanya berisi huruf kapital, dan mengeluarkan kata pertama "terbuat dari" yang kedua "yang dibuat" dari yang ketiga dan seterusnya, menggunakan font pixelated yang diberikan di atas.
Kotak centang "Plain ASCII" dan fitur ukuran font snippet tidak perlu didukung dalam program Anda. Mencerminkan transformasi dari daftar kata menjadi kata-kata yang terbuat dari kata-kata adalah poin utama dan satu-satunya syarat.
Detail
Input harus berasal dari stdin, baris perintah, atau Anda dapat menulis fungsi yang mengambil string.
Anda dapat mengasumsikan input selalu valid, yaitu serangkaian kata yang terbuat dari huruf kapital, dipisahkan dengan tepat satu spasi, tanpa spasi awal atau spasi tambahan.
Keluaran harus menuju stdout (atau alternatif serupa) atau ke file dengan nama pilihan Anda.
Keluaran harus seluruhnya terdiri dari karakter ruang kosong , karakter ruang penuh , dan baris baru.
- Karakter kosong / spasi penuh masing- masing harus berupa spasi dan blok penuh (
,
█
), atau titik dan X (.
,X
).
- Karakter kosong / spasi penuh masing- masing harus berupa spasi dan blok penuh (
Output tidak boleh mengandung kolom utama yang hanya berisi karakter ruang kosong , meskipun kombinasi karakter spasi kosong di garis mana pun diperbolehkan.
Jadi ini diperbolehkan:
X...X.XXXXX.. X...X.X X.X.X.XXXX.... X.X.X.X.. .X.X..XXXXX..
Tapi ini bukan:
.X...X.XXXXX.. .X...X.X .X.X.X.XXXX.... .X.X.X.X.. ..X.X..XXXXX..
Seharusnya tidak ada baris depan atau belakang yang hanya berisi karakter ruang kosong . Sebuah baris baru yang membuntuti secara opsional diizinkan.
Ini adalah versi font yang lebih ramah string:
.XXX.
X...X
XXXXX
X...X
X...X
XXXX.
X...X
XXXX.
X...X
XXXX.
.XXX.
X...X
X....
X...X
.XXX.
XXXX.
X...X
X...X
X...X
XXXX.
XXXXX
X....
XXXX.
X....
XXXXX
XXXXX
X....
XXXX.
X....
X....
.XXXX
X....
X..XX
X...X
.XXXX
X...X
X...X
XXXXX
X...X
X...X
XXXXX
..X..
..X..
..X..
XXXXX
....X
....X
....X
X...X
.XXX.
X...X
X..X.
XXX..
X..X.
X...X
X....
X....
X....
X....
XXXXX
X...X
XX.XX
X.X.X
X...X
X...X
X...X
XX..X
X.X.X
X..XX
X...X
.XXX.
X...X
X...X
X...X
.XXX.
XXXX.
X...X
XXXX.
X....
X....
.XXX.
X...X
X...X
X..XX
.XXXX
XXXX.
X...X
XXXX.
X..X.
X...X
.XXXX
X....
.XXX.
....X
XXXX.
XXXXX
..X..
..X..
..X..
..X..
X...X
X...X
X...X
X...X
.XXX.
X...X
X...X
.X.X.
.X.X.
..X..
X...X
X...X
X.X.X
X.X.X
.X.X.
X...X
.X.X.
..X..
.X.X.
X...X
X...X
.X.X.
..X..
..X..
..X..
XXXXX
...X.
..X..
.X...
XXXXX
Mencetak gol
Ini adalah kode-golf sehingga pengiriman terpendek dalam byte menang. Setiap instance dari blok penuh ( █
) dapat dihitung sebagai 1 byte, bukan 3 sehingga pengiriman yang menggunakan X
tidak memiliki keuntungan.
sumber
javascript:
Ke bar URL dan paste) untuk membuat seni ASCII di sini banyak, banyak lebih mudah dibaca:$('#question pre').css('line-height',1)
. Hasil: i.stack.imgur.com/XmB8C.png$('#question pre, .answer pre').css('line-height',1)
Jawaban:
CJam,
171 165 162161 byteSaya memperlakukan
█
sebagai 1 byte. Istirahatkan semua karakter dengan baik dalam jangkauan ASCII, jadi perlakukan mereka sebagai 1 byte juga.Anda dapat menggunakan pastebin ini untuk kode yang tepat
Contoh output untuk input:
Bagaimana itu bekerja
Pertama-tama
hanyalah pola untuk masing-masing 27 karakter (
A-Z
dan spasi) yang terdiri dari0
(padaX
posisi) dan1
(pada.
posisi). Setelah decoding, ini memberikan array elemen 27 array 2D dari 5 baris dan 5 kolom yang mewakiliX
dan.
untuk masing-masing 27 karakter. Biarkan kami memanggil array ini sebagaiL
.Sekarang kode yang tersisa:
Cobalah online di sini
sumber
Python 3, 437 byte
Bentuk karakter dikodekan dalam ASCII. Setiap byte ASCII sesuai dengan satu baris dari satu karakter, dengan bit yang mewakili blok unit. Ini bukan skema yang sangat efisien, tetapi mudah untuk membuka paket bitmap NumPy untuk setiap karakter.
Kami memulai dengan array 2d 1s. Ini memiliki satu kolom untuk setiap karakter di kata pertama dan satu baris. Kemudian, untuk setiap kata, kami membuat array baru 0s, enam kali lebih tinggi dan enam kali lebih luas dari array sebelumnya. Di mana array sebelumnya memiliki 1, bagian 6x6 yang sesuai dari array baru diisi dengan bitmask karakter yang sesuai.
Ini sebuah contoh (dengan font yang sangat kecil):
sumber
CJam,
181174170 byteSemua karakter non-ASCII masih dalam jangkauan ASCII yang diperluas, sehingga semuanya dapat dikodekan dalam satu byte. (Kecuali untuk
█
, tetapi yang diperlakukan secara khusus sesuai dengan tantangan spec.) Oleh karena itu, saya menghitung setiap karakter sebagai byte.Stack Exchange mungkin telah merusak beberapa karakter yang tidak patut dicetak, jadi Anda mungkin harus menyalin kode dari pastebin ini .
Uji di sini.
Mengambil input melalui STDIN sebagai daftar kata yang dipisahkan oleh ruang. Kata pertama adalah skala terbesar. Contohnya:
hasil panen
Penjelasan
Pertama, kami menyimpan tabel pencarian untuk bentuk huruf di
L
:String pertama hanya angka terkompresi. Kami memperlakukan poin kode sebagai basis-257 digit, lalu kami mengonversi angka yang dihasilkan menjadi biner.
YYb
adalah 2 ada di basis 2, jadi itu memberi[1 0]
. Kami menggunakan substitusi elemen dengan" █"
mengubah digit menjadi spasi dan memblokir karakter. Terakhir, kami membagi string menjadi baris 5 karakter, dan lagi menjadi blok dari 5 baris. Hasilnya disimpanL
dan dibuang dari tumpukan.Sekarang ide umumnya adalah memulai dengan satu baris
█
panjang dari kata berskala terbesar. Dan kemudian untuk setiap kata kita melewati kisi yang ada, dan memperluas semua blok ke karakter yang sesuai pada skala yang lebih kecil berikutnya (sambil menyisipkan baris dan kolom kosong untuk pemisahan). Berikut persiapan input:Mari kita lihat struktur terluar dari program yang tersisa terlebih dahulu. Blok berikutnya
{...}/
dijalankan untuk setiap kata, dan memperluas setiap karakter blok.Terakhir, mari kita lihat bagaimana satu baris diperluas:
Hasilnya dicetak secara otomatis di akhir program.
sumber