Latar Belakang
Ini adalah kelanjutan dari tantangan saya sebelumnya , di mana tugasnya adalah menghitung bentuk patung yang diperoleh dengan menjatuhkan magnet ke tumpukan besar.
Berita bagus: artis eksentrik menyukai karya Anda, dan memiliki proyek lain untuk Anda. Dia masih bekerja dengan pahatan magnetik, tetapi telah memutuskan untuk memperluas studio seninya - ke ruang angkasa ! Metodenya saat ini adalah meledakkan satu magnet berbentuk kubus ke dalam orbit, dan menembakkan magnet lain ke dalamnya untuk menciptakan satelit magnetik besar.
Memasukkan
Input Anda adalah daftar terbatas 0
s dan 1
s, diberikan dalam format daftar asli bahasa Anda, atau string. Ini ditafsirkan sebagai "cetak biru" dari sebuah karya seni, dan diproses secara berurutan dari kiri ke kanan sebagai berikut.
Anda mulai dengan magnet tunggal yang mengambang di beberapa koordinat bilangan bulat dari bidang 2D, dan terus menambahkan lebih banyak magnet sesuai arahan. Arahan 0
memutar seluruh patung 90 derajat ke arah berlawanan arah jarum jam. Dalam hal arahan 1
, artis menemukan kolom paling kiri dari patung, dan menembakkan magnet baru ke sana dari bawah. Magnet baru menempel pada magnet paling bawah yang ada di kolom, dan menjadi bagian dari patung. Perhatikan bahwa magnet tidak menempel pada magnet lain di kolom tetangga, tidak seperti pada tantangan sebelumnya; kecepatannya sekarang astronomi!
Keluaran
Artis ingin tahu apakah patung lengkap akan masuk ke garasinya (bagaimana ia akan turun dari orbit masih belum jelas). Dengan demikian, output Anda adalah lebar dan tinggi patung, dipesan dari yang lebih rendah ke yang lebih tinggi. Mereka dapat diberikan sebagai daftar dua elemen, sepasang, atau sebagai string yang dipisahkan oleh koma.
Contoh
Pertimbangkan urutan input
[1,0,1,1,0,1,0,0,1,1]
Untuk memprosesnya, kita mulai dengan satu magnet melayang di angkasa:
#
Arahan pertama adalah 1
, jadi kami menembakkan magnet baru dari bawah:
#
#
Arahan berikutnya adalah 0
, jadi kami memutar patung:
##
Dua arahan berikutnya adalah 1,1
, yang berarti kami akan menembakkan dua magnet ke kolom paling kiri:
##
#
#
Kemudian, kami memutar lagi dan menembak sekali, seperti yang diarahkan oleh 0,1
:
#
###
#
Akhirnya, kami memutar dua kali dan menembak dua kali:
#
###
# #
#
Patung yang dihasilkan memiliki lebar 3
dan tinggi 4
, jadi kami output [3,4]
.
Aturan
Anda dapat memberikan fungsi atau program lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji Kasus
[1,0,1] -> [2,2]
[1,0,1,1,0,1,0,0,1,1] -> [3,4]
[1,1,0,1,1,0,1,0,1,1] -> [4,5]
[1,1,0,1,1,0,1,0,1,1,0] -> [4,5]
[1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1] -> [3,3]
[0,1,0,1,1,1,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,1,1] -> [5,7]
[1,0,1,1,1,1,0,1,0,0,0,0,1,1,1,0,1,1,0,1,0,1,0,0,0,0,0,0,1,1,0,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,0,1,0,1,1,1,0,1,1,0,0,1,0,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0] -> [11,12]
[1,1,0,1,1,0,1,0,1,1,0]
kembali[5,4]
dan tidak[4,5]
? Patung itu diputar pada bagian akhir.