Conteggio dei colori, ordinato per occorrenze


14

Questo è semplice da descrivere e non potevo quasi credere che questo non fosse stato giocato prima:

Per una determinata immagine (qualunque sia il formato supportato dalla tua lingua), trova i colori unici e crea un elenco di colori.

  • Stampa il codice colore in RGB esadecimale, ovvero un segno cancelletto #seguito da 2 cifre per R, 2 cifre per G e 2 cifre per B. ( #xxxxxxdove x può essere 0-9, AF e / o af).
  • Il codice esadecimale deve essere seguito da uno spazio e dal conteggio dei pixel decimali, quindi da una nuova riga ( \no \r\n).
  • L'elenco deve essere ordinato in base al conteggio decrescente (il colore più frequente in alto).
  • Se c'è un pareggio (due colori con lo stesso importo), l'ordine non è importante.
  • L'immagine non conterrà trasparenza, quindi qualsiasi valore alfa non è importante. Il valore alfa potrebbe non far parte dell'output.
  • Deve essere supportata una dimensione dell'immagine di 4000x3000 (che può importare per le definizioni dei tipi)

Immagine di esempio "10red 20blue 30black 40white": Immagine di esempio 1

Uscita prevista:

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

Immagine di esempio "gradiente blu": Immagine di esempio 2

