Farbanzahl, sortiert nach Vorkommen

14

Dieser ist einfach zu beschreiben und ich konnte kaum glauben, dass dies vorher nicht golfen wurde:

Suchen Sie für ein bestimmtes Bild (welches Format auch immer von Ihrer Sprache unterstützt wird) die eindeutigen Farben und geben Sie eine Liste der Farben aus.

  • Drucken Sie den Farbcode in hexadezimalem RGB, dh einem Hash-Zeichen, #gefolgt von 2 Ziffern für R, 2 Ziffern für G und 2 Ziffern für B. ( #xxxxxxwobei x 0-9, AF und / oder af sein kann).
  • Auf den Hex-Code folgt ein Leerzeichen und die Anzahl der Dezimalpixel , gefolgt von einer neuen Zeile ( \noder \r\n).
  • Die Liste ist nach Anzahl absteigend zu sortieren (häufigste Farbe oben).
  • Wenn es ein Unentschieden gibt (zwei Farben mit der gleichen Menge), ist die Reihenfolge nicht wichtig.
  • Das Bild enthält keine Transparenz, daher ist ein Alpha-Wert nicht wichtig. Der Alpha-Wert ist möglicherweise nicht Teil der Ausgabe.
  • Es muss eine Bildgröße von 4000 x 3000 unterstützt werden (dies kann für Typdefinitionen von Bedeutung sein).

Beispielbild "10red 20blue 30black 40white": Beispielbild 1

Erwartete Ausgabe:

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

Beispielbild "blauer Farbverlauf": Beispielbild 2

Eine der erwarteten Ausgaben (da die Reihenfolge der gleichen Farben variieren kann):

#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

Beispielbild "testImage", freundlicherweise zur Verfügung gestellt von @Luis Mendo :

Beispielbild 3

Erwartete Ausgabe:

#FFFFFF 18042
#000000 1754
#FF3300 204

Ähnlich wie bei dieser Frage , aber die Ausgabe ist Text, kein Bild.

Thomas Weller
quelle
count descendingist ein bisschen unklar. Wie sortieren wir es?
4.
@ EᴀsᴀIᴛᴇʀʟʏ: absteigend: häufigste Farbe oben
Thomas Weller
Okay, ich würde sagen, das muss ein bisschen klarer sein. Vielleicht etwas sagen wie the most frequent colors at the top?
4.
@ EᴀsᴀIᴛᴇʀʟʏ: Ich stimme zu, habe gerade die Frage für beide aktualisiert
Thomas Weller
1
Ein paar Testfälle wären gut.
Martin Ender

Antworten:

4

Mathematica, 91 Bytes

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

Verwendet eine völlig andere Methode als die Antwort von @ DavidC . Im Gegensatz zu diesem unterstützt dies Bilder mit beliebiger Größe und Farbanzahl. Erläuterung:

#~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.
LegionMammal978
quelle
Nett. Mir gefällt, wie "Byte" die Bilddaten zurückgibt.
DavidC
4

Bash + Coreutils, 54

  • 7 Bytes gespart dank @manatwork
grep -oE '#\w+'|sort|uniq -c|sort -nr|awk '$0=$2" "$1'

Dies setzt die STDIN-Eingabe von voraus TXT-Formats Imagemagick voraus .

Ideone.


Wenn das obige Eingabeformat zu umfangreich ist, können wir die Imagemagick-Konvertierung aus jedem Format hinzufügen:

Bash + Coreutils + Imagemagick, 71

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

Hier wird der Dateiname des Eingabebilds als Befehlszeilenparameter übergeben.

Digitales Trauma
quelle
2
Das Standard-OFS von awk ist ein Leerzeichen. Sie können "" "gegen,
n0741337
1
Oder noch kürzer awkTeil: awk '$0=$2" "$1'.
Manatwork
3

JavaScript (ES6), 359-355 Byte

4 Bytes dank @Neil gespeichert

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

Demo

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

Andere Testfälle, die ich zu imgur hochgeladen habe, um CORS zu unterstützen:

Die spezifischen Farbdaten in diesen beiden Fällen scheinen sich beim Hochladen aus irgendeinem Grund geringfügig geändert zu haben, sie werden jedoch für diese beiden Testfälle immer noch in der gleichen Häufigkeit gedruckt.

Patrick Roberts
quelle
Ich denke, |hat eine niedrigere Priorität als <<, wenn Sie es stattdessen verwenden, +dann brauchen Sie nicht so viele ()s.
Neil
@ user2428118 Das nächste Mal würde ich mich freuen, wenn Sie Bedenken in einem Kommentar hinterlassen und mich gebeten haben, meine eigene Antwort zu bearbeiten, anstatt sie selbst zu bearbeiten. Sie haben meine Demo tatsächlich gebrochen <!-- language: lang-js -->, indem Sie das JavaScript aus dem Snippet entfernt und so effektiv deaktiviert haben.
Patrick Roberts
@Patrick Entschuldigung, ich werde das nächste Mal vorsichtiger sein. Außerdem habe ich gerade einen Weg gefunden, um ein paar Bytes zu sparen: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 Bytes

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

