Tantangan
Diberikan dua string, masing-masing panjangnya hingga 30, terdiri dari karakter ASCII yang dapat dicetak (kode ), menempatkan mereka ke skala keseimbangan dalam byte kode paling sedikit! Ini terdiri dari langkah-langkah berikut:
- Hitung dan bandingkan bobot senar
- Pilih skala ASCII-art yang dimiringkan dengan tepat
- Tempatkan kedua string ke skala
String dapat diteruskan sebagai array, dua argumen, atau metode masuk akal lainnya.
The berat string didefinisikan sebagai jumlah dari bobot karakter string, di mana:
- Spasi memiliki bobot 0 (
)
- Huruf kecil memiliki bobot 2 (
abcdefghijklmnopqrstuvwxyz
) - Huruf besar memiliki berat 4 (
ABCDEFGHIJKLMNOPQRSTUVWXYZ
) - Semua simbol lainnya memiliki berat 3 (
!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~
)
Timbangannya terlihat seperti ini:
. _ | _- * / \ | - * / \ _- * | / \ _- * | / \ / \ | * ------ * / \ | / \ | / \ | * ------ * | ______ | ______
_. / \ * -_ | / \ * - | / \ | * -_ / \ | * -_ * ------ * | / \ | / \ | / \ | / \ | * ------ * ______ | ______
. | ______ | ______ / \ | / \ / \ | / \ / \ | / \ / \ | / \ * ------ * | * ------ * | | ______ | ______
Jika string pertama lebih berat, gunakan gambar pertama sebagai basis output Anda; jika string kedua lebih berat, gunakan gambar kedua; jika senar memiliki bobot yang sama, gunakan yang ketiga. Trailing whitespace diizinkan.
Saya akan menggunakan segmen gambar ketiga sebagai dasar untuk semua contoh berikut.
Tali pertama harus diletakkan di atas loyang kiri, dan tali kedua di loyang kanan.
Tempatkan string pada panci dengan menempatkan karakter non-spasi di dalam area 6x5 tepat di atas tanda hubung, seperti yang ditandai oleh #
s di sini (Anda mungkin akhirnya menimpa bagian dari skala keseimbangan - yang baik-baik saja):
###### _ ###### ###### ###### / ###### \ * ------ *
Semua karakter ini harus "diselesaikan" yaitu. baik di atas -
karakter atau karakter lain dari string:
SALAH SALAH BENAR ____ ____ ____ f / \ / \ / \ l \ / \ / \ / \ / hov \ / s \ / oating \ / eri ng \ / ettled \ * ------ * * ------ * * ------ *
Selain itu, seluruh tumpukan harus serata mungkin, artinya dari keenam kolom selebar 1, tinggi tertinggi dan tinggi paling pendek tidak boleh berbeda lebih dari 1:
SALAH SINGKAT BENAR [tertinggi: 5] [tertinggi: 4] [tertinggi: 5] [tertinggi: 2] [terpendek: 0] [terpendek: 2] [terpendek: 4] [terpendek: 2] 5__5_ ____ 5_5__ ____ 45445 & / \ 445454 / \ 45445 $% & $ @ 445454 / \ / 45445 &% @% $ & 445454% & $ @% & / 45445 \ / & $ @ $ &% \ / 445454 \ / $ @ $% $$ \ * ------ * * ------ * * ------ * * ------ *
Urutan / pengaturan karakter yang tepat tidak masalah. Berikut ini adalah semua pengaturan yang valid untuk string "Timbang kata-kata Anda!":
____ ____ ____ ____ / \ / \ / \ / \ ds! \ / owd oe \ u! Wd \ ourwor Wihuos yoiwgr eghioo / Timbang \ / egyrr! \ / Wrhd! S \ / rrsuwy \ * ------ * * ------ * * ------ * * ------ *
Uji kasus
INPUT: "CODE GOLF", "tantangan coding" BERAT: 32, 32 CONTOH OUTPUT: . | ______ | ______ / \ | / \ / \ | nge / OO \ | challe / CFGLED \ | / coding \ * ------ * | * ------ * | | ______ | ______
INPUT: "", "$" BERAT: 0, 3 CONTOH OUTPUT: _. / \ * -_ | / \ * - | / \ | * -_ / \ | * -_ * ------ * | / \ | / \ | / \ | / $ \ | * ------ * ______ | ______
INPUT: "KAU TAHU APA YANG MEREKA KATAKAN!", "There_always_a_relevant_xkcd" BERAT: 75, 65 CONTOH OUTPUT: . tr_a_s | _hekx_y | - * elcdta _- * | Revanw _- * | / e's_al \ T / \ | * ------ * AUYOHY | A! HWYK | / OTSMEW \ | * ------ * | ______ | ______
+1
. Pertama: jika ruang tidak "menimbang" apa pun dan tidak dimasukkan ke dalam karya seni lalu mengapa menyertakannya sama sekali? Hanya overhead yang tidak perlu untuk menyaring mereka terlebih dahulu. Kedua: ini terasa seperti tantangan "2-in-1" / bunglon bagi saya - Tantangan 1: Tentukan string mana yang "lebih berat", Tantangan 2: Hasilkan beberapa seni ASCII.Jawaban:
Arang , 110 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil input sebagai array dari dua string. Penjelasan:
Hapus spasi dari kedua string.
Asumsikan keseimbangan bobot.
Ulangi kedua dawai.
Kurangi perbedaan lari dari bobot tali.
Cetak dasar skala keseimbangan.
Asumsikan bahwa kedua panci adalah 3 dari tanah.
Jika bobot tidak seimbang ...
... hitung ketinggian wajan kiri ...
... menggambar keseimbangan condong ke kanan ...
... dan mencerminkan jika panci kiri lebih berat.
Kalau tidak, tarik keseimbangan level.
Lompat ke panci skala pertama.
Ulangi input.
Gambarkan panci skala.
Iris input ke dalam substring dengan panjang 6 dan cetak terbalik sehingga mengisi panci ke atas.
Lompat ke panci skala kedua.
sumber
Python 2 ,
11011071855837 byte-216 byte dengan kompresi string
-18 byte dengan mengurangi beberapa pengulangan
Cobalah online!
Jalankan sebagai
A(string_one, string_two
.w
menghitung berat string secara rekursif.t
adalah teks terkompresi dan interlaced dari semua enam skala yang mungkin, yang terjadi untuk mengompresi dengan sangat baik.p
mengambil string (dengan spasi dihilangkan), bobot string, dan sisi keseimbangan string yang aktif, dan menciptakan blok karakter 5x6.A
mengambil string, dan membangun blok mereka denganp
. String raksasa di bagian bawah adalah tiga format string yang saling terkait dan terkompresi.sumber
JavaScript (ES6),
340337 byteMengambil input sebagai array dari 2 array karakter. Menarik karakter keluaran dengan karakter.
Cobalah online!
Bagaimana?
Kami sekarang memanggil fungsi pembantu kedua untuk menggambar output:
Di mana
INDEX
dihitung sebagai berikut:sumber
Java 10,
1043993988983 byte-5 byte terima kasih kepada @ceilingcat .
Input adalah dua String, yang akan menghasilkan karakter-matriks sebagai hasilnya.
Cobalah online.
Penjelasan:
sumber