এইটা কি রং?


9

আপনাকে এমন একটি প্রোগ্রাম গল্ফ করতে হবে যা কোনও ফাইল নাম ইনপুট হিসাবে গ্রহণ করবে এবং আপনাকে ফাইলটি কী রঙের তা আউটপুট করতে হবে।

এই এক্সটেনশনগুলির মধ্যে ফাইলটির কোনও একটিতে থাকবে তবে আপনার প্রোগ্রামটি কেবল একটির সমর্থন করতে হবে। আপনার উত্তরে কোনটি দয়া করে বলুন।

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

এবং এখন ক্লাসিক বিন্যাসে।

ইনপুট

উপরের এক্সটেনশনগুলির একটির একটি ফাইল নাম।

পরিবর্তে আপনি কোনও চিত্রের অবজেক্ট বা ইতিমধ্যে এনকোড করা চিত্রও নিতে পারেন।

আউটপুট

একটি সঙ্গে একটি 6 অঙ্ক হেক্স কোড হিসাবে যে ফাইল একমাত্র রঙ ঐচ্ছিক নেতৃস্থানীয় #যেমন #000000কালো।

আপনি আরজিবি রঙের দশমিক বা হেক্স মানগুলি সহ একটি তালিকা / টুপল / স্ট্রিং আউটপুট করতে পারেন, একটি পরিষ্কার, অ-সংখ্যাযুক্ত ডিলিমিটার , |ইত্যাদি সহ output

আপনি স্বচ্ছতার আউটপুট নাও পেতে পারেন।

যদি ফাইলটি সব এক রঙ না হয় তবে আপনি আউটপুট একটি falsy মান নয় অবশ্যই #000000এবং বিনষ্ট ছাড়া কিছু মুদ্রণ STDERR। এটি এমন যাতে আপনি সহজেই ফাইলটি খুলতে না পারেন এবং প্রথম পিক্সেলের আরজিবি মান পেতে পারেন।

বিধি

  • হেক্স কোডটি কেবলমাত্র যদি ফাইলটি এক রঙের হয় তবে আউটপুট করা দরকার।
  • ফাইলটি 500x500পিক্সেল হবে
  • পিক্সেলগুলির সকলেরই 0% স্বচ্ছতা থাকবে।
  • এই এত সংক্ষিপ্ততম কোড জয়!

উদাহরণ


7
ফাইলটি সমস্তই এক রঙের নয় বলে মনে হয় আমার কাছে একটি অপ্রয়োজনীয় জটিলতার মতো। এবং দৃ strongly়ভাবে টাইপ করা ভাষায় একটি মিথ্যা মান, যেমন সি #, কেবল একটি হতে পারে bool। এই মামলার জন্য আমি একটি stringসাধারণ কেস এবং boolএকটি নরমাল কেস, একটি জড়ান জন্য ফিরে আসছি object। এটি ঠিক আছে নাকি আমি কোনও খালি স্ট্রিং বা অনুরূপ ফিরিয়ে দিতে পারি?
TheLethalCoder

5
এছাড়াও আমি আপনার চিত্রগুলি i.stack.imgur.com এ আপলোড করার পরামর্শ দিচ্ছি (আমার প্রোগ্রামটি ছবিটি পেস্টবোর্ডের বাইরে ফেলতে পারে না)
ব্যবহারকারী 41805

1
চিত্রের ইনপুটটির জন্য আমাদের একটি ডিফল্ট মান রয়েছে, আপনি এটি আমাদের মেটাতে এটি এখানে পেতে পারেন । এটি আপনার কাছে যা আছে তা থেকে উল্লেখযোগ্যভাবে আলাদা নয়, তবে আপনি আপনার সরবরাহিত সরবরাহের পরিবর্তে এটিতে লিঙ্ক করতে চাইতে পারেন।
পাভেল

6
পছন্দ করুন আউটপুটটি "সেই ফাইলের একমাত্র রঙ" বললে উত্তরদাতাদের ধরে নেওয়া যায় যে চিত্রটিতে একটি রঙ থাকবে। তারপরে নিয়মগুলি এর বিরোধিতা করে। অন্যদিকে, যদি আউটপুট বিভাগটি "সেই ফাইলের একমাত্র রঙ, বা ছবিতে একাধিক বর্ণ ধারণ করে" এর চেয়ে মিথ্যা মান পৃথক করে এমন কিছু পড়ে থাকে তবে এটি আরও পরিষ্কার হবে। অথবা, এক্সনোর হিসাবে এটিকে যথাযথভাবে বললে, এটি বিভ্রান্তিকর যখন চ্যালেঞ্জের শরীরটি একটি জিনিস বলে তবে পরবর্তী অংশে অন্যটি বলে
লুইস মেন্ডো ২

