Tulis program atau fungsi dalam bahasa pemrograman apa pun yang membutuhkan input / argumen heksadesimal 6 digit. Input / argumen dapat berupa 6 nilai atau string 6 karakter.
Program Anda harus menampilkan blok persegi panjang karakter persis 8 karakter yang hanya berisi heksadesimal yang disediakan dikombinasikan dengan spasi (+ Linefeed). Blok persegi panjang adalah kombinasi dari bentuk blok yang lebih kecil, satu untuk masing-masing dari 6 nilai yang disediakan.
Berikut ini 2 input sampel demostratif dan sampel hasil valid:
Input sampel :
"464fa6" or [4, 6, 4, 15, 10, 6]
Satu keluaran solusi yang valid :
44 66 ff
44 66 ff
66 ff
aa f
aaa ffff
aa ffff
aaa
6 44
66666 44
Input sampel :
"35bf12"
Satu keluaran solusi yang valid :
55555 22
bbbbbbbb
b b b
33
fffff 3
ff ff
ffffff 1
Aturan:
Outputnya harus berbentuk persegi panjang
Outputnya bisa dari ketinggian vertikal apa pun, tetapi harus persis lebar 8 karakter
"Blok dalam", disebut sebagai "bentuk blok", tidak dapat terhubung ke bentuk blok lain, bentuk blok harus dipisahkan oleh dinding ruang kosong tepat 1 karakter lebar horizontal, vertikal dan diagonal.
Dinding blankspaces tidak dapat menjalankan paralel ke tepi luar, hanya 1 karakter lebar dinding-tepi dapat ada di tepi output. Seharusnya tidak ada ruang yang terhubung di mana pun di tepi persegi panjang terluar pada output.
Lebar dinding ruang kosong tidak boleh melebihi 1 karakter.
Bentuk blok dalam harus seragam dengan luas karakter x, di mana x adalah nilai heksadesimal yang disediakan dan bentuk harus terdiri dari karakter x di mana x adalah perwakilan karakter heksadesimal.
Bentuk blok dalam bisa berupa apa saja selama semua karakter bentuk terhubung secara vertikal atau horizontal, dan tidak membatalkan aturan untuk dinding ruang kosong.
6 bentuk blok dapat ditempatkan dalam "urutan" internal apa pun di dalam persegi panjang yang dihasilkan.
Rentang input yang valid: 1 ... 15 ("1" ... "f") untuk setiap bentuk. Input untuk program Anda tidak boleh berisi informasi selain 6 angka heksadesimal, dan input tidak boleh disortir dengan cara lain selain dalam sampel sebelum diberikan ke program / fungsi Anda. Beri tahu kami format input apa yang digunakan solusi Anda (input tidak dapat berisi informasi selain nilai heksadesimal).
Bentuk balok bagian dalam bisa berlubang. Lubang harus dari karakter ruang kosong yang dianggap sebagai dinding ruang kosong, artinya lubang dalam bentuk blok bagian dalam yang berlubang tidak boleh lebih dari 1 karakter.
Tiga contoh bentuk berongga yang valid:
aaa
a aaa
aaa
999
9 9
999
9
ffffff
f ff
ffffff
Salah satu contoh bentuk berongga yang tidak valid:
ffffff
f f
f f
fffff
Saya berasumsi bahwa semua kombinasi input tidak mungkin untuk "diselesaikan" sesuai dengan aturan di atas, karenanya saya mencantumkan 10 sampel input yang harus dapat "diselesaikan" oleh program Anda (semua diverifikasi dapat dipecahkan):
1. 464fa6 (same as the first sample)
2. 35bf12 (second example input seen above)
3. 111126
4. ff7fff
5. 565656
6. abcdef
7. 1357bd
8. 8c6a42
9. ab7845
10. 349a67
Program Anda harus dapat menyelesaikan salah satu dari 10 input sampel dalam waktu resonable. menerjemahkan waktu resonable ke dalam 1 jam pada komputer desktop standar. Katakan seperti: 3 Ghz Dual core, memori 4GB untuk referensi.
Ini kode golf, solusi terpendek yang menang. Solusinya dapat berupa program atau fungsi yang berfungsi penuh
Jawaban:
Haskell, 156
Nah, ini sedikit meregangkan aturan. Saya tidak memiliki dinding ruang kosong kecuali untuk linebreak, oleh karena itu semua dinding saya memiliki panjang 1.
output untuk 464fa6:
sumber
BrainF * ck - 134 (intr baris baru
Saya pikir ini adalah jawaban sederhana
Input diambil melalui 6 karakter heksadesimal ke stdin, diikuti oleh baris baru untuk dikirimkan.
EDIT: Ini gagal karena aturan 6, yang saya tidak sadari sampai sekarang: /
sumber