यह कौन सा रंग है?


9

आप एक ऐसे प्रोग्राम को गोल्फ कर रहे हैं जो इनपुट के रूप में एक फाइलनाम लेगा और आपको यह आउटपुट करना होगा कि फाइल किस रंग की है।

फ़ाइल में इनमें से कोई एक एक्सटेंशन होगा लेकिन आपके प्रोग्राम को केवल एक का समर्थन करने की आवश्यकता है। कृपया बताएं कि आपके उत्तर में कौन सा है।

  • .jpg
  • .png
  • .svg
  • .gif
  • .bmp

और अब क्लासिक लेआउट के लिए।

इनपुट

उपरोक्त एक्सटेंशन में से एक के साथ एक फ़ाइल नाम।

आप इसके बजाय छवि ऑब्जेक्ट या पहले से एन्कोड की गई छवि भी ले सकते हैं।

उत्पादन

एक वैकल्पिक अग्रणी #उदाहरण के साथ 6 अंकों के हेक्स कोड के रूप में उस फ़ाइल का एकमात्र रंग #000000काला है।

आप एक स्पष्ट, गैर-सांख्यिक सीमांकक , |आदि जैसे आरजीबी रंग के दशमलव या हेक्स मान युक्त एक सूची / ट्यूपल / स्ट्रिंग का उत्पादन कर सकते हैं।

आप पारदर्शिता का उत्पादन नहीं कर सकते हैं।

यदि फ़ाइल सभी एक रंग की नहीं है, तो आपको एक नकली मूल्य का उत्पादन करना चाहिए जो कि कुछ भी प्रिंट किए बिना#000000 समाप्त नहीं होता है और समाप्त नहीं होता हैSTDERR । यह इतना है कि आप केवल फ़ाइल नहीं खोल सकते हैं और पहले पिक्सेल का RGB मान प्राप्त कर सकते हैं।

नियम

  • यदि फ़ाइल सभी एक रंग की हो तो हेक्स कोड को केवल आउटपुट करने की आवश्यकता होती है।
  • फाइल 500x500पिक्सल होगी
  • पिक्सल में सभी 0% पारदर्शिता होगी।
  • ये है इतना कम कोड जीतता है!

उदाहरण


7
फ़ाइल सभी एक रंग नहीं होने के कारण मेरे लिए एक अनावश्यक जटिलता की तरह लगती है। और जोरदार टाइप की गई भाषाओं में एक गलत मूल्य, जैसे C #, केवल एक ही हो सकता है bool। इस मामले के लिए मैं stringसामान्य मामले के boolलिए और गैर-सामान्य मामले के लिए वापस आ जाऊंगा object। क्या यह ठीक है या मैं एक खाली स्ट्रिंग या समान वापस कर सकता हूं?
TheLethalCoder

5
इसके अलावा, मैं आपको अपनी तस्वीरें i.stack.imgur.com पर अपलोड करने का सुझाव देता हूं (मेरा प्रोग्राम पेस्टबोर्ड से छवि नहीं निकाल सकता)
user41805

2
@Phoenix वही है जो मैं पूछ रहा हूं, क्या यह ठीक है क्योंकि यह C # में गलत मूल्य नहीं है और शायद अन्य जोरदार टाइप की हुई भाषाएं हैं।
TheLethalCoder

6
@ इलीकेमिडॉग यह मायने रखता है। आउटपुट का कहना है कि "उस फ़ाइल में एकमात्र रंग" उत्तरदाताओं को यह मान लेता है कि छवि में एक ही रंग होगा। तब नियम इसके विपरीत हैं। दूसरी ओर, यह बहुत स्पष्ट होगा कि यदि आउटपुट खंड "उस फ़ाइल में एकमात्र रंग, या फ़ॉल्सी मान से अलग है ... अगर छवि में एक से अधिक रंग हैं" जैसे कुछ पढ़ा है। या, जैसा कि एक्सनोर ने उपयुक्त रूप से कहा, यह भ्रमित करने वाला है, जब चुनौती का शरीर एक बात कहता है, लेकिन बाद में एक अन्य भाग कहता है
लुइस मेंडो

