Renk sayısı, oluşumlara göre sıralanmış


14

Bu bir açıklamak basit ve neredeyse bu golfed değildi inanamadım:

Belirli bir görüntü için (diliniz tarafından desteklenen herhangi bir biçim), benzersiz renkleri bulun ve renklerin bir listesini çıkarın.

  • Renk kodunu onaltılık RGB olarak yazdırın, bu bir karma işareti ve #ardından R için 2 hane, G için 2 hane ve B için 2 hane ( #xxxxxxburada x, 0-9, AF ve / veya af olabilir) yazdırın.
  • Onaltılık kodun ardından bir boşluk ve ondalık piksel sayısı, ardından bir satırsonu ( \nveya \r\n) gelmelidir .
  • Liste azalan sayıya göre sıralanmalıdır (en sık görülen renk üstte).
  • Bir kravat varsa (aynı miktarda iki renk), sipariş önemli değildir.
  • Görüntü saydamlık içermeyeceğinden herhangi bir alfa değeri önemli değildir. Alfa değeri çıktının bir parçası olmayabilir.
  • 4000x3000 boyutundaki bir resim desteklenmelidir (bu, tanımların önemi olabilir)

Örnek resim "10 kırmızı 20 mavi 30 siyah 40 beyaz": Örnek resim 1

Beklenen çıktı:

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

Örnek resim "mavi degrade": Örnek resim 2

Beklenen çıktılardan biri (aynı renklerin sırası değişebileceğinden):

#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

@Luis Mendo tarafından sağlanan örnek test "testImage" :

Örnek resim 3

Beklenen çıktı:

#FFFFFF 18042
#000000 1754
#FF3300 204

Bu soruya benzer , ancak çıktı bir görüntü değil metindir.


count descendingbiraz belirsiz. Nasıl sıralarız?
Rɪᴋᴇʀ

@ EᴀsᴛᴇʀʟʏIʀᴋ: azalan: en sık görülen renk
Thomas Weller

Tamam, bunun biraz daha açık olması gerektiğini söyleyebilirim. Belki böyle bir şey söyleyebilir the most frequent colors at the topmisin?
Rɪᴋᴇʀ

@ EᴀsᴛᴇʀʟʏIʀᴋ: Katılıyorum, her ikisi için de soruyu güncelledik
Thomas Weller

1
Birkaç test durumu iyi olurdu.
Martin Ender

Yanıtlar:


4

Mathematica, 91 bayt

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

@ DavidC'nin cevabından tamamen farklı bir yöntem kullanır . Bunun aksine, herhangi bir boyut ve renk sayısına sahip görüntüleri destekleyebilir. Açıklama:

#~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.

Güzel. "Bayt" ın görüntü verilerini nasıl döndürdüğünü seviyorum.
DavidC

4

Bash + coreutils, 54

  • @Manatwork sayesinde 7 bayt kurtardı
grep -oE '#\w+'|sort|uniq -c|sort -nr|awk '$0=$2" "$1'

Bu, Imagemagick'in .txt biçiminin STDIN girişini varsayar .

Ideone.


Yukarıdaki giriş formatı çok fazla ise, herhangi bir formattan Imagemagick dönüşümü ekleyebiliriz:

Bash + coreutils + Imagemagick, 71

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

Burada, giriş resmi dosya adı bir komut satırı parametresi olarak geçirilir.


2
awk'ın varsayılan OFS alanı, "n" için işlem yapabilirsiniz,
n0741337

1
Ya da kısa awkkısmı: awk '$0=$2" "$1'.
manatwork

3

JavaScript (ES6), 359 355 bayt

@Neil sayesinde 4 bayt kaydedildi

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]))}}

gösteri

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)">

COR'ları desteklemek için imgur'a yüklediğim diğer test örnekleri:

Bu ikisi üzerindeki belirli renk verileri, bir nedenden dolayı yüklenirken biraz değişmiş gibi görünüyor, ancak yine de bu iki test durumu için aynı miktarda tekrar yazdırıyor.


Bence |daha düşük önceliğe sahiptir <<Eğer yerine kullanmak eğer öyleyse +bu kadar çok ihtiyacınız olmayacak ardından ()s.
Neil

