রঙ গণনা, ঘটনা অনুসারে বাছাই করা


14

এটি বর্ণনা করার জন্য সহজ এবং আমি খুব কমই বিশ্বাস করতে পারি যে এটি আগে গল্ফ হয় নি:

প্রদত্ত চিত্রের জন্য (যে কোনও বিন্যাস আপনার ভাষা দ্বারা সমর্থিত), অনন্য রঙগুলি সন্ধান করুন এবং রঙগুলির একটি তালিকা আউটপুট করুন।

  • হেক্স আরজিবিতে রঙের কোডটি মুদ্রণ করুন, এটি হ্যাশ সাইন যার #পরে আর এর জন্য দুটি সংখ্যা, জি এর জন্য 2 টি সংখ্যা এবং বি এর জন্য 2 অঙ্ক থাকবে ( #xxxxxxযেখানে x 0-9, এএফ এবং / বা এফ হতে পারে)।
  • হেক্স কোডের পরে একটি স্থান এবং দশমিক পিক্সেল গণনা, তারপরে একটি নতুন লাইন ( \nবা \r\n) হবে।
  • তালিকাটি সাজানো হবে গণনা অবতরণ অনুসারে (শীর্ষে বেশিরভাগ ঘন ঘন রঙ)।
  • যদি টাই থাকে (একই পরিমাণে দুটি রঙ), ক্রমটি গুরুত্বপূর্ণ নয়।
  • চিত্রটিতে স্বচ্ছতা থাকবে না, সুতরাং কোনও আলফা মান গুরুত্বপূর্ণ নয়। আলফা মান আউটপুট অংশ নাও হতে পারে।
  • 4000x3000 আকারের একটি চিত্র অবশ্যই সমর্থিত হবে (এটি সংজ্ঞা টাইপ করতে পারে)

নমুনা চিত্র "10 রেড 20 ব্লু 30 ব্ল্যাক 40 হোয়াইট": নমুনা চিত্র 1

প্রত্যাশিত আউটপুট:

#FFFFFF 40
#000000 30
#0000FF 20
#FF0000 10

নমুনা চিত্র "নীল গ্রেডিয়েন্ট": নমুনা চিত্র 2

প্রত্যাশিত আউটপুটগুলির মধ্যে একটি (যেহেতু একই রঙের ক্রমের পরিবর্তিত হতে পারে):

#718DFF 19
#5571FF 15
#3855FF 11
#8DAAFF 11
#1C38FF 7
#AAAAFF 7
#8D8DFF 6
#AAC6FF 6
#C6C6FF 5
#C6E2FF 4
#001CFF 3
#E2E2FF 3
#FFFFFF 3

নমুনা চিত্র "টেস্টআইমেজ", দয়া করে @ লুইস মেন্ডো সরবরাহ করেছেন :

নমুনা চিত্র 3

প্রত্যাশিত আউটপুট:

#FFFFFF 18042
#000000 1754
#FF3300 204

এই প্রশ্নের অনুরূপ , তবে আউটপুটটি কোনও চিত্র নয়, পাঠ্য।


count descendingকিছুটা অস্পষ্ট। আমরা এটি বাছাই কিভাবে?
আর

@ এশিয়াᴛᴇʀʟʏ: অবতরণ: শীর্ষে সর্বাধিক ঘন ঘন রঙ
টমাস ওয়েলারের

ঠিক আছে, আমি বলব এটি আরও কিছুটা পরিষ্কার হওয়া দরকার। এমন কিছু বলবে the most frequent colors at the top?
আর

@ এশিয়াআই: আমি সম্মত, উভয়ের জন্যই প্রশ্নটি আপডেট করেছি
টমাস ওয়েলারের

1
বেশ কয়েকটি পরীক্ষার কেস ভাল হবে।
মার্টিন ইন্ডার

উত্তর:


4

গণিত, 91 বাইট