2
আমরা কি ধরে নেব যে সমস্ত ফাইল সবসময় 3 টি চ্যানেল (প্রতিটি 8 টি বিট) আরজিবি ফাইল থাকবে?
অক্টোপাস

উত্তর:


6

এমএটিএল , 15 12 বাইট

Yi6Bed~?2MYm

চ্যালেঞ্জে দেওয়া ".png" চিত্রগুলির সাথে পরীক্ষিত। এটি সম্ভবত অন্যান্য এক্সটেনশনের সাথেও কাজ করে। ইনপুটটি কোনও ফাইলের নাম বা চিত্রের একটি URL হতে পারে।

আউটপুট হ'ল আর, জি, বি দশমিক মানগুলি স্পেস দ্বারা পৃথক করা হয় বা খালি স্ট্রিং (যা মিথ্যা) যদি একাধিক রঙ থাকে।

প্রথম এবং শেষ পরীক্ষার ক্ষেত্রে উদাহরণ:

এখানে চিত্র বর্ণনা লিখুন

ব্যাখ্যা

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

@ লেথলকোডার ধন্যবাদ আমি মনে করি না যে এটি এই জবাবটিতে সহায়তা করে, যদি না আমি M×N×3সরাসরি অ্যারে ইনপুট করতে পারি , যা সম্ভবত ওপি বলতে বোঝায় না
লুইস মেন্ডো ২

1
12 বাইট ?! ভাল, পবিত্র জাহান্নাম!
শেগি

4

বাশ + কোর-ইউটিস + ইমেজম্যাগিক, 60

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

এক বর্ণ থাকলে রঙটি আউটপুট করে এবং একাধিক রঙ না থাকলে কিছুই না।

  • convert $1 txt: ইনপুট ফাইলটি পড়ে এবং পাঠ্য ফাইল হিসাবে আউটপুটগুলি বিশেষত এই বিন্যাসে পড়ে:
# চিত্রম্যাগিক পিক্সেল গণনা: 500,500,255, শ্রিগ্বা
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) + এইচটিএমএল, 315 289 243 218 217 215 211 210 218 208 বাইট

সমস্ত পিক্সেল অভিন্ন ছিল তা পরীক্ষা করে প্রচুর বাইট যুক্ত হয়েছিল। আমি যখন প্রথম পিক্সেলের রঙটি যাচ্ছিলাম তখন তার চেয়ে অনেক বেশি বড় হচ্ছে না - এতে খুশি :)

URL টি (পরম, আপেক্ষিক, ডাটা কিছু যে হিসাবে ব্যবহার করা যেতে পারে লাগে 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৪ ডেটা ইউআরএলগুলি ইনপুট হিসাবে গ্রহণ করবে। 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

@ দ্য লেথাল কোডার, "data:image/png;base64,"+পরিবর্তে ইউআরএল হিসাবে ইনপুট নিয়ে আমার কোডটি কেটে ফেলতে পেরেছিলাম ।
শেগি

3

পাইথন 2, 80 বাইট

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

পিআইএল.আইমেজে একটি গেটকালার্স ফাংশন রয়েছে যা Noneপ্যারামিটারের তুলনায় রঙের সংখ্যা বড় হলে এবং [(pixels, (r,g,b,a)), ...]কাঠামোর মধ্যে রঙের একটি হিস্টোগ্রাম ফেরত দেয় returns


You may also take an image object or already encoded image instead.ওপি আপডেট হয়েছে বাইটস সংরক্ষণ করতে সক্ষম হতে পারে ...
TheLethalCoder

@ দ্য লেথালকোডার তাই তাহলে আমার কি ইতিমধ্যে একটি খোলা চিত্র ধরে নেওয়া উচিত এবং কেবল লিখতে হবে print i and i[0][1][:3]?
গ্যাবার ফেকেটে

আমি ধরে নেব যে আপনার কাছে রঙিন কলটি দরকার ছিল
TheLethalCoder

3

গণিত, 55 51 বাইট

-4 ক্যালকুলেটরফলাইনে ধন্যবাদ

সম্পূর্ণ ফাংশনে রিফ্যাক্টরিংয়ের জন্য +0।

গাণিতিক ইমেজ অবজেক্টটি ইনপুট হিসাবে ব্যবহার করা - 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.। আপডেট হবে।
ইয়ান মিলার

@ ক্যালকুলেটরফ্লাইন সম্পর্কে ইঙ্গিত দেওয়ার জন্য ধন্যবাদ 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);}