Una delle uscite previste (poiché l'ordine degli stessi colori può variare):

#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

Immagine di esempio "testImage", gentilmente fornita da @Luis Mendo :

Immagine di esempio 3

Uscita prevista:

#FFFFFF 18042
#000000 1754
#FF3300 204

Simile a questa domanda , ma l'output è testo, non un'immagine.


count descendingè un po 'poco chiaro. Come lo ordiniamo?
Rɪᴋᴇʀ

@ EᴀsᴛᴇʀʟʏIʀᴋ: decrescente: il colore più frequente in alto
Thomas Weller

Va bene, direi che deve essere un po 'più chiaro. Forse dire qualcosa del genere the most frequent colors at the top?
Rɪᴋᴇʀ

@ EᴀsᴛᴇʀʟʏIʀᴋ: sono d'accordo, ho appena aggiornato la domanda per entrambi
Thomas Weller,

1
Un paio di casi di test andrebbero bene.
Martin Ender,

Risposte:


4

Mathematica, 91 byte

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

Utilizza un metodo completamente diverso dalla risposta di @ DavidC . A differenza di quello, questo può supportare immagini con qualsiasi dimensione e conteggio dei colori. Spiegazione:

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

Bello. Mi piace come "Byte" restituisce i dati dell'immagine.
DavidC,

4

Bash + coreutils, 54

  • 7 byte salvati grazie a @manatwork
grep -oE '#\w+'|sort|uniq -c|sort -nr|awk '$0=$2" "$1'

Ciò presuppone l'input STDIN del formato .txt di Imagemagick .

Ideone.


Se il formato di input sopra riportato è troppo lungo, possiamo aggiungere la conversione di Imagemagick da qualsiasi formato:

Bash + coreutils + Imagemagick, 71

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

Qui, il nome file dell'immagine di input viene passato come parametro della riga di comando.


2
OFS predefinito di awk è uno spazio, puoi scambiare `" "` per,
n0741337

1
O ancora più breve awkparte: awk '$0=$2" "$1'.
arte

3

JavaScript (ES6), 359 355 byte

Salvato 4 byte grazie a @Neil

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

dimostrazione

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

Altri casi di test che ho caricato su imgur per supportare CORS:

I dati di colore specifici su questi due sembrano essere leggermente modificati durante il caricamento per qualche motivo, ma stampa comunque la stessa quantità di occorrenze per quei due casi di test.


Penso che |abbia una precedenza inferiore rispetto a <<così se lo usi invece di +allora non avrai bisogno di così tanti ()s.
Neil,

@ user2428118 la prossima volta ti sarei grato se avessi lasciato dei dubbi in un commento e mi avessi chiesto di modificare la mia risposta anziché modificarla tu stesso. In realtà hai rotto la mia demo rimuovendo <!-- language: lang-js -->dallo snippet, disabilitando efficacemente JavaScript.
Patrick Roberts,

@Patrick Mi spiace, la prossima volta starò più attento. Inoltre, ho appena trovato un modo per salvare alcuni byte: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 byte

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

Provalo online!

(L'interprete online non è in grado di leggere l'immagine, quindi ho eliminato quella parte e ho inserito il risultato della lettura di quell'immagine, che è un elenco di triplette di colore. La parte responsabile della lettura dell'immagine è 'un singolo punto.)

Prova della funzionalità di 'un singolo colon


È necessario un sprima 'Q, poiché un'immagine è rappresentata come elenco di elenchi di terzine.
Jakube,

Ecco una soluzione corretta (e più breve)V_SrS%L+\#*3"%02X"s'z8jd_N
Jakube,

2

Mathematica 103 92 byte

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

Esempio

pic


Spiegazione

DominantColorsnormalmente restituisce un elenco di colori e conteggi che rappresentano i cluster principali in un'immagine. Quando il numero di colori richiesti supera il numero di colori nell'immagine, vengono restituiti i colori esatti dei pixel. (Suppongo che nell'immagine in ingresso saranno presenti meno di 10.000 colori).

immagine


{"#"<>IntegerString[255Round[List@@#],16,2],#2} converte i valori di colore di base 10 con valori esadecimali.


Nota: ci sono solo 5 colori nell'immagine mandrillo. (Ho usato ColorQuantize[<image>,5]per ridurre il numero di colori nell'immagine mandrillo standard.)


Ho appena giocato a golf;)
LegionMammal978,

Di poco. Ma il tuo approccio richiede un numero illimitato di colori.
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

Riutilizza quasi tutto il codice della mia risposta su Ottieni il colore più dominante . Quindi, si prega di fare riferimento a questo per una spiegazione completa.

Le modifiche qui sono in indicizzazione $bnella terza linea per soddisfare i requisiti espliciti formato di output, e nell'ultima riga ci sortda valuein -desordine cending, poi tubo Format-Tablecon -HideTableHeaders e -AutoSize come parametri. È molto raro utilizzare effettivamente FTqui su PPCG, poiché l'output è implicito alla fine dell'esecuzione, ma qui è molto utile assicurarsi di ottenere solo l'output corretto delle parti.

Esempi

La prima è l'immagine di prova "rossa" della sfida Dominant Colour, la seconda è la "testimonianza" di questa sfida.

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 byte

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è per data.

Tcl / Tk , 232 byte

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

inserisci qui la descrizione dell'immagine


wish sort_pix.tcl 5s1Ob.png

inserisci qui la descrizione dell'immagine


wish sort_pix.tcl z07VA.gif

inserisci qui la descrizione dell'immagine


1

Brain-Flak , 1110 byte

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

Provalo online!

Beh, è ​​stata un'avventura. Si scopre che Brain-Flak non è molto bravo nell'elaborazione delle immagini. Chi lo sapeva?

Inizierò notando che questo tecnicamente non soddisfa il rigoroso formato di output richiesto. Se lo desideri, fammi sapere e proverò ad aggiungere il codice di traduzione. Per ora genera numeri decimali: ogni 4 numeri rappresenta un colore nell'ordine ROSSO VERDE BLU COUNT.

Successivamente, input. I formati di input consentiti erano più flessibili, quindi ho utilizzato il formato più semplice per Brain-Flak per analizzare (che sono riuscito a trovare): Netpbm P6. Sfortunatamente, Brain-Flak non ha potuto analizzare i numeri decimali dal formato P3 perché tutte le immagini Netpbm iniziano con il carattere Pe Brain-Flak non può gestire l'input decimale da file contenenti caratteri non numerici. Quindi è stato usato P6, perché P6 memorizza le informazioni sul colore come byte, che sono trattati come numeri in modalità di input ASCII. Rimaneva una sfida perché le informazioni dell'intestazione non venivano codificate utilmente, ma fortunatamente non avevo bisogno di nessuna di quelle informazioni, quindi sono state semplicemente scartate. Questo programma non aderisce completamente allo standard Netpbm perché non consente newline all'interno dell'intestazione, ma le newline non lo sonorichiesto dallo standard, quindi gli input sono file Netpbm validi.

Ultimo avvertimento, la versione su TIO non è attualmente configurata correttamente per l'operazione "ufficiale" perché (per quanto ne so) non posso fornire file come input su TIO, né posso fornire byte corrispondenti a ASCII non stampabile nell'input diretto. Per il funzionamento ufficiale -aè necessario il flag per prendere l'input come byte non elaborati e -fper prendere l'input da un file. L'input di esempio sul collegamento TIO è stato invece tradotto manualmente dall'esempio nella pagina wiki di Netpbm .

Inoltre, vorrei ringraziare il wiki Brain-Flak per aver fornito utili frammenti di codice su cui lavorare. In particolare, l'implementazione di Bubble-Sort qui è stata determinante per il passaggio finale una volta che ho ottenuto un conteggio per ogni colore, dal momento che non avevo davvero idea di dove iniziare altrimenti. Ci sono volute pesanti modifiche, ma sono contento di non dover ricominciare da capo.

Ecco la versione non modificata e commentata del codice. Brain-Flak è un po 'troppo dettagliato per includere una spiegazione utilmente formattata proprio in questo post, ma la versione non golfata su TIO contiene tutto ciò che vorrei includere in uno con una formattazione migliore di quella che potrei gestire qui, quindi se sei interessato per favore prendi un Guarda.

Potrebbe esserci ancora del golf da fare, il mio precedente risposta Brain-Flak ha subito molte revisioni, ma spero che le lezioni apprese abbiano dato a questo un migliore punto di partenza.


0

Python 2, 186 byte

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

Provalo online!

Dichiarazione di non responsabilità: gli output presentati sono a linea singola per la leggibilità. Gli output del codice risultano con separazione spazio e linea come richiesto dalla sfida.

Uscita per 10red 20blue 30black 40white:

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

Uscita per sfumatura blu:

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

Uscita per immagine di prova

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

Spiegazione:

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 byte

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

Provalo online! (Non funziona 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);
    }
}

Gli toString()output della mappa in questo modo:

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

Per favore, non pubblicare 1.8 suggerimenti specifici per il golf, a meno che non funzioni nella vecchia Java, non voglio.

Esempio: Lambdas non funziona in più versioni di Java di quante non funzionino.


" Per favore, non pubblicare 1.8 suggerimenti specifici per il golf, a meno che non funzioni nella vecchia Java, io non ne ho voglia. " Per curiosità: perché Java 4 mentre Java 10 è già disponibile?
Kevin Cruijssen,

Alcuni campi da golf che dovrebbero funzionare in Java 4 (credo): 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 byte )
Kevin Cruijssen,

@KevinCruijssen Perché la 1.8 era, probabilmente, la più grande versione in termini di codice che non funzionerà con le versioni precedenti. La maggior parte delle altre versioni erano correzioni e aggiunte di classi a JRE. 1.8 era il meno compatibile con i precedenti JRE.
Magic Octopus Urn

@KevinCruijssen x.toHexIntegerera più intelligente di un'importazione statica.
Magic Octopus Urn

Inoltre non Java 3, perché Java 3 ... davvero ... ha così poche scorciatoie ...
Magic Octopus Urn

0

SmileBASIC, 165 byte

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

L'immagine viene fornita come una matrice di valori di colore ARGB a 32 bit (il valore alfa viene tagliato quando il numero viene convertito in una stringa esadecimale a 6 cifre)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.