2
क्या हम यह मान सकते हैं कि सभी फाइलें हमेशा 3 चैनल (8 बिट्स प्रत्येक) RGB फाइलें होंगी?
ऑक्टोपस

जवाबों:


6

MATL , 15 12 बाइट्स

Yi6Bed~?2MYm

चुनौती में दिए गए ".png" चित्रों के साथ परीक्षण किया गया। यह शायद अन्य एक्सटेंशन के साथ भी काम करता है। इनपुट एक फ़ाइल नाम या छवि का URL हो सकता है।

यदि एक से अधिक रंग हैं, तो रिक्त स्थान, या रिक्त स्ट्रिंग (जो मिथ्या है) द्वारा अलग किए गए आउटपुट R, G, B दशमलव मान हैं।

पहले और अंतिम परीक्षण मामलों के साथ उदाहरण:

यहां छवि विवरण दर्ज करें

व्याख्या

Yi      % Implicitly input filename. Read image as an M×N×3 array
6B      % Push [true true false] (6 in binary)
e       % Reshape. This collapses firsts two dimensions. Gives an (M*N)×3 array
d       % Consecutive diferences down each column. Gives an an (M*N-1)×3 array
~?      % If all those differences are zero (this means there is a single color)
  2M    %   Push the (M*N)×3 array again
  Ym    %   Mean of each column
        % Implicit end
        % Implicitly display

क्या इससे फेक इमेज की जाँच होती है?
TheLethalCoder

1
@ दीथलकोडर सोल्व्ड। हेड-अप के लिए धन्यवाद
लुइस मेंडो

You may also take an image object or already encoded image instead.ओपी अपडेट बाइट्स को बचाने में सक्षम हो सकता है ...
TheLethalCoder

@TheLethalCoder साभार मुझे नहीं लगता कि यह इस उत्तर में मदद करता है, जब तक कि मैं M×N×3सरणी को सीधे इनपुट नहीं कर सकता , जो कि शायद ओपी का मतलब नहीं है
लुइस मेंडू

1
12 बाइट्स ?! खैर, पवित्र नरक!
झबरा

4

बैश + कोर-बर्तन + इमेजमैजिक, 60

