Anda harus menjalankan program yang akan menggunakan nama file sebagai input dan Anda harus menampilkan apa warna file tersebut.
File akan memiliki salah satu dari ekstensi ini tetapi program Anda hanya perlu mendukungnya. Tolong katakan yang mana dalam jawaban Anda.
.jpg
.png
.svg
.gif
.bmp
Dan sekarang ke tata letak klasik.
Memasukkan
Nama file dengan salah satu ekstensi di atas.
Anda juga dapat mengambil objek gambar atau gambar yang sudah disandikan.
Keluaran
Satu-satunya warna dalam file itu sebagai kode hex 6 digit dengan opsional terkemuka #
misalnya #000000
hitam.
Anda juga dapat menampilkan daftar / tupel / string yang berisi nilai desimal atau hex dari warna RGB, dengan pembatas yang non-numerik, misalnya,
,
|
dll.
Anda mungkin tidak menghasilkan transparansi.
Jika file tidak semuanya berwarna, Anda harus menampilkan nilai palsu yang tidak #000000
dan berakhir tanpa mencetak apa pun STDERR
. Ini agar Anda tidak bisa begitu saja membuka file dan mendapatkan nilai RGB dari piksel pertama.
Aturan
- Kode hex hanya perlu dikeluarkan jika file semuanya satu warna.
- File tersebut akan menjadi
500x500
piksel - Pixel semua akan memiliki transparansi 0%.
- Ini adalah kode-golf sehingga kode terpendek menang!
Contohnya
sumber
bool
. Untuk kasus ini saya akan mengembalikanstring
untuk kasus normal danbool
untuk kasus tidak normal, dibungkus denganobject
. Apakah ini baik atau saya dapat mengembalikan string kosong atau serupa?Jawaban:
MATL ,
1512 byteDiuji dengan gambar ".png" yang diberikan dalam tantangan. Mungkin juga bekerja dengan ekstensi lain. Input dapat berupa nama file atau URL gambar.
Output adalah nilai desimal R, G, B yang dipisahkan oleh spasi, atau string kosong (yang salah) jika ada lebih dari satu warna.
Contoh dengan kasus uji pertama dan terakhir:
Penjelasan
sumber
You may also take an image object or already encoded image instead.
OP yang diperbarui mungkin dapat menyimpan byte ...M×N×3
array secara langsung, yang mungkin bukan apa yang dimaksud OPBash + core-utils + Imagemagick, 60
Output warna jika ada satu warna dan tidak ada jika ada lebih dari satu warna.
convert $1 txt:
membaca file input dan output sebagai file teks, khususnya dalam format ini:sort -uk3
urutkan secara unik pada kolom ketiga. Output ini ditugaskan ke arraya
((${#a[@]}-9))
menguji apakah array TIDAK memiliki panjang 9jika array TIDAK memiliki panjang 9 (yaitu memang memiliki panjang 9), maka elemen output 2 (berbasis 0) yang akan menjadi warna unik.
sumber
JavaScript (ES6) + HTML,
315289243218217215211210208 byteMemeriksa semua piksel yang identik menambahkan banyak byte.Down to it tidak menjadi lebih besar daripada ketika saya hanya memeriksa warna piksel pertama - senang dengan itu :)Mengambil URL (absolut, relatif, data atau apa pun yang dapat digunakan sebagai
src
dariimg
) file gambar sebagai input. Output warna RGB sebagai string yang dipisahkan koma atau0
untuk falsey. Diuji dengan file PNG tetapi harus bekerja dengan JPG & GIF juga.Cobalah
Memerlukan penambahan penutupan
>
padacanvas
elemen agar dapat bekerja dalam Cuplikan. Karena menarik gambar dari sumber eksternal akan menyebabkan kesalahan untuk dilemparkan, yang berikut ini akan menggunakan URL data Base-64 sebagai input. Batalkan komentar pada baris terakhir untuk menguji warna yang berbeda menggunakan gambar yang terdiri dari 4 warna tes.sumber
A filename with one of the above extensions.
-> Anda yakin dapat mengambil gambar sebagai string yang disandikan alih-alih memuat dari file?You may also take an image object or already encoded image instead.
OP yang diperbarui mungkin dapat menyimpan byte ..."data:image/png;base64,"+
kode saya dengan mengambil input sebagai URL.Python 2, 80 byte
PIL.Image memiliki fungsi getcolors yang mengembalikan
None
jika jumlah warna lebih besar dari parameter dan mengembalikan histogram warna dalam suatu[(pixels, (r,g,b,a)), ...]
struktur.sumber
You may also take an image object or already encoded image instead.
OP yang diperbarui mungkin dapat menyimpan byte ...print i and i[0][1][:3]
?Mathematica,
5551 Bytes-4 Terima kasih kepada CalculatorFeline
+0 untuk refactoring menjadi fungsi penuh.
Menggunakan objek gambar Mathematica sebagai input -
Import["filename.png"]
.Mengembalikan 0 jika tidak semua satu warna. Menghasilkan nilai desimal warna jika hanya satu.
Penjelasan:
sumber
a==1
==a<2
danJoin@@
setara dengan~Flatten~1
dalam hal ini. (Gabung istirahat jika daftar berisi daftar tidak ada.)If[Length@#==1,#,0]&@Union[ImageData@#~Flatten~1]&
You may also take an image object or already encoded image instead.
. Akan diperbarui.Join@@
.Java 8+,
331165119 byte-banyak byte terima kasih kepada @LethalCoder untuk memperbarui saya pada perubahan aturan yang memungkinkan untuk banyak bermain golf
-46 byte berkat @KevinCruijssen dan kesalahan ketik tetap
sumber
You may also take an image object or already encoded image instead.
OP yang diperbarui mungkin dapat menyimpan byte ...Object f(java.awt.image.BufferedImage i){Integer j=i.getRGB(0,0),k=500,l;for(;k-->0;)for(l=500;l-->0;)if(i.getRGB(k,l)!=i)return"";return j.toHexString(j);}
. Dengan mengubah versi Java ke 8+, Anda juga dapat mengubahObject f(java.awt.image.BufferedImage i)
kei->
. Juga, saya pikir Anda sudah salah ketik: tidak harusif(i.getRGB(k,l)!=i)
menjadi!=j
bukan?Python 2 ,
12385 bytesumber
You may also take an image object or already encoded image instead.
OP yang diperbarui mungkin dapat menyimpan byte ...PIL
adalah pengecualian untuk impor, Anda tidak dapat melakukannyafrom PIL import*
jugaPIL.
C #,
163128125 byteDisimpan 3 byte berkat @Kevin Cruijssen.
Jika kami tidak perlu memiliki pemeriksaan tambahan untuk gambar yang berwarna sama, ini hanya 55 byte:
sumber
b=>{var c=b.GetPixel(0,0);for(int w=500,h;w-->0;)for(h=500;h-->0;)if(b.GetPixel(w,h)!=c)return"";return c.R+" "+c.G+" "+c.B;}
(-3 byte)Mathematica, 112 byte
gambar
sumber
You may also take an image object or already encoded image instead.
OP yang diperbarui mungkin dapat menyimpan byte ...Most@PixelValue[i, {1, 1}, "Byte"]
akan menghemat beberapa byte.If[Length@Tally[a=i~ImageData~"Byte"]<2,"#"<>StringPadLeft[Most@a[[1,1]]~IntegerString~16,2,"0"],False]
- gunakan fungsi ImageData Anda. Tidak tahu itu ada.Bash + ImageMagick, 100 byte
Diuji dengan .png, harus bekerja dengan format lain juga. Output untuk gambar polikromatik hanyalah string kosong.
sumber
((`identify -format %k $1`-1))||
lebih pendek darii=$(expr `identify -format "%k" $1` = 1)&&
.C,
224205 byteMengambil bitmap 500x500 sebagai argumen baris perintah. Mencetak RGB file, misalnya
255,255,255
, atau0
jika file tidak konstan. Mungkin macet parah jika tidak ada file yang disediakan.Poin menarik untuk diperhatikan:
void*
di tempatFILE*
untuk menghindari termasuk<stdio.h>
for
loop sederhana dengani%3
untuk menentukan apakah semua byte samasumber
JavaScript + HTML, 143 + 23 = 166 byte
Cobalah:
Kurang golf:
sumber
PowerShell, 79 byte
Skrip uji yang kurang golf:
499..0*500
berarti: ulangi 500 kali rentang dari 499 ke 0$b|% G*l $_ $y
adalah jalan pintas untuk$b.GetPixel($_,$y)
. Trik ini berguna dengan gofing, tetapi memperlambat kode.Output dengan
$b|% G*l $_ $y
:Output dengan
$b.GetPixel($_,$y)
:Penjelasan:
gu
(alias untuk Dapatkan-Unik ) ke array warna.hu
adalah elemen tunggal (propertirank
memiliki nilai untuk array saja) maka output nilai desimal dari R, G, B dari elemen inisumber
Python 2 + OpenCV + NumPy: 66 karakter
colors.py
test.py
Hasil:
OpenCV dapat membaca gambar dan mengembalikannya sebagai array N-dimensi. NumPy digunakan untuk menguji piksel pertama terhadap piksel lainnya dan mencetak nilai RGB atau kosong.
sumber
PHP, 88 byte
fungsi anonim mengambil sumber gambar PHP yang diindeks sebagai parameter, mengasumsikan warna dalam slot palet pertama, mengembalikan kode warna atau 0.
program, 96 byte
mengambil nama file GIF dari argumen, mencetak kode warna atau tidak sama sekali. Jalankan dengan
php -r '<code>' <filename.gif>
.untuk gambar warna asli,
113112 byteseperti di atas, tetapi membutuhkan gambar warna yang benar.
program,
122116 byteseperti di atas, tetapi membutuhkan file PNG.
sumber