발생 횟수별로 정렬 된 색상 수


14

이것은 설명하기 간단하며 이것이 전에 골프를 타지 않았다는 것을 거의 믿을 수 없었습니다.

주어진 이미지 (언어가 지원하는 형식)에 대해 고유 한 색상을 찾아 색상 목록을 출력하십시오.

  • 16 진수 RGB로 색상 코드를 인쇄합니다. 즉, 해시 부호 #다음에 R의 경우 2 자리, G의 경우 2 자리, B의 경우 2 자리입니다 ( #xxxxxxx는 0-9, AF 및 / 또는 af 일 수 있음).
  • 16 진 코드 뒤에는 공백 과 10 진수 픽셀 수, 줄 바꾸기 ( \n또는 \r\n) 가 따라옵니다 .
  • 목록은 내림차순으로 정렬됩니다 (맨 위의 가장 빈번한 색상).
  • 넥타이 (동일한 양의 두 가지 색상)가있는 경우 순서는 중요하지 않습니다.
  • 이미지는 투명도를 포함하지 않으므로 알파 값은 중요하지 않습니다. 알파 값은 출력의 일부가 아닐 수 있습니다.
  • 4000x3000의 이미지 크기가 지원되어야합니다 (유형 정의에 중요 할 수 있음).

샘플 이미지 "10red 20blue 30black 40white": 샘플 이미지 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

@Luis Mendo가 친절하게 제공 한 샘플 이미지 "testImage" :

샘플 이미지 3

예상 출력 :

#FFFFFF 18042
#000000 1754
#FF3300 204

마찬가지로 이 질문 하지만, 출력은 텍스트가 아닌 이미지입니다.


count descending조금 불분명합니다. 우리는 그것을 어떻게 분류합니까?
Rɪᴋᴇʀ

@ EᴀsᴛᴇʀʟʏIʀᴋ : 내림차순 : 상단에서 가장 빈번한 색상
Thomas Weller

좋아, 나는 좀 더 명확해야한다고 말하고 싶다. 어쩌면 the most frequent colors at the top?
Rɪᴋᴇʀ

@ EᴀsᴛᴇʀʟʏIʀᴋ : 동의합니다. 방금 질문을 모두 업데이트했습니다
Thomas Weller

1
몇 가지 테스트 사례가 좋습니다.
Martin Ender 2016 년

답변:


4

수학, 91 바이트

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

@ DavidC 's answer 과는 완전히 다른 방법을 사용합니다 . 그것과는 달리, 이것은 모든 크기와 색상 수의 이미지를 지원할 수 있습니다. 설명:

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

좋은. "Byte"가 이미지 데이터를 반환하는 방법이 마음에 듭니다.
DavidC

4

배쉬 + 코어 유틸리티, 54

  • @manatwork 덕분에 7 바이트 절약
grep -oE '#\w+'|sort|uniq -c|sort -nr|awk '$0=$2" "$1'

이것은 Imagemagick의 .txt 형식의 STDIN 입력을 가정 합니다 .

이데온


위의 입력 형식이 너무 많은 경우 모든 형식에서 Imagemagick 변환을 추가 할 수 있습니다.

배쉬 + coreutils + Imagemagick, 71

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

여기에서 입력 이미지 파일 이름은 명령 줄 매개 변수로 전달됩니다.


2
awk의 기본 OFS는 공백이며, 다음과 같이` ""`을 사용할 수 있습니다.,
n0741337

1
또는 더 짧은 awk부분 : awk '$0=$2" "$1'.
manatwork

3

자바 스크립트 (ES6), 359 355 바이트

@Neil 덕분에 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)">

CORS를 지원하기 위해 imgur에 업로드 한 다른 테스트 사례 :

이 두 가지의 특정 색상 데이터는 어떤 이유로 업로드 할 때 약간 변경된 것으로 보이지만이 두 테스트 사례에 대해 여전히 동일한 양의 발생을 인쇄합니다.