Probieren Sie es online!

(Der Online-Interpreter kann das Bild nicht lesen, daher habe ich diesen Teil entfernt und das Ergebnis des Lesens des Bilds eingegeben. Dabei handelt es sich um eine Liste von Farbtripeln. Der Teil, der für das Lesen des Bilds verantwortlich ist ', ist ein einzelner Doppelpunkt.)

Funktionsnachweis 'eines einzelnen Doppelpunktes

Undichte Nonne
quelle
Sie benötigen ein sVorher 'Q, da ein Bild als Liste von Drillingslisten dargestellt wird.
Jakube
Hier ist eine richtige (und kürzere) LösungV_SrS%L+\#*3"%02X"s'z8jd_N
Jakube
2

Mathematica 103 92 Bytes

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

Beispiel

Bild


Erläuterung

DominantColorsNormalerweise wird eine Liste mit Farben und Zählwerten zurückgegeben, die die Hauptcluster in einem Bild darstellen. Wenn die Anzahl der angeforderten Farben die Anzahl der Farben im Bild überschreitet, werden die genauen Pixelfarben zurückgegeben. (Ich gehe davon aus, dass das Eingabebild weniger als 10 000 Farben enthält.)

Bild


{"#"<>IntegerString[255Round[List@@#],16,2],#2} konvertiert die Basis 10 Farbwerte mit hexadezimalen Werten.


Hinweis: Das Mandrill-Bild enthält nur 5 Farben. (Früher habe ich ColorQuantize[<image>,5]die Anzahl der Farben im Standard-Mandrill-Bild reduziert.)

DavidC
quelle
Hab dich einfach aus der Bahn geworfen;)
LegionMammal978
Um ein bisschen. Ihr Ansatz ist jedoch auf eine unbegrenzte Anzahl von Farben beschränkt.
DavidC
1

PowerShell v2 +, 187 Byte

$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

Verwendet fast den gesamten Code aus meiner Antwort auf Get the dominant color . Beziehen Sie sich bitte darauf, um eine vollständige Erklärung zu erhalten.

Die Änderungen sind hier in der Indizierung $bin der dritten Zeile der expliziten Ausgabeformat Anforderungen zu entsprechen, und in der letzten Zeile wir sortdurch valuein -descending Ordnung, dann Rohr Format-Tablemit-H ideTableHeaders und -AutoSize als Parametern weitergeleitet. Es ist sehr selten, um tatsächlich zu verwendenFT hier PPCG verwendet wird, da die Ausgabe am Ende der Ausführung implizit erfolgt. Hier ist es jedoch sehr nützlich, sicherzustellen, dass nur die richtigen Teile ausgegeben werden.

Beispiele

Das erste ist das "rote" Testbild von der Dominant Color-Herausforderung, das zweite ist das "Testbild" von dieser Herausforderung.

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  
AdmBorkBork
quelle
1

Tcl / Tk , 134 Bytes

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}

dist für data.

Tcl / Tk , 232 Bytes

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

Bildbeschreibung hier eingeben


wish sort_pix.tcl 5s1Ob.png

Bildbeschreibung hier eingeben


wish sort_pix.tcl z07VA.gif

Bildbeschreibung hier eingeben

Sergiol
quelle
1

Brain-Flak , 1110 Bytes

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

Probieren Sie es online!

Nun, das war ein Abenteuer. Es stellt sich heraus, dass Brain-Flak nicht sehr gut in der Bildverarbeitung ist. Wer wusste?

Ich beginne mit der Feststellung, dass dies technisch nicht dem geforderten strengen Ausgabeformat entspricht. Wenn Sie dies erzwingen möchten, lassen Sie es mich wissen und ich werde versuchen, Übersetzungscode hinzuzufügen. Für den Moment gibt es Dezimalzahlen aus: Jede 4 Zahlen repräsentiert eine Farbe in der Reihenfolge ROT GRÜN BLAU ZÄHLEN.

Als nächstes Eingabe. Die zulässigen Eingabeformate waren flexibler, daher verwendete ich das Format, das für Brain-Flak am einfachsten zu analysieren war (das ich finden konnte): Netpbm P6. Leider konnte Brain-Flak keine Dezimalzahlen aus dem P3-Format analysieren, da alle Netpbm-Bilder mit dem Zeichen beginnen Pund Brain-Flak keine Dezimalzahlen aus Dateien verarbeiten kann, die nicht numerische Zeichen enthalten. Daher wurde stattdessen P6 verwendet, da P6 Farbinformationen als Bytes speichert, die im ASCII-Eingabemodus als Zahlen behandelt werden. Es blieb eine Herausforderung, da die Headerinformationen nicht sinnvoll codiert wurden, aber zum Glück brauchte ich keine dieser Informationen, sodass sie einfach verworfen werden. Dieses Programm entspricht nicht vollständig dem Netpbm-Standard, da es keine Zeilenumbrüche im Header zulässt, Zeilenumbrüche jedoch nichtvom Standard erforderlich, damit die Eingaben gültige Netpbm-Dateien sind.

Letzte Einschränkung, die Version auf TIO ist tatsächlich nicht richtig für den "offiziellen" Betrieb konfiguriert, da ich (meines Wissens) keine Dateien als Eingabe auf TIO liefern kann und auch keine Bytes, die nicht druckbarem ASCII entsprechen, in der direkten Eingabe liefern kann. Für den offiziellen Betrieb wird das -aFlag benötigt, um Eingaben als Rohbytes und -fEingaben aus einer Datei zu übernehmen. Die Beispieleingabe über den TIO-Link wurde stattdessen manuell aus dem Beispiel auf der Netpbm-Wiki-Seite übersetzt .

Darüber hinaus möchte ich dem Brain-Flak-Wiki dafür danken, dass es hilfreiche Codefragmente für die Arbeit zur Verfügung gestellt hat. Insbesondere die Bubble-Sort-Implementierung hier war maßgeblich für den letzten Schritt, nachdem ich für jede Farbe eine Zählung erhalten hatte, da ich eigentlich keine Ahnung hatte, wo ich anders anfangen sollte. Es waren umfangreiche Modifikationen erforderlich, aber ich bin froh, dass ich nicht bei Null anfangen musste.

Hier ist die ungolfed und kommentierte Version des Codes. Brain-Flak ist ein bisschen zu ausführlich, um eine sinnvoll formatierte Erklärung in diesen Beitrag aufzunehmen, aber die ungolfed-Version auf TIO enthält alles, was ich in einer enthalten würde, mit einer besseren Formatierung, als ich hier verwalten könnte. Wenn Sie also interessiert sind, nehmen Sie bitte eine aussehen.

Möglicherweise muss ich noch Golf spielen. Meine vorherige Brain-Flak-Antwort wurde mehrfach überarbeitet, aber hoffentlich gaben die dort gewonnenen Erkenntnisse diesem Punkt einen besseren Ausgangspunkt.

Kamil Drakari
quelle
0

Python 2, 186 Bytes

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

Probieren Sie es online!

Haftungsausschluss: Die dargestellten Ausgaben sind aus Gründen der Lesbarkeit einzeilig. Die Code-Ausgabe erfolgt mit Abstand und Zeilentrennung, wie von der Abfrage gefordert.

Ausgang für 10red 20blue 30black 40white:

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

Ausgang für blauen Farbverlauf:

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

Ausgabe für Testbild

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

Erläuterung:

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
Totes Opossum
quelle
0

Java (1.4+) , 483 428 Bytes

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

Probieren Sie es online! (Funktioniert nicht online)


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

Das toString()von map gibt so aus:

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

Bitte posten Sie keine 1.8-spezifischen Golf-Vorschläge, es sei denn, es funktioniert in älterem Java, ich will nicht.

Beispiel: Lambdas funktionieren nicht in mehr Java-Versionen als in.

Magische Kraken-Urne
quelle
" Bitte posten Sie keine 1.8-spezifischen Golf-Vorschläge, es sei denn, es funktioniert in älterem Java, ich möchte nicht. " Aus Neugier: Warum Java 4, während Java 10 bereits verfügbar ist?
Kevin Cruijssen
Einige Golfplätze, die in Java 4 funktionieren sollten (glaube ich): 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 Bytes )
Kevin Cruijssen
@KevinCruijssen Da 1.8 die wohl größte Version in Bezug auf Code war, die mit früheren Versionen nicht ausgeführt werden kann . Die meisten anderen Releases waren Korrekturen und Hinzufügungen von Klassen zur JRE. 1,8 war mit früheren JREs am wenigsten kompatibel.
Magic Octopus Urn
@ KevinCruijssen x.toHexIntegerwar schlauer als ein statischer Import.
Magic Octopus Urn
Auch nicht Java 3, weil Java 3 ... wirklich ... so wenige Abkürzungen hat ...
Magic Octopus Urn
0

SmileBASIC, 165 Bytes

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

Das Bild wird als Array von 32-Bit-ARGB-Farbwerten angegeben (der Alpha-Wert wird abgeschnitten, wenn die Zahl in eine 6-stellige Hex-Zeichenfolge konvertiert wird).

12Me21
quelle