@ user2428118 Bir dahaki sefere bir yorumda endişeleriniz varsa ve kendiniz düzenlemek yerine kendi cevabımı düzenlememi istediğimi takdir ediyorum. Aslında kodumu pasajdan kaldırarak <!-- language: lang-js -->ve JavaScript'i etkin bir şekilde devre dışı bırakarak kırdınız.
Patrick Roberts

@Patrick Üzgünüm, bir dahaki sefere daha dikkatli olacağım. Ayrıca, sadece bazı bayt kaydetmek için bir yol buldum: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]))}}
user2428118

2

Pyth , 29 bayt

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

Çevrimiçi deneyin!

(Çevrimiçi yorumlayıcı görüntüyü okuyamaz, bu yüzden o parçayı çıkardım ve renk üçlülerinin bir listesi olan bu görüntüyü okudum sonucunu girdim. Görüntüyü okumaktan sorumlu olan 'tek bir kolon.)

'Tek bir kolonun işlevsellik kanıtı


Bir görüntü üçüz listelerinin listesi olarak temsil edildiğinden, daha sönce ihtiyacınız vardır 'Q.
Jakube

İşte doğru (ve daha kısa) bir çözümV_SrS%L+\#*3"%02X"s'z8jd_N
Jakube

2

Mathematica 103 92 bayt

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

Misal

pic


açıklama

DominantColorsnormalde bir resimdeki ana kümeleri temsil eden bir renk listesi ve sayım döndürür. İstenen renk sayısı görüntüdeki renk sayısını aştığında, tam piksel renkleri döndürülür. (Giriş görüntüsünde 10.000'den az renk olacağını varsayıyorum.)

resim


{"#"<>IntegerString[255Round[List@@#],16,2],#2} temel 10 renk değerini onaltılık değerlerle dönüştürür.


Not: mandrill görüntüsünde sadece 5 renk vardır. ( ColorQuantize[<image>,5]Standart mandrill resmindeki renk sayısını azaltırdım.)


Just out-golfed you;)
LegionMammal978

Biraz. Ancak yaklaşımınız sınırsız sayıda renk gerektirir.
DavidC

1

PowerShell v2 +, 187 bayt

$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

En baskın rengi elde etme konusundaki cevabımdaki kodun neredeyse tamamını yeniden kullanıyor . Bu yüzden, tam açıklama için lütfen referans verin.

Burada değişiklikler dizine içindedir $baçık çıkış biçimi gereksinimlerini karşılamak için üçüncü satırda ve son satırda biz sorttarafından valueyılında -des, sonra boru siparişi cending Format-Tableile -HideTableHeaders ve -Aparametre olarak utoSize. FTPPCG'de burada kullanmak çok nadirdir , çünkü çıktı yürütme sonunda örtüktür, ancak burada sadece doğru parça çıktısını almamız çok yararlıdır.

Örnekler

Birincisi, Dominant Color meydan okumasının "kırmızı" test görüntüsü, ikincisi ise bu meydan okumanın "tanıklığı" dır.

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

Tcl / Tk , 134 bayt

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}

diçindir data.

Tcl / Tk , 232 bayt

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

resim açıklamasını buraya girin


wish sort_pix.tcl 5s1Ob.png

resim açıklamasını buraya girin


wish sort_pix.tcl z07VA.gif

resim açıklamasını buraya girin


1

Brain-Flak , 1110 bayt

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

Çevrimiçi deneyin!

Bu bir maceraydı. Anlaşılan, Brain-Flak görüntü işlemede çok iyi değil. Kim biliyordu?

Bunun teknik olarak istenen katı çıktı biçimini karşılamadığını belirterek başlayacağım. Eğer zorla yaptırmak istiyorsanız bana bildirin, çeviri kodu eklemeye çalışacağım. Şimdilik ondalık sayılar çıkarıyor: her 4 sayı KIRMIZI YEŞİL MAVİ SAYI sırasıyla bir rengi temsil ediyor.

Sıradaki giriş. İzin verilen giriş biçimleri daha esnekti, bu yüzden Brain-Flak'ın ayrıştırılması (bulabildiğim) için en kolay biçimi kullandım: Netpbm P6. Ne yazık ki, Brain-Flak ondalık sayıları P3 biçiminden ayrıştıramadı çünkü tüm Netpbm görüntüleri karakterle başlar Pve Brain-Flak sayısal olmayan karakterler içeren dosyalardan ondalık girdileri işleyemez. Bunun yerine P6 kullanıldı, çünkü P6 renk bilgilerini ASCII giriş modunda sayı olarak kabul edilen bayt olarak saklar. Orada başlık bilgisi çünkü bir meydan okuma kalmıştır değil yararlı bir kodlanmış, ama sadece atılır böylece Neyse ben bu bilgilerden herhangi gerek yoktu. Bu program Netpbm standardına tam olarak uymaz, çünkü üstbilgideki yeni satırlara izin vermez, ancak yeni satırlargirişlerin geçerli Netpbm dosyaları olması için standart tarafından gereklidir .

Son uyarı, TIO sürümü aslında "resmi" işlem için doğru yapılandırılmamış çünkü (bildiklerime göre) TIO'da girdi olarak dosya sağlayamıyorum ya da doğrudan girişte yazdırılamaz ASCII'ye karşılık gelen bayt sağlayamıyorum. Resmi işlem için -abayrağın ham bayt olarak -fgirdi alması ve bir dosyadan girdi alması gerekir. TIO bağlantısındaki örnek girdi, bunun yerine Netpbm wiki sayfasındaki örnekten manuel olarak çevrilmiştir .

Ayrıca, çalışmak için yararlı kod snippet'leri sağladığı için Brain-Flak wiki'ye teşekkür etmek istiyorum. Özellikle, Kabarcık-sırala uygulaması burada gerçekten başka türlü başlayacağı konusunda bir fikri yoktu çünkü ben, her renk için bir sayım kazanılmış bir kez nihai aşamaya etkili oldu. Ağır bir modifikasyon aldı, ancak sıfırdan başlamak zorunda olmadığım için memnunum.

İşte kodun ungolfed ve yorumlanmış sürümü. Brain-Flak, bu yazıya kullanışlı bir şekilde biçimlendirilmiş bir açıklama eklemek için biraz fazla ayrıntılı, ancak TIO'daki ungolfed sürüm, burada yönetebileceğimden daha iyi bir biçimlendirmeye sahip olacağım her şeyi içeriyor, bu yüzden ilgileniyorsanız lütfen bak.

Henüz golf oynayabilir, önceki Brain-Flak cevabım birçok revizyondan geçti, ancak umarım orada öğrenilen dersler daha iyi bir başlangıç ​​noktası verdi.


0

Python 2, 186 bayt

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

Çevrimiçi deneyin!

Yasal Uyarı: Sunulan çıktılar okunabilirlik için tek astarlıdır. Kod çıktıları, sınama tarafından istendiği gibi boşluk ve satır ayırma ile sonuçlanır.

10red 20blue 30black 40white için çıkış:

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

Mavi gradyan için çıkış:

[('#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)]

Test görüntüsü çıktısı

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

Açıklama:

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

Java (1.4+) , 483 428 bayt

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);}}

Çevrimiçi deneyin! (Çevrimiçi çalışmıyor)


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()Haritanın böyle çıkarır:

{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}

Eski Java'da çalışmadığı sürece lütfen 1.8 özel golf önerisi göndermeyin, bana istemiyorum.

Örnek: Lambdas, Java'nın çalıştığından daha fazla sürümünde çalışmaz.


" Lütfen eski Java'da çalışmadığı sürece 1.8 özel golf önerisi göndermeyin, istemiyorum. " Merak etmiyorum : Java 10 zaten Java 10 zaten mevcutken neden Java 4?
Kevin Cruijssen

Java 4'te çalışması gereken bazı 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);}}
golfler

@KevinCruijssen Çünkü 1.8, muhtemelen önceki sürümlerle çalışmayacak kod açısından en büyük sürümdü . Diğer sürümlerin çoğu düzeltmeler ve sınıfların JRE'ye eklenmesiydi. 1.8, önceki JRE'lerle en az uyumlu olanıydı.
Sihirli Ahtapot Urn

@KevinCruijssen x.toHexInteger, statik bir ithalattan daha akıllıydı.
Sihirli Ahtapot Urn

Java 3 de değil, çünkü Java 3 ... gerçekten ... çok az kısayol var ...
Sihirli Ahtapot Urn

0

SmileBASIC, 165 bayt

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

Görüntü 32 bit ARGB renk değerleri dizisi olarak verilir (sayı 6 basamaklı onaltılık bir dizeye dönüştürüldüğünde alfa değeri kesilir)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.