나는 당신이 그것을 대신 사용한다면 너무 많은 |우선 순위가 필요하지 않을 것보다 우선 순위가 낮다고 생각 합니다. <<+()
Neil

다음 번에 @ user2428118 의견에 우려를 남기고 직접 편집하는 대신 내 자신의 답변을 편집하도록 요청 해 주셔서 감사합니다. 실제로 <!-- language: lang-js -->코드 조각 을 제거 하고 JavaScript를 효과적으로 비활성화하여 데모를 중단했습니다 .
Patrick Roberts

@Patrick 죄송합니다. 다음에 더 조심하겠습니다. 또한 방금 바이트를 저장하는 방법을 찾았습니다.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 바이트

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

온라인으로 사용해보십시오!

(온라인 통역사가 이미지를 읽을 수 없으므로 해당 부분을 제거하고 해당 이미지를 읽은 결과를 입력했습니다.이 이미지는 컬러 삼중 항 목록입니다. 이미지를 읽는 부분은 다음과 같습니다. ' 은 단일 콜론입니다.)

'단일 콜론 의 기능 증명


이미지는 삼중 항 목록의 목록으로 표시되므로 sbefore 가 필요합니다 'Q.
Jakube

올바른 (더 짧은) 해결책이 있습니다V_SrS%L+\#*3"%02X"s'z8jd_N
Jakube

2

Mathematica 103 92 바이트

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

그림


설명

DominantColors일반적으로 그림의 주요 클러스터를 나타내는 색상 및 개수 목록을 반환합니다. 요청 된 색상 수가 이미지의 색상 수를 초과하면 정확한 픽셀 색상이 반환됩니다. (입력 이미지에 10,000 개 미만의 색상이 있다고 가정합니다.)

그림


{"#"<>IntegerString[255Round[List@@#],16,2],#2} 기본 10 색상 값을 16 진수 값으로 변환합니다.


참고 : 맨드릴 이미지에는 5 가지 색상 만 있습니다. ( ColorQuantize[<image>,5]표준 맨드릴 이미지에서 색상 수를 줄이는 데 사용 했습니다.)


방금 당신을 밖으로 골프;)
LegionMammal978

조금만 요 그러나 접근 방식에는 무제한 색상이 필요합니다.
DavidC 2016 년

1

PowerShell v2 +, 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

Get the most dodominant color 에 대한 내 답변의 거의 모든 코드를 재사용 합니다 . 자세한 설명은 참조하십시오.

여기에 변화가 색인에 $b명시 적 출력 형식 요구 사항을 충족 할 수있는 세 번째 줄에서, 그리고 마지막 줄 우리에 sort의하여 value에서 -des에, 다음 파이프 순서를 cending Format-Table-H ideTableHeaders 및 -A매개 변수로 utoSize. FT실행이 끝날 때 출력이 암시 적이므로 PPCG에서 실제로 사용하는 것은 매우 드물지만 여기서는 정확한 부품 출력 만 얻는 것이 매우 유용합니다.

첫 번째는 Dominant Color 챌린지의 "빨간색"테스트 이미지이고, 두 번째는이 챌린지의 "testimage"입니다.

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 바이트

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.

Tcl / Tk , 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

Brain-Flak , 1110 바이트

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

온라인으로 사용해보십시오!

잘 그것은 모험이었다. Brain-Flak은 이미지 처리에별로 좋지 않습니다. 누가 알았 겠어?

기술적으로 요청 된 엄격한 출력 형식을 충족하지 않는다는 점을 주목하여 시작하겠습니다. 당신이 그것을 강제하고 싶다면 알려 주시면 번역 코드를 추가하려고합니다. 지금은 10 진수를 출력합니다. 각 4 개의 숫자는 RED GREEN BLUE COUNT의 순서로 색상을 나타냅니다.

다음으로 입력하십시오. 허용 된 입력 형식이보다 유연하여 Brain-Flak에서 가장 쉽게 구문 분석 할 수있는 형식 ( Netpbm P6)을 사용했습니다. 불행히도, 모든 Netpbm 이미지는 문자로 시작 P하고 Brain-Flak은 숫자가 아닌 문자를 포함하는 파일의 10 진수 입력을 처리 할 수 없기 때문에 Brain-Flak은 P3 형식의 10 진수를 구문 분석 할 수 없습니다. 따라서 P6은 색상 정보를 바이트로 저장하므로 ASCII 입력 모드에서 숫자로 취급되므로 P6이 대신 사용되었습니다. 헤더 정보가 표준에 필요 하지 유용하게 인코딩 있었지만 다행히도 해당 정보가 필요하지 않으므로 폐기되었습니다. 이 프로그램은 헤더 내에 개행을 허용하지 않기 때문에 Netpbm 표준을 완전히 준수하지 않지만 개행은 그렇지 않습니다. 않았기 때문에 입력이 유효한 Netpbm 파일 이기 때문에 문제가 남아있었습니다 .

마지막주의 사항은 TIO의 버전이 실제로 "공식적인"작업으로 올바르게 구성되지 않은 것입니다. 내가 아는 한 TIO에서 파일을 입력으로 제공 할 수 없으며 직접 입력에서 인쇄 할 수없는 ASCII에 해당하는 바이트를 제공 할 수 없기 때문입니다. 공식 작업의 경우 -a플래그를 입력으로 원시 바이트 -f로 가져 와서 파일에서 입력해야합니다. 대신 TIO 링크의 샘플 입력은 Netpbm 위키 페이지 의 예제에서 수동으로 변환되었습니다 .

또한 유용한 코드 조각을 제공해 주신 Brain-Flak 위키에 감사드립니다. 특히, 버블 정렬 구현 여기가 정말 그렇지 않으면 시작하는 어떤 생각을 가지고 있지 않았기 때문에 나는 모든 색상 수를 먹은 후 마지막 단계에 쓸모 있었다. 많은 수정이 필요했지만 처음부터 시작할 필요가 없어서 기쁩니다.

여기에 코드의 ungolfed 및 주석 버전입니다. Brain-Flak은이 게시물에 유용한 형식의 설명을 포함하기에는 너무 장황하지만 TIO의 ungolfed 버전에는 내가 관리 할 수있는 것보다 더 나은 형식으로 하나에 포함시킬 모든 것이 포함되어 있으므로 관심이 있으시면 보기.

아직 골프를 타지 않았을 수도 있지만, 이전 Brain-Flak의 답변은 많은 수정을 거쳤지만 거기에서 배운 교훈이 더 나은 출발점이 되었기를 바랍니다.


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 20blue 30black 40white 출력 :

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

온라인으로 사용해보십시오! (온라인으로 작동하지 않습니다)


언 골프 드 :

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}

이전 Java에서 작동하지 않는 한 1.8 특정 골프 제안을 게시하지 마십시오.

예 : Lambdas는 작업보다 많은 버전의 Java에서 작동하지 않습니다.


" 구형 Java에서 작동하지 않는 한 1.8 특정 골프 제안을 게시하지 마십시오. "
케빈 크루이 센

Java 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 bytes )
Kevin Cruijssen

@KevinCruijssen 1.8은 이전 버전에서 실행되지 않는 코드 측면에서 가장 큰 릴리스 였을 입니다. 대부분의 다른 릴리스는 JRE에 대한 수정 및 클래스 추가였습니다. 1.8은 이전 JRE와의 호환성이 가장 낮았습니다.
Magic Octopus Urn

@KevinCruijssen x.toHexInteger은 정적 가져 오기보다 더 똑똑했습니다.
Magic Octopus Urn

Java 3도 아닙니다. Java 3는 ... 정말 ... 지름길이 거의 없습니다.
Magic Octopus Urn

0

SmileBASIC, 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 비트 ARGB 색상 값의 배열로 제공됩니다 (숫자가 6 자리 16 진 문자열로 변환 될 때 알파 값이 잘림)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.