Seseorang dengan terburu-buru menumpuk hadiah Natal, dan itu cukup berantakan:
========================
| |
========================
=============
| |
| |
| |
| |
| |
| |
=============
=======
| |
| |
| |
=======
===================
| |
| |
| |
===================
=================
| |
| |
| |
| |
=================
=======
| |
| |
=======
Seperti, serius, bagaimana top itu menyajikan keseimbangan. Mungkin palu. Untuk mencegah menara hadiah ini runtuh, Anda harus menyusun ulang hadiah agar tertumpuk dengan baik:
=======
| |
| |
=======
=======
| |
| |
| |
=======
=============
| |
| |
| |
| |
| |
| |
=============
=================
| |
| |
| |
| |
=================
===================
| |
| |
| |
===================
========================
| |
========================
Aturan
- Setiap hadiah terdiri dari karakter atas dan bawah
=
, dan satu atau lebih baris tengah, yang terdiri dari dua|
dipisahkan oleh spasi. Lebar hadiah sama di semua barisnya. - Tidak ada garis kosong.
- Hadiah berurutan akan tumpang tindih dalam setidaknya satu kolom.
- Hadiah harus ditumpuk agar mengurangi lebar. Jika ada dasi, hadiah yang lebih tinggi harus di bawah hadiah yang lebih rata.
- Hadiah harus dipusatkan pada saat ini di bawah. Jika hadiah tidak dapat ditempatkan tepat di tengah (karena perbedaan lebar ganjil), Anda dapat memilih posisi yang setengah karakter dari tengah.
- Anda mungkin atau mungkin tidak berasumsi bahwa input memiliki satu baris baru, tetapi tolong sebutkan asumsi Anda.
- Solusi Anda tidak harus berfungsi untuk input kosong, tetapi harus dapat menangani satu hadiah.
- Anda dapat menulis sebuah program atau fungsi, yang mengambil input melalui STDIN atau argumen fungsi dan mengembalikan hasilnya atau mencetaknya ke STDOUT.
- Ini adalah kode golf, jadi jawaban tersingkat (dalam byte) menang.
Japt , 18 byte
Cobalah online!
Saya menggunakan strategi yang cukup berbeda dari jawaban Japt lain yang saya pikir layak untuk dijawab sendiri. Mengambil input dan output sebagai array garis
Penjelasan:
Saya tidak tahu persis mengapa "sort default" berfungsi seperti itu, tetapi saya telah menguji bahwa kotak yang lebih tinggi dari keduanya dengan lebar yang sama ada di bagian bawah terlepas dari mana yang lebih dulu ada di input.
sumber
"=="
dengan'=²
untuk menyimpan byte.Ruby, 164
Tantangan rapi! Tidak bisa menurunkannya lebih jauh.
Penjelasan
Input
String
dicincang menjadi diArray
mana setiap hadiah adalah elemen. Kemudian array diurutkan berdasarkan jumlah karakter pipa dan diurutkan lagi dengan jumlah tanda yang sama.Itu kemudian menghapus semua spasi putih terkemuka dan mencetak setiap baris secara individual, dipusatkan dengan lebar hadiah terbesar.
Berperilaku sama dengan atau tanpa baris baru di input.
Versi yang mudah dibaca
sumber
05AB1E ,
2320 byte-3 byte terima kasih kepada @ErikTheOutgolfer .
Cobalah online.
Penjelasan:
Catatan:
c
menjadi huruf besarC
.|
dapat dijatuhkan jika kita diizinkan untuk mengambil input sebagai daftar garis-string.|
menghapusnya.sumber
ðδÛ
dapat digunakan alih-alih diεðÛ}
sini,¶'=.ø
sama dengan…=\n=
(\n
berarti baris baru),0'=.ø
sama dengan…=0=
..ø
bukannya string 3-char literal .. Dan terima kasih untukðδÛ
. Sebenarnya tidak pernah digunakanδ
sebelumnya dan tidak tahu itu berfungsi seperti itu.Atase , 91 byte
Cobalah online!
Tidak disatukan
sumber
Perl 5
-n0
, 123 byteCobalah online!
sumber
Python 2 ,
221196 byteCobalah online!
Mengharapkan string yang dikutip tanpa tertinggal baris baru sebagai input.
Tidak hebat, tapi itu yang terbaik yang bisa saya lakukan.
sumber
Japt ,
232019 bytePendekatan yang mirip dengan solusi Kevin . Bita pertama dapat dihapus jika kita dapat mengambil input sebagai array baris.
Cobalah
sumber
Saya seorang pemula untuk kode-golf, dan tidak seperti ahli dalam javascript tetapi tantangannya menarik dan menyenangkan. Saya ingin melihat trik apa yang akan digunakan oleh seorang ahli js.
Asumsi
Kode
Input di
g[]
. Output dalamm[]
.Kode ini berfungsi oleh
membangun array objek, masing-masing objek mewakili satu kotak, dengan dua anggota: K, kunci pengurutan adalah (lebar x 100 + tinggi) dan O, array dari string (dipangkas) yang membentuk kotak. Saat membangun array kode mengingat lebar kotak terlebar.
Array objek kotak diurutkan ke dalam urutan dengan tombol K. Dimana kotak memiliki lebar yang sama, kunci memastikan mereka diurutkan berdasarkan ketinggian.
Setelah menyortir kotak, string untuk setiap kotak didorong ke dalam array keluaran dengan spasi tambahan ditambahkan, yang menempatkan kotak secara terpusat di atas yang terlebar.
Cobalah online!
sumber