a=(`convert $1 txt:|sort -uk3`)
((${#a[@]}-9))||echo ${a[2]}

रंग को आउटपुट करता है यदि एक रंग है और एक से अधिक रंग होने पर कुछ भी नहीं है।

  • convert $1 txt: विशेष रूप से इस प्रारूप में इनपुट फ़ाइल और आउटपुट को एक पाठ फ़ाइल के रूप में पढ़ता है:
# ImageMagick पिक्सेल एन्यूमरेशन: 500,500,255, srgba
0,0: (245,236,236,1) # F5ECEC srgba (245,236,236,1)
1,0: (245,236,236,1) # F5ECEC srgba (245,236,236,1)
2,0: (245,236,236,1) # F5ECEC srgba (245,236,236,1)
3,0: ​​(245,235,235,1) # F5EBEB srgba (245,235,235,1)
4,0: (245,235,235,1) # F5EBEB srgba (245,235,235,1)
  • sort -uk3तीसरे कॉलम द्वारा विशिष्ट रूप से इसे सॉर्ट करें। यह आउटपुट एक सरणी को सौंपा गया हैa

  • ((${#a[@]}-9)) यदि सरणी में लंबाई 9 नहीं है तो परीक्षण

  • यदि सरणी की लंबाई 9 नहीं है (यानी इसकी लंबाई 9 है), तो आउटपुट तत्व 2 (0-आधारित) जो अद्वितीय रंग होगा।


1
ओह माय, यह प्रभावशाली है।
एमडी एक्सएफ

4

जावास्क्रिप्ट (ES6) + HTML, 315 289 243 218 217 215 211 210 208 बाइट्स

यह जांचना कि सभी पिक्सेल समान थे, बहुत सारे बाइट्स जोड़े गए । जब मैं सिर्फ पहले पिक्सेल के रंग की जाँच कर रहा था, तो उससे बहुत बड़ा नहीं होना - इससे खुश होना :)

यूआरएल (निरपेक्ष, रिश्तेदार, डेटा या कुछ भी है कि के रूप में इस्तेमाल किया जा सकता ले जाता है srcएक के img) इनपुट के रूप में छवि फ़ाइल की। आरजीबी रंग को एक अल्पविराम से अलग स्ट्रिंग या 0फालसे के रूप में आउटपुट करता है । पीएनजी फाइलों के साथ परीक्षण किया गया, लेकिन जेपीजी और जीआईएफ के साथ भी काम करना चाहिए।

u=>(a=[...Array(c.width=c.height=500)]).map((_,x)=>a.map((_,y)=>(v=""+[(d=g.getImageData(x,y,1,1).data)[0],d[1],d[2]],h=x&y?v!=h?0:h:v)),i.src=u,(g=c.getContext`2d`).drawImage(i,0,0))&&h
<img id=i><canvas id=c

कोशिश करो

एक स्निपेट में काम करने के लिए तत्व >पर एक समापन के अतिरिक्त की आवश्यकता होती है canvas। बाहरी स्रोतों से छवियों को खींचने के कारण एक त्रुटि हो सकती है, निम्न इसके बजाय बेस -64 डेटा URL को इनपुट के रूप में लेगा। 4 रंगों से मिलकर एक छवि का उपयोग करके विभिन्न रंगों के लिए परीक्षण करने के लिए अंतिम पंक्ति को हटा दें।

f=
u=>(a=[...Array(c.width=c.height=500)]).map((_,x)=>a.map((_,y)=>(v=""+[(d=g.getImageData(x,y,1,1).data)[0],d[1],d[2]],h=x&y?v!=h?0:h:v)),i.src=u,(g=c.getContext`2d`).drawImage(i,0,0))&&h
console.log(f("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AQMAAADxGE3JAAAAA1BMVEUWwpMvG5UqAAAANUlEQVR42u3BMQEAAADCIPun9lkMYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5fQAAASJ0bysAAAAASUVORK5CYII"))
//console.log(f("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AgMAAAC2uDcZAAAADFBMVEWLFsIWwpOVkJCE8Az9F2TyAAABB0lEQVR42uzNIQEAMAwDsEk8ucmTS9xElAwkBlI3cipit9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91uX72/yO+I3W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdPhu1fdT2UdtHbR+1fdT2UdsHs+0AqVGfBnNZ7+UAAAAASUVORK5CYII"))
<img id=i><canvas id=c>


A filename with one of the above extensions.-> आप सुनिश्चित करें कि आप फ़ाइल से लोड करने के बजाय छवि को एन्कोडेड स्ट्रिंग के रूप में ले सकते हैं?
TheLethalCoder

1
@ लेथलॉकर, नहीं! : डी एंड, अब जब आप इसे कहते हैं, तो मैं देख सकता हूं कि मैं कुछ बाइट्स कैसे बचा सकता हूं :)
झबरा

You may also take an image object or already encoded image instead.ओपी अपडेट बाइट्स को बचाने में सक्षम हो सकता है ...
TheLethalCoder

@ TheLethalCoder, मैं "data:image/png;base64,"+इसके बजाय एक URL के रूप में इनपुट लेकर अपने कोड से बाहर निकलने में सक्षम था ।
शैगी

3

पायथन 2, 80 बाइट्स

from PIL import Image
i=Image.open(input()).getcolors(1)
print i and i[0][1][:3]

PIL.Image में एक गेटकॉल्स फ़ंक्शन होता है जो Noneअगर रंगों की संख्या पैरामीटर से बड़ा है और एक [(pixels, (r,g,b,a)), ...]संरचना में रंगों का एक हिस्टोग्राम देता है ।


You may also take an image object or already encoded image instead.ओपी अपडेट बाइट्स को बचाने में सक्षम हो सकता है ...
TheLethalCoder

@LethalCoder तो फिर मुझे पहले से ही खोली गई छवि और बस लिखना चाहिए print i and i[0][1][:3]?
गबोर फेकेट

मुझे लगता है कि आपको रंग कॉल की आवश्यकता होगी
TheLethalCoder

3

गणितज्ञ, ५५ ५१ बाइट्स

-4 कैलक्यूलेटरफलाइन के लिए धन्यवाद

पूर्ण समारोह में रिफैक्टिंग के लिए +0।

इनपुट के रूप में Mathematica इमेज ऑब्जेक्ट का उपयोग करना - Import["filename.png"]

If[Length@#==1,#,0]&@Union[Join@@ImageData@#]&

सभी एक रंग नहीं तो 0 देता है। यदि केवल एक रंग के दशमलव मान को आउटपुट करता है।

स्पष्टीकरण:

                                 ImageData@# & - Convert input into 2D array of RGB values
                           Join@@              - Join the array into 1D array f RGB values
                     Union[                 ]  - Union all the RGB values
   Length@#        &@                          - Find length of the union of arrays
If[        ==1,#,0]                            - Check if its 1, return it if true, return 0 if not

a==1== a<2और इस मामले में Join@@बराबर है ~Flatten~1। (यदि किसी भी गैर-सूची में शामिल हैं, तो विराम में शामिल हों।)
कैलक्यूलेटरफल

डिफ़ॉल्ट रूप से, एक पूर्ण फ़ंक्शन या प्रोग्राम की आवश्यकता होती है। एक पहले से ही डिकोड की गई छवि ऑब्जेक्ट का उपयोग करने के लिए, मुझे विश्वास है कि आपको अभी भी कुछ करने की आवश्यकता होगीIf[Length@#==1,#,0]&@Union[ImageData@#~Flatten~1]&
जूलियन वुल्फ

मैंने ओपी की टिप्पणी की गलत व्याख्या की You may also take an image object or already encoded image instead.। अपडेट करूंगी।
इयान मिलर

@CalculatorFeline संकेत के बारे में धन्यवाद Join@@
इयान मिलर

2

जावा 8+, 331 165 119 बाइट्स

i->{Integer j=i.getRGB(0,0),k=500,l;for(;k-->0;)for(l=500;l-->0;)if(i.getRGB(k,l)!=j)return"";return j.toHexString(j);}

-बेटी के लिए @LethalCoder के लिए बहुत सारे बाइट्स धन्यवाद एक नियम में बदलाव के लिए जो कि बहुत सारे गोल्फिंग
-46 बाइट्स के लिए अनुमति देता है @KevinCruijssen और निश्चित टाइपो के लिए धन्यवाद


You may also take an image object or already encoded image instead.ओपी अपडेट बाइट्स को बचाने में सक्षम हो सकता है ...
TheLethalCoder

@ द लीथलकोडर ओह परफेक्ट। धन्यवाद!
हाइपरएनुट्रिनो

मुझे पता है कि यह थोड़ी देर हो गई है, लेकिन कुछ चीजें गोल्फ (जावा 7 संस्करण को बदले बिना) 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);}:। 8 के लिए Java संस्करण बदलने से, आप भी बदल सकते हैं Object f(java.awt.image.BufferedImage i)करने के लिए i->। इसके अलावा, मुझे लगता है कि आपने एक टाइपो बनाया है: इसके बजाय नहीं if(i.getRGB(k,l)!=i)होना !=jचाहिए?
केविन क्रूज़सेन

@ केविनक्रूजसेन धन्यवाद। और हाँ, मुझे लगता है कि मैंने किया था: P
HyperNeutrino

1
@HyperNeutrino आप इसे जावा 8 (या उच्चतर) में बदलना भूल गए। ;)
केविन क्रूज़सेन

1

पायथन 2 , 123 85 बाइट्स

from PIL import Image
c=Image.open(input()).getdata()
print len(set(c))<2and c[0][:3]

You may also take an image object or already encoded image instead.ओपी अपडेट बाइट्स को बचाने में सक्षम हो सकता है ...
TheLethalCoder

मैं जनहित याचिका आयात से कुछ ही बाइट (या वैकल्पिक रूप से, आयात जनहित याचिका और फिर = PIL.Image ग) को बचाने के लिए उम्मीद करेंगे * जब तक मैं कुछ अनदेखी कर रहा हूँ
टेलीफोन

@ फ़न PILआयात का अपवाद है, आप ऐसा नहीं कर सकतेfrom PIL import* और न हीPIL.
रॉड

धन्यवाद; यह नहीं जानता था कि या कम से कम इसे भूल गया
फू

असंगतता भयानक है :(
कैलकुलेटरफाइनलाइन

1

सी #, 163 128 125 बाइट्स

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 बाइट @Kevin क्रूज़सेन के लिए धन्यवाद।

यदि हमारे पास छवि के लिए अतिरिक्त चेक नहीं होना चाहिए, तो यह वही रंग है जो केवल 55 बाइट्स हैं:

b=>{var c=b.GetPixel(0,0);return c.R+" "+c.G+" "+c.B;};

मुझे पता है कि यह एक समय हो गया है, लेकिन: 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 बाइट्स)
केविन क्रूज़सेन

0

गणितज्ञ, 112 बाइट्स

छवि

i = आयात @ "c: \ a.png";

If[Length@DominantColors@i==1,"#"<>StringPadLeft[IntegerString[Most@PixelValue[i,{1,1},"Byte"],16],2,"0"],False]

You may also take an image object or already encoded image instead.ओपी अपडेट बाइट्स को बचाने में सक्षम हो सकता है ...
TheLethalCoder

ठीक। मैंने कुछ बदलाव किए।
थैंक्स

लोअरकेस हेक्स स्वीकार्य है?
user202729

Most@PixelValue[i, {1, 1}, "Byte"]कुछ बाइट्स बचाएंगे।
user202729

103 बाइट्स: If[Length@Tally[a=i~ImageData~"Byte"]<2,"#"<>StringPadLeft[Most@a[[1,1]]~IntegerString~16,2,"0"],False]- अपने ImageData फ़ंक्शन का उपयोग करें। पता नहीं था कि अस्तित्व में है।
user202729

0

बैश + इमेजमैजिक, 100 बाइट्स

i=$(expr `identify -format "%k" $1` = 1)&&convert $1 -format "%c" histogram:info:-|grep -o "#......"

.Png के साथ परीक्षण किया गया है, साथ ही अन्य प्रारूपों के साथ काम करना चाहिए। पॉलीक्रोमैटिक छवि के लिए आउटपुट केवल एक रिक्त स्ट्रिंग है।


आप प्रारूप निर्दिष्टकर्ताओं के आसपास से उद्धरण छोड़ सकते हैं। से भी ((`identify -format %k $1`-1))||छोटा है i=$(expr `identify -format "%k" $1` = 1)&&
डिजिटल ट्रामा

0

सी, 224 205 बाइट्स

m[3],i;
main(c,v)char**v;{
void*s=fopen(v[1],"r");
for(;i<54;i++)getc(s);
m[2]=getc(s);m[1]=getc(s);*m=getc(s);
for(i=0;i<500*500;i++)if((c=getc(s))!=m[i%3]&&~c)exit(puts("0"));
printf("%d,%d,%d",*m,m[1],m[2]);}

कमांड लाइन तर्क के रूप में 500x500 बिटमैप लेता है। फ़ाइल के RGB को प्रिंट करता है, जैसे 255,255,255, या0 यदि फ़ाइल स्थिर नहीं है। यदि कोई फ़ाइल प्रदान नहीं की गई है तो संभवतः बुरी तरह से दुर्घटनाग्रस्त हो जाती है।

नोट करने के लिए दिलचस्प बिंदु:

  • से बचने void*के FILE*लिए जगह में उपयोग करता है<stdio.h>
  • यह निर्धारित करने के लिए कि सभी बाइट्स समान हैं, एक साधारण forलूप का उपयोग करता हैi%3
  • बहुत हो सकता है गोल्फ , मैंने यह जवाब लिखते हुए 50 बाइट्स की गोल्फिंग की
  • BMP रंगों को BGR के रूप में संग्रहीत करता है इसलिए यह कम / अधिक पीछे की ओर पढ़ता है

0

जावास्क्रिप्ट + एचटीएमएल, 143 + 23 = 166 बाइट्स

u=>(i.src=u,s=C.width=C.height=500,c=C.getContext`2d`,c.drawImage(i,0,0),d=c.getImageData(0,0,s,s).data,!d.some((n,i)=>n-d[i%4])&&d.slice(0,3))
<img id=i><canvas id=C>

कोशिश करो:

f=
u=>(i.src=u,s=C.width=C.height=500,c=C.getContext`2d`,c.drawImage(i,0,0),d=c.getImageData(0,0,s,s).data,!d.some((n,i)=>n-d[i%4])&&d.slice(0,3))

console.log(
    f('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AQMAAADxGE3JAAAAA1BMVEUWwpMvG5UqAAAANUlEQVR42u3BMQEAAADCIPun9lkMYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5fQAAASJ0bysAAAAASUVORK5CYII'),
    f('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AgMAAAC2uDcZAAAADFBMVEWLFsIWwpOVkJCE8Az9F2TyAAABB0lEQVR42uzNIQEAMAwDsEk8ucmTS9xElAwkBlI3cipit9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91uX72/yO+I3W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdPhu1fdT2UdtHbR+1fdT2UdsHs+0AqVGfBnNZ7+UAAAAASUVORK5CYII')
)
<img id=i><canvas id=C>

कम गोल्फ वाला:

u => {
    i.src = u
    s = C.width = C.height = 500
    c = C.getContext('2d')
    c.drawImage(i, 0, 0)
    d = c.getImageData(0, 0, s, s).data
    return d.every((n,i) => n == d[i % 4]) && d.slice(0,3)
}

0

पॉवरशेल, 79 बाइट्स

param($b)if(!($c=499..0*500|%{$b|% G*l $_ $y;$y+=!$_}|gu).Rank){$c.R;$c.G;$c.B}

कम गोल्फ परीक्षण स्क्रिप्ट:

$f = {

    param($b)
    $c=499..0*500|%{$b.GetPixel($_,$y);$y+=!$_}|gu
    if(!$c.Rank){
        $c.R;$c.G;$c.B
    }

}

@(
    ,("22 194 147", "https://cdn.pbrd.co/images/8bawQk5kM.png")
    ,("139 22 194", "https://cdn.pbrd.co/images/8b9foR0H6.png")
    ,("149 144 144","https://cdn.pbrd.co/images/8baglmIE8.png")
    ,("132 240 12", "https://cdn.pbrd.co/images/8b9Uhhovn.png")
    ,("",           "https://cdn.pbrd.co/images/8bb4DeKx3.png")

) | % {
    $expected,$s = $_

    $binData = [System.Net.WebClient]::new().DownloadData($s)
    $memoryStream = [System.IO.MemoryStream]::new($binData)
    $bitmap = [System.Drawing.Bitmap]::FromStream($memoryStream)

    $sw = [System.Diagnostics.Stopwatch]::StartNew()
    $result = &$f $bitmap
    "$("$result"-eq$expected): $($sw.Elapsed): $result"
}
  • नोट 1 : अभिव्यक्ति का 499..0*500मतलब है: 0 से 499 तक 500 बार की सीमा को दोहराएं
  • नोट 2 : अभिव्यक्ति $b|% G*l $_ $y शॉर्टकट है $b.GetPixel($_,$y)। यह ट्रिक gofing के साथ उपयोगी है, लेकिन यह कोड को धीमा कर देता है।

इसके साथ आउटपुट $b|% G*l $_ $y:

True: 00:01:45.4904622: 22 194 147
True: 00:01:56.4208157: 139 22 194
True: 00:01:46.7629439: 149 144 144
True: 00:01:48.1999005: 132 240 12
True: 00:01:55.8579935:

इसके साथ आउटपुट $b.GetPixel($_,$y):

True: 00:00:05.7637937: 22 194 147
True: 00:00:06.8743244: 139 22 194
True: 00:00:08.7456055: 149 144 144
True: 00:00:08.5942450: 132 240 12
True: 00:00:06.6495706:

स्पष्टीकरण:

  • स्क्रिप्ट प्रत्येक पिक्सेल रंग की एक सरणी बनाता है।
  • स्क्रिप्ट रंग के लिए लागू होता है gu( गेट-यूनीक के लिए उपनाम )।
  • यदि परिणाम huएक एकल तत्व है (संपत्ति rankमें केवल एक सरणी के लिए मान है) तो इस तत्व के आर, जी, बी का आउटपुट दशमलव मान

0

पायथन 2 + ओपनसीवी + न्यूपी: 66 वर्ण

colors.py

import numpy as N
def c(i):p=i[0,0];print(p[::-1],"")[N.any(i-p)]

test.py

import cv2
from colors import c

c(cv2.imread('16C293.png'))
c(cv2.imread('84F00C.png'))
c(cv2.imread('8B16C2.png'))
c(cv2.imread('959090.png'))
c(cv2.imread('falsy.png'))

परिणाम:

18:14 ~/colors $ python test.py
[ 22 194 147]
[132 240  12]
[139  22 194]
[149 144 144]

18:15 ~/colors $ 

OpenCV एक छवि को पढ़ने और इसे एन-आयामी सरणी के रूप में वापस करने में सक्षम है। NumPy का उपयोग दूसरों के खिलाफ पहले पिक्सेल का परीक्षण करने के लिए किया जाता है और या तो RGB मान या रिक्त का प्रिंट आउट लिया जाता है।


0

PHP, 88 बाइट्स

function($i){return~-imagecolorstotal($i)?0:sprintf("#%06x",imagecolorsforindex($i,0));}

अनाम फ़ंक्शन पैरामीटर के रूप में अनुक्रमित PHP छवि संसाधन लेता है, पहले पैलेट स्लॉट में रंग मानता है, रंग कोड या 0 देता है।

कार्यक्रम, 96 बाइट्स

imagecolorstotal($i=imagecreatefromgif($argv[1]))-1||sprintf("#%06x",imagecolorsforindex($i,0));

तर्क से GIF फ़ाइल का नाम लेता है, रंग कोड या कुछ भी प्रिंट नहीं करता है। साथ दौड़ोphp -r '<code>' <filename.gif>

सही रंग छवियों के लिए, 113 112 बाइट्स

function($i){for(;$p<25e4;$p++)$r[$c=imagecolorat($i,$p%500,$p/500)]=1;return~-count($r)?0:sprintf("#%06x",$c);}

ऊपर के रूप में, लेकिन सही रंग छवि की आवश्यकता है।

कार्यक्रम, 122 116 बाइट्स

for(;$p<25e4;$p++)$r[$c=imagecolorat(imagecreatefrompng($argv[1]),$p%500,$p/500)]=1;count($r)-1||printf("#%06x",$c);

जैसा कि ऊपर, लेकिन PNG फ़ाइल की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.