StringRiffle@SortBy[Tally["#"<>IntegerString[#,16,2]&/@Join@@#~ImageData~"Byte"],-Last@#&]&

@ ডেভিডসির উত্তর থেকে সম্পূর্ণ ভিন্ন পদ্ধতি ব্যবহার করে । এটির বিপরীতে, এটি কোনও আকার এবং রঙ গণনা সহ চিত্রগুলিকে সমর্থন করতে পারে। ব্যাখ্যা:

#~ImageData~"Byte"                   Take the RGB values of the image...
Join@@(...)                          Flatten to a list of colors...
"#"<>IntegerString[#,16,2]&/@(...)   Convert each color to #012def format...
Tally[(...)]                         Convert to a list of {color, multiplicity}
                                      pairs (this does most of the work)...
SortBy[(...),-Last@#&]               Order by the multiplicity descending...
StringRiffle@(...)                   And create a string with the desired format.

খুশী হলাম। আমি পছন্দ করি কীভাবে "বাইট" চিত্রের ডেটা ফেরায়।
ডেভিডসি

4

বাশ + কোর্টিলস, 54

  • 7 বাইট সংরক্ষণ করেছেন @ মান্যাটওয়ার্ককে ধন্যবাদ
grep -oE '#\w+'|sort|uniq -c|sort -nr|awk '$0=$2" "$1'

এটি চিত্রম্যাগিকের .txt ফর্ম্যাটটির STDIN ইনপুট ধরেছে

Ideone।


যদি উপরের ইনপুট ফর্ম্যাটটি খুব বেশি পরিমাণে থাকে তবে আমরা যে কোনও বিন্যাস থেকে চিত্রম্যাগিক রূপান্তরটি যুক্ত করতে পারি:

বাশ + কোর্টিলস + ইমেজম্যাগিক, 71

convert $1 txt:-|grep -oE '#\w+'|sort|uniq -c|sort -nr|awk '$0=$2" "$1'

এখানে, ইনপুট চিত্র ফাইলের নাম কমান্ড-লাইন প্যারামিটার হিসাবে দেওয়া হয়।


2
awk এর ডিফল্ট OFS একটি স্থান, আপনি :0 "" trade এর জন্য ট্রেড করতে পারেন,
n0741337

1
বা এমন কি খাটো awkঅংশ: awk '$0=$2" "$1'
manatwork

3

জাভাস্ক্রিপ্ট (ES6), 359 355 বাইট

@ নীলকে ধন্যবাদ 4 বাইট সংরক্ষিত

u=>{i=new Image;i.src=u;e=document.createElement`canvas`;c=e.getContext`2d`;i.onload=_=>{w=e.width=i.width;h=e.height=i.height;c.drawImage(i,0,0);d=c.getImageData(0,0,w,h).data;for(o={},i=0;i<d.length;i+=4)++o[s='#'+`00000${(d[i]<<16|d[i+1]<<8|d[i+2]).toString(16)} `.slice(-7)]?0:o[s]=1;Object.keys(o).sort((a,b)=>o[b]-o[a]).map(c=>console.log(c+o[c]))}}

ডেমো

f=u=>{i=new Image;i.crossOrigin='';i.src=u;e=document.createElement`canvas`;c=e.getContext`2d`;i.onload=_=>{w=e.width=i.width;h=e.height=i.height;c.drawImage(i,0,0);d=c.getImageData(0,0,w,h).data;for(o={},i=0;i<d.length;i+=4)++o[s='#'+`00000${(d[i]<<16|d[i+1]<<8|d[i+2]).toString(16)} `.slice(-7)]?0:o[s]=1;Object.keys(o).sort((a,b)=>o[b]-o[a]).map(c=>console.log(c+o[c]))}}
f('http://i.imgur.com/acPudA9.gif')
<input value="https://i.imgur.com/acPudA9.gif" onchange="console.log('-------');f(this.value)">

অন্যান্য পরীক্ষার মামলাগুলি আমি সিওআরএস সমর্থন করার জন্য ইমগারে আপলোড করেছি:

এই দুইটির নির্দিষ্ট রঙের ডেটা কোনও কারণে আপলোড করার সময় কিছুটা পরিবর্তিত হয়েছে বলে মনে হয় তবে এটি এখনও সেই দুটি পরীক্ষার ক্ষেত্রে একই পরিমাণের ঘটনাগুলি মুদ্রণ করে।


আমি মনে করি |এর চেয়ে কম প্রাধান্য আছে <<যদি আপনি এটির পরিবর্তে এটি ব্যবহার করেন তবে আপনার এতগুলি এসের +দরকার হবে না ()
নিল

@ ব্যবহারকারীর 2428118 পরের বার আমি প্রশংসা করব যদি আপনি কোনও মন্তব্যে উদ্বেগ ছেড়ে দেন এবং আমাকে নিজের উত্তর সম্পাদনা করার পরিবর্তে আমার নিজের উত্তর সম্পাদনা করতে বলে থাকেন। আপনি <!-- language: lang-js -->জাভাস্ক্রিপ্ট কার্যকরভাবে অক্ষম করে স্নিপেট থেকে সরিয়ে আসলেই আমার ডেমোটি ভেঙে দিয়েছিলেন ।
প্যাট্রিক রবার্টস

@ পেট্রিক দুঃখিত, আমি পরের বার আরও সতর্ক থাকব। এছাড়াও, আমি সবেমাত্র কিছু বাইট সংরক্ষণ করার একটি উপায় খুঁজে পেয়েছি:u=>{document.write`<img src=${u} id=i><canvas id=e>`;c=e.getContext`2d`;i.onload=_=>{w=e.width=i.width;h=e.height=i.height;c.drawImage(i,0,0);d=c.getImageData(0,0,w,h).data;for(o={},i=0;i<d.length;i+=4)++o[s='#'+`00000${(d[i]<<16|d[i+1]<<8|d[i+2]).toString(16)} `.slice(-7)]?0:o[s]=1;Object.keys(o).sort((a,b)=>o[b]-o[a]).map(c=>console.log(c+o[c]))}}
ব্যবহারকার 2428118

2

পাইথ , 29 বাইট

jmj;_d_SrSm+\#.[\06.Hid256'Q8

এটি অনলাইন চেষ্টা করুন!

(অনলাইন অনুবাদক চিত্রটি পড়তে পারেন না, তাই আমি সেই অংশটি সরিয়ে ফেলেছিলাম এবং সেই চিত্রটি পড়ার ফলাফলটি ইনপুট করেছিলাম যা রঙের ত্রিভুতির একটি তালিকা the চিত্রটি পড়ার জন্য দায়ী অংশটি হ'ল ' , একক কোলন।)

'একটি একক কোলনের কার্যকারিতার প্রমাণ


আপনার sআগে প্রয়োজন 'Q, যেহেতু কোনও চিত্রকে ট্রিপল্টের তালিকার তালিকা হিসাবে উপস্থাপন করা হয়।
জাকুব

এখানে একটি সঠিক (এবং সংক্ষিপ্ত) সমাধান রয়েছেV_SrS%L+\#*3"%02X"s'z8jd_N
জাকুব

2

গণিত 103 92 বাইট

{"#"<>IntegerString[255Round[List@@#],16,2],#2}&@@@DominantColors[#,9999,{"Color","Count"}]&

উদাহরণ

মাংসখণ্ডের


ব্যাখ্যা

DominantColorsসাধারণত রঙের একটি তালিকা দেয় এবং একটি চিত্রের প্রধান ক্লাস্টারগুলিকে উপস্থাপন করে গণনা করে। যখন অনুরোধ করা রঙের সংখ্যা চিত্রের রঙের সংখ্যা ছাড়িয়ে যায়, তখন ঠিক পিক্সেলের রঙগুলি ফিরে আসে। (আমি ধরে নিচ্ছি যে ইনপুট ইমেজে 10 000 এরও কম রঙ হবে))

ছবি


{"#"<>IntegerString[255Round[List@@#],16,2],#2} হেক্সাডেসিমাল মানগুলির সাথে বেস 10 রঙের মানগুলিকে রূপান্তর করে।


দ্রষ্টব্য: ম্যান্ডরিল চিত্রটিতে কেবল 5 টি রঙ রয়েছে colors (আমি ColorQuantize[<image>,5]স্ট্যান্ডার্ড ম্যান্ড্রিল ইমেজে রঙের সংখ্যা হ্রাস করতাম ))


আপনাকে সবেমাত্র গল্ফ করেছে;)
লিজিয়নম্যামাল 978

অল্প অল্প করে। তবে আপনার পদ্ধতিতে সীমাহীন সংখ্যক রঙ লাগে।
ডেভিডসি

1

পাওয়ারশেল ভি 2 +, 187 বাইট

$a=New-Object System.Drawing.Bitmap $args[0]
$b=@{}
0..($a.Height-1)|%{$h=$_;0..($a.Width-1)|%{$b["#"+-join($a.GetPixel($_,$h).Name[2..7])]++}}
$b.GetEnumerator()|Sort value -des|FT -h -a

সর্বাধিক প্রভাবশালী রঙ পান সম্পর্কে আমার উত্তর থেকে কোডের প্রায় সমস্তটি পুনরায় ব্যবহার করে । সুতরাং, সম্পূর্ণ ব্যাখ্যার জন্য দয়া করে এটি উল্লেখ করুন।

এখানে পরিবর্তন ইন্ডেক্স হয় $bতৃতীয় লাইনটি স্পষ্ট আউটপুট ফরম্যাট প্রয়োজনীয়তা মেলে, এবং শেষ লাইন আমরা sortদ্বারা valueমধ্যে -desযাতে cending, তারপর পাইপ Format-Tableদিয়ে -HideTableHeaders এবং-A utoSize পরামিতি হিসেবে। FTএখানে পিপিসিজিতে প্রকৃতপক্ষে ব্যবহার করা খুব বিরল , যেহেতু আউটপুট কার্যকর হওয়ার শেষে অন্তর্নিহিত, তবে আমরা কেবল সঠিক অংশের আউটপুট পাব তা নিশ্চিত করার জন্য এটি এখানে খুব দরকারী।

উদাহরণ

প্রথমটি ডমিন্যান্ট কালার চ্যালেঞ্জের "লাল" পরীক্ষার চিত্র, দ্বিতীয়টি এই চ্যালেঞ্জের "সাক্ষ্য"।

PS C:\Tools\Scripts\golfing> .\color-count.ps1 C:\Tools\Scripts\golfing\img\red.png

#ff0000 139876
#dcd9cf 3056  
#f2f1ed 1512  
#ffffff 1508  
#ffe6e6 1488  
#ffe3e3 8     
#eae8e2 4     
#fffbfb 4     


PS C:\Tools\Scripts\golfing> .\color-count.ps1 C:\Tools\Scripts\golfing\img\z07VA.gif

#ffffff 18042
#000000 1754 
#ff3300 204  

1

টিসিএল / টাকা , 134 বাইট

console s
lmap s [concat {*}[[image c photo -fi $argv] d]] {dict inc D $s}
dict fo k\ v [lsort -int -s 2 -inde 1 -de $D] {puts $k\ $v}

dজন্য data

টিসিএল / টাকা , 232 বাইট

console s
set I [image c photo -fi $argv]
set i 0
time {set j 0
time {dict inc D #[join [lmap s [$I g $i $j] {format %02X $s}] ""]
incr j} [image h $I]
incr i} [image w $I]
dict fo k\ v [lsort -int -s 2 -inde 1 -de $D] {puts $k\ $v}

wish sort_pix.tcl QTE4O.png

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


wish sort_pix.tcl 5s1Ob.png

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


wish sort_pix.tcl z07VA.gif

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


1

ব্রেন-ফ্লাক , 1110 বাইট

{{}({}[(()()()()()){}])}{}(<>)<>([]){{}({}()<({}()<({}()<>)>)>)<>([])}{}<>{({}<({}<({}<(()()<>)>)>)>)<>{(<>)<>(()()()){({}[()]<<>({}<([([(({})<>[({})]<>)])]<>)<>{({}()<([{}])<>({}<>)<>>)<>}{}<>{}<>>{})({}<({}<({}<>)<>({}<>)<>({}<>)<>>)<>({}<>)<>({}<>)<>({}<>)>)<>({}<({}<>)<>({}<>)<>>)<>({}<>)<>({}<>)>)}{}<>((){[()](<{}>)}{})((){[()](<{}({}())<>{}{}{}>)}{}){{}(<<>(()()()){({}[()]<({}<(([])<{{}({}<>)<>([])}{}<>>)<>>)<>{({}[()]<({}<>)<>>)}{}<>>)}{}>)}{}<>({}<({}<>)<>({}<>)<>({}<>)<>>)<>({}<>)<>({}<>)<>({}<>)<>}({}<(([])<{{}({}<>)<>([])}{}<>>)<>>)<>{({}[()]<({}<>)<>>)}{}(()()()()){((({}[()])<{({}[()]<({}<({}<>)<>>)>)}{}>)<{({}[()]<<>({}<>)>)}{}>)}{}<>}{}<>(()()()())([][()])({}(<>))<>([()]{()<(({})){({}[()])<>}{}>}{}<><{}{}>){({}[()]<(<(()()()())([][()])({}(<>))><>([()]{()<(({})){({}[()])<>}{}>}{}<><{}{}>)<{({}[()]<([([({}<({}<({}<({}<(({})<>)<>>)>)>)>)<><({}<>)>]{}<(())>)](<>)){({}())<>}{}({}<><{}{}>){{}<>(<({}<({}<({}<({}<({}<({}<({}<({}<>)>)>)>)<>>)>)>)>)<>({}<({}<({}<({}<<>>)>)>)>)>)}{}({}<({}<({}<({}<>)>)>)>)<>>)}{}<>{}{}{}{}>[()]){({}[()]<({}<({}<({}<({}<>)>)>)>)<>>)}{}<>>)}{}{({}[()]<>)<>}<>

এটি অনলাইন চেষ্টা করুন!

ওয়েল যে একটি দু: সাহসিক কাজ ছিল। দেখা যাচ্ছে, মস্তিষ্ক-ফ্ল্যাক চিত্র প্রক্রিয়াকরণে খুব ভাল নয়। কে জানত?

আমি এই প্রযুক্তিগতভাবে অনুরোধ করা কঠোর আউটপুট ফর্ম্যাটটি পূরণ করে না তা উল্লেখ করে শুরু করব। আপনি যদি প্রয়োগ করতে চান তবে আমাকে জানান এবং আমি অনুবাদ কোড যুক্ত করার চেষ্টা করব। আপাতত এটি দশমিক সংখ্যার আউটপুট দেয়: প্রতিটি 4 টি নম্বর লাল সবুজ নীল রঙের ক্রমে একটি রঙকে উপস্থাপন করে।

পরবর্তী, ইনপুট। মঞ্জুরিপ্রাপ্ত ইনপুট ফর্ম্যাটগুলি আরও নমনীয় ছিল তাই মস্তিষ্ক-ফ্ল্যাঙ্কটি বিশ্লেষণের জন্য সহজ বিন্যাসটি ব্যবহার করেছি (যা আমি খুঁজে পেতে পারি): নেটপবিএম পি 6। দুর্ভাগ্যক্রমে, ব্রেন-ফ্ল্যাক পি 3 ফর্ম্যাট থেকে দশমিক সংখ্যাগুলি পার্স করতে পারেনি কারণ সমস্ত নেটপবিএম চিত্র স্ট্যান্ডার্ডের সাথে প্রয়োজনীয় অক্ষর দিয়ে শুরু হয় তাই ইনপুটগুলি বৈধ নেটপবিএম ফাইল।P এবং ব্রেইন-ফ্ল্যাক অ- ফাইলগুলি থেকে দশমিক ইনপুট পরিচালনা করতে পারে না। সুতরাং পি 6 এর পরিবর্তে ব্যবহৃত হয়েছিল, কারণ পি 6 রঙের তথ্যগুলি বাইট হিসাবে সংরক্ষণ করে, যা এএসসিআইআই ইনপুট মোডে সংখ্যা হিসাবে বিবেচিত হয়। একটি চ্যালেঞ্জ রয়ে গেল কারণ শিরোনামের তথ্যটি ছিল না থেকে কার্যকররূপে এনকোড কিন্তু সৌভাগ্যবশত আমি যে ধরনের কোনো তথ্য তাই এটি শুধু বাতিল করা হয় প্রয়োজন ছিল না। এই প্রোগ্রামটি নেটপবিএম স্ট্যান্ডার্ডকে পুরোপুরি মানায় না কারণ এটি শিরোনামের মধ্যে নতুন লাইনের অনুমতি দেয় না, তবে নিউলাইনগুলি হয় না

শেষ সতর্কতামূলকভাবে, টিআইওর সংস্করণটি আসলে "অফিসিয়াল" অপারেশনের জন্য সঠিকভাবে কনফিগার করা হয়নি কারণ (আমার জ্ঞানের কাছে) আমি টিআইওতে ইনপুট হিসাবে ফাইল সরবরাহ করতে পারি না, বা সরাসরি ইনপুটটিতে অপ্রিন্টযোগ্য এএসসিআইআই সম্পর্কিত বাইট সরবরাহ করতে পারি না। অফিসিয়াল অপারেশনের জন্য -aপতাকাটি কাঁচা বাইট হিসাবে ইনপুট নিতে এবং -fকোনও ফাইল থেকে ইনপুট নিতে হয়। টিআইও লিঙ্কের স্যাম্পল ইনপুটটি পরিবর্তে নেটপবিএম উইকি পৃষ্ঠায় উদাহরণ থেকে ম্যানুয়ালি অনুবাদ করা হয়েছিল ।

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

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

এখনও করার মতো গল্ফিং থাকতে পারে, আমার পূর্বের ব্রেইন-ফ্লাক উত্তরটি অনেকগুলি সংশোধন করেছিল, তবে আশা করি সেখানে শেখা পাঠগুলি এটিকে আরও ভাল সূচনার পয়েন্ট দিয়েছে।


0

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

import Image
I=Image.open(input()).convert('RGB')
w,h=I.size
r=['#'+('%0.2X'*3)%I.getpixel((i%w,i/h))for i in range(w*h)]
for a,b in sorted(set((r.count(v),v)for v in r))[::-1]:print b,a

এটি অনলাইন চেষ্টা করুন!

দাবি অস্বীকার: উপস্থাপিত আউটপুটগুলি পঠনযোগ্যতার জন্য এক-লাইনার। কোড আউটপুটগুলি চ্যালেঞ্জের অনুরোধ অনুসারে স্থান এবং লাইন পৃথকীকরণের ফলাফল দেয়।

10red 20 ব্লাউ 30 ব্ল্যাক 40 হোয়াইটের আউটপুট:

[('#FFFFFF', 40), ('#000000', 30), ('#0000FF', 20), ('#FF0000', 10)]

নীল গ্রেডিয়েন্টের জন্য আউটপুট:

[('#718DFF', 19), ('#5571FF', 15), ('#8DAAFF', 11), ('#3855FF', 11), ('#AAAAFF', 7), ('#1C38FF', 7), ('#AAC6FF', 6), ('#8D8DFF', 6), ('#C6C6FF', 5), ('#C6E2FF', 4), ('#FFFFFF', 3), ('#E2E2FF', 3), ('#001CFF', 3)]

পরীক্ষার চিত্রের জন্য আউটপুট

[('#FFFFFF', 18042), ('#000000', 1754), ('#FF3300', 204)]

ব্যাখ্যা:

w,h=I.size # field size stores tuple of values of width and height of image

I.getpixel((i%w,i/h)) # returns tuple of base10 RGB values

('%0.2X'*3) # format string to convert int into hex

set((r.count(v),v)for v in r) # generate set of unique pairs count-color 

sorted(set(...))[::-1] # apply sorted(), as it sorts set of tuples by firts elements and reverse sort

print b,a  # swap values in tuples and print

0

জাভা (1.4+) , 483 428 বাইট

import java.util.*;class I {public static void main(String[] a) throws Exception {java.awt.image.BufferedImage i = javax.imageio.ImageIO.read(new java.io.File(a[0]));Map m=new HashMap();String s;for(Integer x=0,y=0,c;y<i.getHeight();y++)for(x=0;x<i.getWidth();m.put(s=x.toHexString(((c=i.getRGB(x++,y))&0xff0000)>>16)+x.toHexString((c & 0xff00)>>8)+x.toHexString(c&0xff),m.get(s)==null?1:(int)m.get(s)+1));System.out.print(m);}}

এটি অনলাইন চেষ্টা করুন! (অনলাইনে কাজ করে না)


Ungolfed:

import java.util.*;

class I {
    public static void main(String[] a) throws Exception {
        java.awt.image.BufferedImage i = javax.imageio.ImageIO
                .read(new java.io.File(a[0]));
        Map m = new HashMap();
        String s;
        for (Integer x = 0, y = 0, c; y < i.getHeight(); y++)
            for (x = 0; x < i.getWidth(); m
                    .put(s = x.toHexString(((c = i.getRGB(x++, y)) & 0xff0000) >> 16)
                            + x.toHexString((c & 0xff00) >> 8)
                            + x.toHexString(c & 0xff), m.get(s) == null ? 1
                            : (int) m.get(s) + 1))
                ;
        System.out.print(m);
    }
}

toString()মানচিত্রের ভালো আউটপুট:

{7c7c7c=6, 1d57a5=20468, 121212=7, d3d3d3=3, bdbdbd=9, 949494=2, 333=14, 626262=3, cacaca=2, 141414=5, fff=11, c9c9c9=1, e8e8e8=1, 919191=4, 161616=5, c2c2c2=1, 646464=7, 979797=12, fafafa=2, 808080=1, 7b7b7b=1, 484848=4, b9b9b9=2, f1f1f1=2, 6b6b6b=6, 363636=15, 262626=4, d8d8d8=2, 868686=4, 757575=1, 575757=3, a7a7a7=2, cecece=2, dcdcdc=2, c3c3c3=2, 1d1d1d=5, 727272=9, 656565=2, 3a3a3a=3, 7d7d7d=10, 393939=5, 797979=3, 222=31, 8f8f8f=2, 454545=4, 181818=9, 2e2e2e=2, 222222=1, 1c1c1c=19, b8b8b8=2, e1e1e1=5, 232323=5, 8a8a8a=3, 959595=7, 6a6a6a=9, 434343=7, 5c5c5c=3, 111=20, 909090=3, 424242=4, 212121=1, 1a1a1a=6, 202020=7, efefef=1, 565656=5, 6e6e6e=7, 767676=3, 323232=2, eee=5, 444=18, 2c62ab=1, 717171=2, b1b1b1=3, 6c6c6c=3, 545454=7, 515151=17, 2f2f2f=2, 4a4a4a=3, 888888=6, 6d6d6d=3, 898989=3, a3a3a3=5, 7e7e7e=9, ddd=9, b6b6b6=3, 2b2b2b=5, 313131=5, 8d8d8d=1, a2a2a2=2, 696969=3, a5a5a5=3, 4f4f4f=5, 828282=7, 191919=5, 606060=4, 6f6f6f=4, 8b8b8b=3, ebebeb=2, 555=19, 929292=3, 131313=11, 999999=5, d2d2d2=2, 444444=9, 474747=4, dddddd=1, 585858=8, 5a5a5a=3, 000=9887, afafaf=2, dfdfdf=3, 747474=3, 666666=4, a1a1a1=4, 2a2a2a=11, 4d4d4d=6, 818181=2, 878787=5, 215aa6=1, d9d9d9=4, b5b5b5=3, b4b4b4=3, 737373=4, aeaeae=3, bbb=15, 242424=4, 2d2d2d=8, 888=19, c1c1c1=1, 494949=9, dbdbdb=5, ccc=19, 5d5d5d=3, 5f5f5f=1, 414141=6, c8c8c8=3, aaa=16, 1e1e1e=3, 707070=2, 9e9e9e=2, 373737=7, 9d9d9d=2, 1b1b1b=4, 303030=7, 535353=10, 595959=2, 8e8e8e=3, 383838=5, 939393=18, 616161=2, 686868=6, dadada=1, e3e3e3=2, 5b5b5b=3, a4a4a4=5, 8c8c8c=5, a6a6a6=11, 292929=6, 4c4c4c=3, 151515=6, fefefe=2, 787878=2, 505050=2, e2e2e2=1, 1f1f1f=9, adadad=2, ababab=1, 5e5e5e=6, 252525=4, 4e4e4e=3, 282828=7, a8a8a8=4, 9c9c9c=3, aaaaaa=1, 101010=5, b7b7b7=2, 969696=6, 7f7f7f=4, 555555=2, a9a9a9=5, 343434=8, 999=17, 777777=3, ffffff=76669, f0f0f0=4, bbbbbb=1, 1e58a5=1, b3b3b3=4, 777=20, 636363=2, d4d4d4=1, 2c2c2c=5, 848484=1, 3c3c3c=3, bfbfbf=2, 3e3e3e=9, 333333=4, 7a7a7a=3, 858585=4, 4b4b4b=3, 272727=7, 111111=6, 666=13, 9b9b9b=1, bcbcbc=4, cfcfcf=2, 9a9a9a=1, 404040=21, 525252=3, 989898=4, 171717=5, 3b3b3b=2, c4c4c4=1, 3f3f3f=7, 464646=1, cdcdcd=2, b2b2b2=33, c5c5c5=2, bababa=2}

দয়া করে ১.৮ নির্দিষ্ট গল্ফ পরামর্শ পোস্ট করবেন না, যদি না এটি পুরানো জাভাতে কাজ করে, আমার আর চাই না।

উদাহরণ: লাম্বডাস জাভা-র বেশি সংস্করণে কাজ না করে তার চেয়ে বেশি কাজ করে।


" দয়া করে ১.৮ নির্দিষ্ট গল্ফের পরামর্শ পোস্ট করবেন না, যদি না এটি পুরানো জাভাতে কাজ করে, তবে আমি চাই না। " কৌতূহলের বাইরে: জাভা 4 যখন জাভা 10 ইতিমধ্যে উপলব্ধ?
কেভিন ক্রুইজসেন

কিছু গল্ফ যা জাভা 4 এ কাজ করা উচিত (আমি মনে করি): import java.util.*;class M{public static void main(String[]a)throws Exception{java.awt.image.BufferedImage i=javax.imageio.ImageIO.read(new java.io.File(a[0]));Map m=new HashMap();String s;for(Integer x=0,y=0,c;y<i.getHeight();y++)for(x=0;x<i.getWidth();m.put(s=x.toHexString((c&0xff0000)>>16)+x.toHexString((c&0xff00)>>8)+x.toHexString(c&0xff),m.get(s)==null?1:(int)m.get(s)+1))c=i.getRGB(x++,y);System.out.print(m);}}( 419 বাইট )
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন কারণ যুক্তিযুক্তভাবে, 1.8 হ'ল কোডের দিক থেকে বৃহত্তম প্রকাশ যা পূর্ববর্তী সংস্করণগুলির সাথে চলবে না । বেশিরভাগ অন্যান্য প্রকাশগুলি জেআরইতে ক্লাস সংশোধন এবং সংযোজন ছিল। পূর্ববর্তী জেআরই এর সাথে কমপক্ষে 1.8 সামঞ্জস্যপূর্ণ ছিল।
ম্যাজিক অক্টোপাস উরন

@ কেভিন ক্রুইজসেন x.toHexIntegerস্থিতিশীল আমদানির চেয়ে স্মার্ট ছিল।
ম্যাজিক অক্টোপাস উরান

জাভা 3ও নয়, কারণ জাভা 3 ... সত্যই ... এর খুব কম শর্টকাট রয়েছে ...
ম্যাজিক অক্টোপাস উরান

0

স্মাইলব্যাসিক, 165 বাইট

DEF C A
L=LEN(A)DIM C[L],N[L]FOR J=0TO L-1FOR I=0TO U-1ON A[J]-C[I]GOTO@L
NEXT
U=U+1@L
C[I]=A[J]INC N[I]NEXT
RSORT.,U,N,C
FOR I=0TO U-1?"#";HEX$(C[I],6),N[I]NEXT
END

চিত্রটি 32 বিট এআরজিবি রঙের মানগুলির অ্যারে হিসাবে দেওয়া হয় (নম্বরটি 6 অঙ্কের হেক্স স্ট্রিংয়ে রূপান্তরিত করার সাথে সাথে আলফা মানটি ছাঁটা হয়)

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