Tampaknya tantangan bunglon adalah hal yang buruk . Sayang sekali, bunglon adalah makhluk yang cantik. Waktunya untuk perubahan!
Seperti kita ketahui, banyak bunglon memiliki kemampuan luar biasa untuk berbaur dengan lingkungannya dengan mengubah warna kulit mereka. Yang juga merupakan tujuan dari tantangan ini.
Tantangan
Bayangkan kuadrat sembilan piksel. Delapan piksel adalah sekelilingnya. Di tengah adalah bunglon.
Seperti ini:
Bunglon secara alami mencoba berbaur dengan lingkungannya. Ia melakukannya dengan mengubah warnanya menjadi rata-rata dari piksel di sekitarnya. Jadi, dalam hal ini, bunglon akan berubah warnanya menjadi .
Objektif
Mengingat warna-warna piksel di sekitarnya, mengeluarkan warna bunglon.
Warna bunglon didefinisikan sebagai total semua merah, hijau dan biru dalam piksel ÷ 8.
Memasukkan
Array nilai warna untuk delapan piksel di sekitarnya, mulai dari kiri atas dan berlanjut searah jarum jam, seperti ini:
[[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>]]
Anda dapat memilih untuk menerima input dalam bentuk yang berbeda, asalkan terdiri dari delapan kali lipat angka desimal 0-255.
Jika Anda menerima input dalam bentuk yang berbeda, angka harus memiliki panjang yang konsisten atau memiliki pemisah non-numerik di antaranya. Triples harus memiliki karakter pemisah kecuali mereka 0-padded hingga 9 digit. (Misalnya 044200255044200255044200255044200255044200255044200255044200255044200255
valid, begitu juga 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255
dan 44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255
, tetapi 4420025544200255442002554420025544200255442002554420025544200255
tidak.)
Keluaran
Array / string / dll. Yang mengandung warna piksel tengah (dalam desimal), seperti ini:
[<red>,<green>,<blue>]
Jika Anda mengeluarkan sesuatu selain array: Angka harus memiliki panjang yang konsisten atau memiliki pemisah non-numerik di antaranya. (Misalnya 044200255
valid, demikian 44 200 255
, tetapi 44200255
tidak.)
Angka-angka mungkin tidak mengandung titik desimal, jadi misalkan 44.0 200 255.0
tidak valid.
Pembulatan
Output harus dibulatkan ke integer terdekat. (Bagian harus dibulatkan.) Misalnya, jika jumlah semua merah adalah 1620 , Anda harus mengeluarkan 203
, bukan 202
atau 202.5
.
Contohnya
Gambar hanya untuk ilustrasi. Pixel tengah adalah output, piksel sekitarnya adalah input.
Memasukkan:
[[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200]]
Keluaran:
[200,200,200]
Memasukkan:
[[0,0,0],[255,255,255],[0,0,0],[255,255,255],[255,255,255],[0,0,0],[255,255,255],[0,0,0]]
Keluaran:
[128,128,128]
Memasukkan:
[[0,200,200],[200,0,200],[200,200,0],[60,200,0],[200,0,200],[0,200,220],[2,200,0],[0,0,0]]
Keluaran:
[83,125,103]
Memasukkan:
[[0,56,58],[65,0,200],[33,200,0],[60,33,0],[98,0,200],[0,28,220],[2,200,0],[99,0,5]]
Keluaran:
[45,65,85]
Pengajuan dapat berupa program lengkap atau suatu fungsi. Standar I / O dan aturan celah berlaku.
Jawaban:
MATL,
84 byteCobalah online!
4 byte disimpan berkat gelas kimia!
Penjelasan:
sumber
s8/
denganXm
(yaitumean
di kolom). Anda juga dapat menentukan input3 x 8
untuk memulai dan menyingkirkan3e!
YmYo
harus melakukannya ... hanya mengambil input[[R,G,B];[R,G,B];...]
dengan titik koma di antara baris RGB.Yo
mengumpulkan, atau membulatkan ke terdekat dengan ikatan yang ditangkap? Tantangan menginginkan yang terakhir.Python, 38 byte
Membulatkan rata-rata (menuju bilangan bulat terdekat, dengan separuh membulatkan ke atas) dengan menambahkan 4 ke jumlah, lalu membaginya dengan 8 melalui bit-shift
>>3
.sumber
Jelly , 5 byte
Suite uji . (Sedikit dimodifikasi untuk memverifikasi semua testcas sekaligus.)
sumber
C,
15112310391Membutuhkan 24 parameter yang diteruskan ke program, dalam urutan RGBRGB ... dan mengeluarkan triplet RGB tanpa baris baru.
sumber
main(c,v)char**v;{
untuk menyimpan 2 byte? Juga memberi +1 untuk <3 dalam kode sumber!Pyth , 8 byte
Suite uji .
sumber
Pyke, 7 byte
Coba di sini!
sumber
J, 11 byte
Mengambil input sebagai array 8x3 di mana setiap baris adalah nilai RGB
Penjelasan
sumber
JavaScript,
756455 byteJawaban JavaScript untuk membantu Anda memulai.
Sunting: Disimpan 11 byte berkat Dendrobium , dan 9 lainnya berkat Neil .
sumber
a=>a.reduce((p,c)=>p.map((e,i)=>e+c[i])).map(x=>x+7>>3)
[[0,200,200],[200,0,200],[200,200,0],[60,200,0],[200,0,200],[0,200,220],[2,200,0],[0,0,7]]
menghasilkan 83, 125, * 104 * bukannya 83, 125, * 103 * dengan kode Anda.ceil
. 64 byte:a=>a.reduce((p,c)=>p.map((e,i)=>e+c[i])).map(x=>(x/8).toFixed())
x+4>>3
harus membulatkan dengan benar.Lisp -
180179 byteEDIT: Diformat untuk bermain golf lebih lanjut.
Apakah itu cara yang benar , saya kira. Belum dicoba.
a
hanya rata-ratar
adalah pembulatan tantangan yang tepat ini, karena Lispround
berkeliling ke bilangan bulat genap terdekatc
melakukan pekerjaan nyata, menerima input dalam format'((R G B) (R G B) (R G B) (R G B) (R G B) (R G B) (R G B) (R G B))
, dan mengembalikan'(R G B)
daftar yang berisi jawaban.sumber
Nim ,
13412611510878 byteMenentukan prosedur anonim, yang mengharuskan input dilewatkan sebagai urutan bersarang ganda dan output sebagai array 3-elemen. Prosedur hanya dapat digunakan sebagai argumen untuk prosedur lain; untuk menguji, gunakan pembungkus berikut:
Urutan Nim adalah array dengan
@
di depan, seperti@[1, 2, 3]
. Input untuk prosedur ini dapat berupa:sumber
Japt, 8 byte
Cobalah
Alternatif, 9 byte
Cobalah
sumber
Keempat (gforth) , 65 byte
Cobalah online!
Mengambil input sebagai argumen stack (urutan rgb)
Penjelasan
Untuk masing-masing 3 saluran warna:
Penjelasan Kode
sumber
Pesona Rahasia , 41 byte
Cobalah online!
Menggunakan 3 petunjuk petunjuk untuk mem-parsing input dalam urutan yang benar (karena nilai input selalu dalam urutan
RGB, RGB,...
) dan selama masing-masing dari ketiga IP tidak bergabung, dan jangan maju kei
perintah nput baca berikutnya terlalu dini (karenanya semua spasi), ia bekerja dan menyimpan byte karena harus terus memutar tumpukan untuk menjaga nilai yang benar di atas untuk menghitung jumlah.Secara teknis kode ini mengandung kesalahan dalam
x.5
nilai pembulatan yang benar untuk beberapa input, tetapi ini disebabkan oleh metode pembulatan standar yang digunakan oleh C # , yaitu untuk membulatkan ke nomor acara terdekat, bukan ke atas dan karena masalah dalam kehilangan akurasi floating point. , dan saya tidak mengetahui masalah ini sebelum menulis jawaban ini dan memeriksa kasus uji. Ini akan diperbaiki pada bangunan mendatang , bersama dengan beberapa hal lain seperti pengecualian yang tidak ditangani ini .Sementara itu, modifikasi ini membuat penyesuaian yang diperlukan.
sumber