-লাইটালকোডারকে নিয়ম পরিবর্তনের জন্য আমাকে আপডেট করার জন্য প্রচুর
বাইটস যা আপনাকে প্রচুর গল্ফিংয়ের অনুমতি দেয় - @ কেভিন ক্রুইজসেন এবং ফিক্সড টাইপকে ধন্যবাদ


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+ এ পরিবর্তন করে আপনিও এতে পরিবর্তন Object f(java.awt.image.BufferedImage i)করতে পারেন i->। এছাড়াও, আমি মনে করি আপনি একটি টাইপো করেছি: করা উচিত নয় if(i.getRGB(k,l)!=i)হতে !=jপরিবর্তে?
কেভিন ক্রুইজসেন

ধন্যবাদ কেভিন ক্রুজসেন এবং হ্যাঁ, আমি মনে করি আমি এটি করেছি: পি
হাইপার নিউট্রিনো

1
@ হাইপারনিট্রিনো আপনি এটি জাভা 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

আমি পিআইএল আমদানি * থেকে কয়েকটা বাইট (বা বিকল্পভাবে পিআইএল আমদানি এবং তারপর সি = পিআইএল আমদানি) সংরক্ষণ করার আশা করব
ফুন

@Foon 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 বাইট সংরক্ষণ করা হয়েছে।

চিত্রটি একই রঙের হওয়ার জন্য আমাদের যদি অতিরিক্ত চেক না নিতে হয় তবে এটি কেবল 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

ঠিক আছে. আমি কিছু পরিবর্তন করেছি
han ধন্যবাদ

ছোট হাতেক্স কি গ্রহণযোগ্য?
ব্যবহারকারী 202729

Most@PixelValue[i, {1, 1}, "Byte"]কিছু বাইট সংরক্ষণ করা হবে।
ব্যবহারকারী 202729

103 বাইট: If[Length@Tally[a=i~ImageData~"Byte"]<2,"#"<>StringPadLeft[Most@a[[1,1]]~IntegerString~16,2,"0"],False]- আপনার ইমেজডাটা ফাংশনটি ব্যবহার করুন। অস্তিত্ব জানত না।
ব্যবহারকারী 202729

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 বিটম্যাপ নেয়। ফাইলটির আরজিবি প্রিন্ট করে, উদাহরণস্বরূপ 255,255,255, অথবা 0যদি ফাইলটি ধ্রুবক না থাকে। কোনও ফাইল সরবরাহ না করা হলে সম্ভবত খারাপভাবে ক্রাশ হয়।

আকর্ষণীয় বিষয়গুলি লক্ষ্য করুন:

  • অন্তর্ভুক্ত এড়ানোর void*জায়গায় ব্যবহার করেFILE*<stdio.h>
  • সমস্ত বাইট একই হয় কিনা তা নির্ধারণের জন্য একটি সাধারণ forলুপ ব্যবহার করেi%3
  • খুব গল্ফ করা যেতে পারে , আমি এই উত্তরটি লেখার সময় 50 বাইট গল্ফ করেছি
  • বিএমপি রংগুলিকে বিজিআর হিসাবে সঞ্চয় করে তাই আরও / কম পিছনে পিছনে পড়ে

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অর্থ: 499 ডাউন থেকে 0 থেকে 500 বার পরিসীমা পুনরাবৃত্তি করুন
  • উল্লেখ্য 2 : অভিব্যক্তি $b|% G*l $_ $y শর্টকাট জন্য $b.GetPixel($_,$y)। এই কৌশলটি গোফিংয়ের সাথে উপযোগী তবে এটি কোডটি ধীর করে দেয়।

এর সাথে আউটপুট $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 $ 

ওপেনসিভি একটি চিত্র পড়তে এবং এটিকে একটি এন-ডাইমেনশনাল অ্যারে হিসাবে ফিরিয়ে দিতে সক্ষম। NumPy অন্যের বিরুদ্ধে প্রথম পিক্সেলটি পরীক্ষা করতে এবং আরজিবি মানগুলি ফাঁকা করে বা ফাঁকা করার জন্য ব্যবহৃত হয়।


0

পিএইচপি, 88 বাইট

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

বেনামে ফাংশন একটি ইনডেক্সড পিএইচপি চিত্র সংস্থানটিকে প্যারামিটার হিসাবে গ্রহণ করে, প্রথম প্যালেট স্লটে রঙ ধরে, রঙ কোড বা 0 দেয় returns

প্রোগ্রাম, 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);

উপরের মতো, তবে পিএনজি ফাইলের প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.