Đây là màu gì?


9

Bạn phải chơi một chương trình sẽ lấy tên tệp làm đầu vào và bạn phải xuất ra màu của tệp.

Tệp sẽ có bất kỳ một trong các tiện ích mở rộng này nhưng chương trình của bạn chỉ cần hỗ trợ một tiện ích mở rộng. Hãy nói cái nào trong câu trả lời của bạn.

  • .jpg
  • .png
  • .svg
  • .gif
  • .bmp

Và bây giờ đến bố cục cổ điển.

Đầu vào

Một tên tệp với một trong các phần mở rộng ở trên.

Bạn cũng có thể lấy một đối tượng hình ảnh hoặc hình ảnh đã được mã hóa thay thế.

Đầu ra

Màu duy nhất trong tệp đó là mã hex gồm 6 chữ số với hàng đầu tùy chọn,# ví dụ: #000000là màu đen.

Bạn cũng có thể xuất ra một danh sách / tuple / chuỗi chứa các giá trị thập phân hoặc hex của màu RGB, với một dấu phân cách rõ ràng, không phải là số, , |v.v.

Bạn không thể xuất ra sự minh bạch.

Nếu tệp không phải là tất cả một màu, bạn phải xuất giá trị sai lệch #000000và không chấm dứt mà không in bất cứ thứ gì STDERR. Điều này là để bạn không thể mở tệp và nhận giá trị RGB của pixel đầu tiên.

Quy tắc

  • Mã hex chỉ cần xuất ra nếu tệp có tất cả một màu.
  • Các tập tin sẽ là 500x500pixel
  • Các pixel sẽ có độ trong suốt 0%.
  • Đây là nên mã ngắn nhất sẽ thắng!

Ví dụ


7
Tất cả các tập tin không phải là một màu chỉ là một sự phức tạp không cần thiết với tôi. Và một giá trị falsey trong các ngôn ngữ được gõ mạnh, ví dụ C #, chỉ có thể là a bool. Trong trường hợp này, tôi sẽ trả lại một stringtrường hợp bình thường và boolcho trường hợp không bình thường, được bọc trong một object. Điều này có tốt không hoặc tôi có thể trả về một chuỗi rỗng hoặc tương tự không?
TheLethalCoder

5
Ngoài ra, tôi khuyên bạn nên tải hình ảnh của mình lên i.stack.imgur.com (chương trình của tôi không thể lấy hình ảnh ra khỏi bảng)
user41805

1
Chúng tôi có một tiêu chuẩn mặc định cho đầu vào hình ảnh, bạn có thể tìm thấy nó trên meta của chúng tôi ở đây . Nó không khác biệt đáng kể so với những gì bạn có, nhưng bạn có thể muốn liên kết với nó thay vì bạn cung cấp.
Pavel

6
@Ilikemydog Nó không thành vấn đề. Nói đầu ra là "Màu duy nhất trong tệp đó" dẫn đến người trả lời cho rằng hình ảnh sẽ chứa một màu. Sau đó, các quy tắc mâu thuẫn rằng. Mặt khác, sẽ rõ ràng hơn rất nhiều nếu phần đầu ra đọc thứ gì đó như "Màu duy nhất trong tệp đó hoặc giá trị giả khác với ... nếu hình ảnh chứa nhiều hơn một màu". Hoặc, như xnor rất thông minh đặt nó, thật khó hiểu khi cơ thể của thử thách nói lên một điều nhưng phần sau lại nói khác
Luis Mendo

2
Chúng ta có giả định rằng tất cả các tệp sẽ luôn là các tệp RGB 3 kênh (mỗi 8 bit) không?
Bạch tuộc

Câu trả lời:


6

MATL , 15 12 byte

Yi6Bed~?2MYm

Đã thử nghiệm với hình ảnh ".png" được đưa ra trong thử thách. Nó có thể hoạt động với các phần mở rộng khác quá. Đầu vào có thể là tên tệp hoặc URL của hình ảnh.

Đầu ra là các giá trị thập phân R, G, B được phân tách bằng dấu cách hoặc chuỗi trống (là sai) nếu có nhiều hơn một màu.

Ví dụ với các trường hợp thử nghiệm đầu tiên và cuối cùng:

nhập mô tả hình ảnh ở đây

Giải trình

Yi      % Implicitly input filename. Read image as an M×N×3 array
6B      % Push [true true false] (6 in binary)
e       % Reshape. This collapses firsts two dimensions. Gives an (M*N)×3 array
d       % Consecutive diferences down each column. Gives an an (M*N-1)×3 array
~?      % If all those differences are zero (this means there is a single color)
  2M    %   Push the (M*N)×3 array again
  Ym    %   Mean of each column
        % Implicit end
        % Implicitly display

Điều này có kiểm tra hình ảnh chim ưng không?
TheLethalCoder

1
@TheLethalCoder Đã giải quyết. Cảm ơn những người đứng đầu
Luis Mendo

You may also take an image object or already encoded image instead.OP được cập nhật có thể có thể lưu byte ...
TheLethalCoder

@TheLethalCoder Cảm ơn. Tôi không nghĩ nó có ích trong câu trả lời này, trừ khi tôi có thể nhập M×N×3trực tiếp vào mảng, đó có lẽ không phải là ý nghĩa của OP
Luis Mendo

1
12 byte?! Chà, thánh thần ơi!
Xù xì

4

Bash + utils core + Imagemagick, 60

a=(`convert $1 txt:|sort -uk3`)
((${#a[@]}-9))||echo ${a[2]}

Xuất ra màu nếu có một màu và không có gì nếu có nhiều hơn một màu.

  • convert $1 txt: đọc tệp đầu vào và đầu ra dưới dạng tệp văn bản, cụ thể ở định dạng này:
# Bảng liệt kê pixel ImageMagick: 500.500.255, srgba
0,0: (245,236,236,1) # F5ECEC srgba (245,236,236,1)
1,0: (245,236,236,1) # F5ECEC srgba (245,236,236,1)
2,0: (245,236,236,1) # F5ECEC srgba (245,236,236,1)
3,0: ​​(245,235,235,1) # F5EBEB srgba (245,235,235,1)
4,0: (245,235,235,1) # F5EBEB srgba (245,235,235,1)
  • sort -uk3sắp xếp duy nhất này theo cột thứ ba. Đầu ra này được gán cho một mảnga

  • ((${#a[@]}-9)) kiểm tra nếu mảng KHÔNG có độ dài 9

  • nếu mảng KHÔNG có độ dài 9 (nghĩa là nó có độ dài 9), thì phần tử đầu ra 2 (dựa trên 0) sẽ là màu duy nhất.


1
Ôi trời, thật ấn tượng.
MD XF

4

JavaScript (ES6) + HTML, 315 289 243 218 217 215 211 210 208 byte

Kiểm tra xem tất cả các pixel giống hệt nhau đã thêm rất nhiều byte. Tôi không thấy nó lớn hơn nhiều so với khi tôi chỉ kiểm tra màu của pixel đầu tiên - hài lòng với điều đó :)

Lấy URL (tuyệt đối, tương đối, dữ liệu hoặc bất cứ thứ gì có thể được sử dụng làm srccủa một img) tệp hình ảnh làm đầu vào. 0Xuất ra màu RGB dưới dạng một chuỗi được phân tách bằng dấu phẩy hoặc cho falsey. Đã thử nghiệm với các tệp PNG nhưng cũng hoạt động với JPG & GIF.

u=>(a=[...Array(c.width=c.height=500)]).map((_,x)=>a.map((_,y)=>(v=""+[(d=g.getImageData(x,y,1,1).data)[0],d[1],d[2]],h=x&y?v!=h?0:h:v)),i.src=u,(g=c.getContext`2d`).drawImage(i,0,0))&&h
<img id=i><canvas id=c

Thử nó

Yêu cầu thêm phần đóng >vào canvasphần tử để hoạt động trong Đoạn trích. Vì việc kéo hình ảnh từ các nguồn bên ngoài sẽ gây ra lỗi, thay vào đó, phần sau đây sẽ lấy URL dữ liệu Base-64 làm đầu vào. Bỏ ghi chú dòng cuối cùng để kiểm tra các màu khác nhau bằng cách sử dụng một hình ảnh bao gồm 4 màu kiểm tra.

f=
u=>(a=[...Array(c.width=c.height=500)]).map((_,x)=>a.map((_,y)=>(v=""+[(d=g.getImageData(x,y,1,1).data)[0],d[1],d[2]],h=x&y?v!=h?0:h:v)),i.src=u,(g=c.getContext`2d`).drawImage(i,0,0))&&h
console.log(f("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AQMAAADxGE3JAAAAA1BMVEUWwpMvG5UqAAAANUlEQVR42u3BMQEAAADCIPun9lkMYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5fQAAASJ0bysAAAAASUVORK5CYII"))
//console.log(f("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AgMAAAC2uDcZAAAADFBMVEWLFsIWwpOVkJCE8Az9F2TyAAABB0lEQVR42uzNIQEAMAwDsEk8ucmTS9xElAwkBlI3cipit9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91uX72/yO+I3W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdPhu1fdT2UdtHbR+1fdT2UdsHs+0AqVGfBnNZ7+UAAAAASUVORK5CYII"))
<img id=i><canvas id=c>


A filename with one of the above extensions.-> Bạn có chắc chắn có thể lấy hình ảnh dưới dạng chuỗi được mã hóa thay vì tải từ tệp không?
TheLethalCoder

1
@TheLethalCoder, Không! : D Và, bây giờ bạn nói điều đó, tôi có thể thấy làm thế nào tôi có thể tiết kiệm một vài byte :)
Shaggy

You may also take an image object or already encoded image instead.OP được cập nhật có thể có thể lưu byte ...
TheLethalCoder

@TheLethalCoder, tôi đã có thể "data:image/png;base64,"+loại bỏ mã của mình bằng cách lấy đầu vào làm URL thay thế.
Xù xì

3

Python 2, 80 byte

from PIL import Image
i=Image.open(input()).getcolors(1)
print i and i[0][1][:3]

PIL.Image có chức năng getcolors trả về Nonenếu số lượng màu lớn hơn tham số và trả về biểu đồ của các màu trong [(pixels, (r,g,b,a)), ...]cấu trúc.


You may also take an image object or already encoded image instead.OP được cập nhật có thể có thể lưu byte ...
TheLethalCoder

@TheLethalCoder Vì vậy, sau đó tôi nên giả sử một hình ảnh đã được mở và chỉ cần viết print i and i[0][1][:3]?
Gábor Fekete

Tôi cho rằng bạn cần các màu sắc gọi đến
TheLethalCoder

3

Toán học, 55 51 byte

-4 cảm ơn CalculatorFeline

+0 để tái cấu trúc thành hàm đầy đủ.

Sử dụng đối tượng hình ảnh Mathicala làm đầu vào - Import["filename.png"].

If[Length@#==1,#,0]&@Union[Join@@ImageData@#]&

Trả về 0 nếu không phải tất cả một màu. Xuất giá trị thập phân của màu nếu chỉ một.

Giải trình:

                                 ImageData@# & - Convert input into 2D array of RGB values
                           Join@@              - Join the array into 1D array f RGB values
                     Union[                 ]  - Union all the RGB values
   Length@#        &@                          - Find length of the union of arrays
If[        ==1,#,0]                            - Check if its 1, return it if true, return 0 if not

a==1== a<2Join@@tương đương với ~Flatten~1trong trường hợp này. (Tham gia nghỉ nếu danh sách chứa bất kỳ danh sách nào.)
CalculatorFeline

Theo mặc định, một chức năng hoặc chương trình đầy đủ là bắt buộc. Để sử dụng một đối tượng hình ảnh đã được giải mã, tôi tin rằng bạn vẫn cần phải làm một cái gì đó nhưIf[Length@#==1,#,0]&@Union[ImageData@#~Flatten~1]&
Julian Wolf

Tôi hiểu sai ý kiến ​​của OP You may also take an image object or already encoded image instead.. Sẽ nâng cấp.
Ian Miller

@CalculatorFeline Cảm ơn bạn đã gợi ý về Join@@.
Ian Miller

2

Java 8+, 331 165 119 byte

i->{Integer j=i.getRGB(0,0),k=500,l;for(;k-->0;)for(l=500;l-->0;)if(i.getRGB(k,l)!=j)return"";return j.toHexString(j);}

-Có rất nhiều byte nhờ @LethalCoder đã cập nhật cho tôi về thay đổi quy tắc cho phép chơi gôn nhiều
-46 byte nhờ @KevinCruijssen và sửa lỗi chính tả


You may also take an image object or already encoded image instead.OP được cập nhật có thể có thể lưu byte ...
TheLethalCoder

@TheLethalCoder Ôi thật hoàn hảo. Cảm ơn!
HyperNeutrino

Tôi biết đã được một thời gian, nhưng một số thứ để chơi golf (mà không thay đổi phiên bản Java 7) : Object f(java.awt.image.BufferedImage i){Integer j=i.getRGB(0,0),k=500,l;for(;k-->0;)for(l=500;l-->0;)if(i.getRGB(k,l)!=i)return"";return j.toHexString(j);}. Bằng cách thay đổi phiên bản Java thành 8+, bạn cũng có thể thay đổi Object f(java.awt.image.BufferedImage i)thành i->. Ngoài ra, tôi nghĩ bạn đã mắc lỗi đánh máy: không if(i.getRGB(k,l)!=i)nên !=jthay thế?
Kevin Cruijssen

@KevinCruijssen Cảm ơn. Và vâng, tôi nghĩ rằng tôi đã làm: P
HyperNeutrino

1
@HyperNeutrino Bạn quên thay đổi nó thành Java 8 (hoặc cao hơn). ;)
Kevin Cruijssen

1

Python 2 , 123 85 byte

from PIL import Image
c=Image.open(input()).getdata()
print len(set(c))<2and c[0][:3]

You may also take an image object or already encoded image instead.OP được cập nhật có thể có thể lưu byte ...
TheLethalCoder

Tôi mong đợi từ nhập PIL * để lưu một vài byte (hoặc cách khác, nhập PIL và sau đó c = PIL.Image) trừ khi tôi đang xem xét một cái gì đó
Foon

@Foon PILlà một ngoại lệ đối với hàng nhập khẩu, bạn không thể làm from PIL import*hayPIL.
Rod

Cảm ơn; không biết điều đó hoặc ít nhất là đã quên nó
Foon

Sự không nhất quán là khủng khiếp :(
CalculatorFeline

1

C #, 163 128 125 byte

b=>{var c=b.GetPixel(0,0);for(int w=500,h;w-->0;)for(h=500;h-->0;)if(b.GetPixel(w,h)!=c)return"";return c.R+" "+c.G+" "+c.B;}

Đã lưu 3 byte nhờ @Kevin Cruijssen.

Nếu chúng ta không phải kiểm tra bổ sung cho hình ảnh có cùng màu thì đây chỉ là 55 byte:

b=>{var c=b.GetPixel(0,0);return c.R+" "+c.G+" "+c.B;};

Tôi biết đã được một lúc, nhưng: b=>{var c=b.GetPixel(0,0);for(int w=500,h;w-->0;)for(h=500;h-->0;)if(b.GetPixel(w,h)!=c)return"";return c.R+" "+c.G+" "+c.B;}(-3 byte)
Kevin Cruijssen

0

Toán học, 112 byte

hình ảnh

i = Nhập @ "c: \ a.png";

If[Length@DominantColors@i==1,"#"<>StringPadLeft[IntegerString[Most@PixelValue[i,{1,1},"Byte"],16],2,"0"],False]

You may also take an image object or already encoded image instead.OP được cập nhật có thể có thể lưu byte ...
TheLethalCoder

đồng ý. Tôi đã thực hiện một số thay đổi
Cảm ơn

Là chữ thường hex có thể chấp nhận?
dùng202729

Most@PixelValue[i, {1, 1}, "Byte"]sẽ lưu một số byte.
dùng202729

103 byte: If[Length@Tally[a=i~ImageData~"Byte"]<2,"#"<>StringPadLeft[Most@a[[1,1]]~IntegerString~16,2,"0"],False]- sử dụng chức năng ImageData của bạn. Không biết rằng đã tồn tại.
dùng202729

0

Bash + ImageMagick, 100 byte

i=$(expr `identify -format "%k" $1` = 1)&&convert $1 -format "%c" histogram:info:-|grep -o "#......"

Đã thử nghiệm với .png, cũng nên hoạt động với các định dạng khác. Đầu ra cho một hình ảnh đa sắc chỉ đơn giản là một chuỗi rỗng.


Bạn có thể thả các trích dẫn từ xung quanh các chỉ định định dạng. Cũng ((`identify -format %k $1`-1))||ngắn hơn i=$(expr `identify -format "%k" $1` = 1)&&.
Chấn thương kỹ thuật số

0

C, 224 205 byte

m[3],i;
main(c,v)char**v;{
void*s=fopen(v[1],"r");
for(;i<54;i++)getc(s);
m[2]=getc(s);m[1]=getc(s);*m=getc(s);
for(i=0;i<500*500;i++)if((c=getc(s))!=m[i%3]&&~c)exit(puts("0"));
printf("%d,%d,%d",*m,m[1],m[2]);}

Lấy bitmap 500x500 làm đối số dòng lệnh. In RGB của tệp, ví dụ 255,255,255, hoặc 0nếu tệp không phải là hằng số. Có thể gặp sự cố nghiêm trọng nếu không có tệp được cung cấp.

Những điểm thú vị cần lưu ý:

  • Sử dụng void*ở nơi FILE*để tránh bao gồm<stdio.h>
  • Sử dụng một forvòng lặp đơn giản i%3để xác định xem tất cả các byte có giống nhau không
  • Có thể rất chơi gôn, tôi đã đánh gôn 50 byte trong khi viết câu trả lời này
  • BMP lưu trữ màu sắc dưới dạng BGR để nó đọc nhiều hơn / ít hơn

0

JavaScript + HTML, 143 + 23 = 166 byte

u=>(i.src=u,s=C.width=C.height=500,c=C.getContext`2d`,c.drawImage(i,0,0),d=c.getImageData(0,0,s,s).data,!d.some((n,i)=>n-d[i%4])&&d.slice(0,3))
<img id=i><canvas id=C>

Thử nó:

f=
u=>(i.src=u,s=C.width=C.height=500,c=C.getContext`2d`,c.drawImage(i,0,0),d=c.getImageData(0,0,s,s).data,!d.some((n,i)=>n-d[i%4])&&d.slice(0,3))

console.log(
    f('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AQMAAADxGE3JAAAAA1BMVEUWwpMvG5UqAAAANUlEQVR42u3BMQEAAADCIPun9lkMYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5fQAAASJ0bysAAAAASUVORK5CYII'),
    f('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AgMAAAC2uDcZAAAADFBMVEWLFsIWwpOVkJCE8Az9F2TyAAABB0lEQVR42uzNIQEAMAwDsEk8ucmTS9xElAwkBlI3cipit9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91uX72/yO+I3W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdbrfb7Xa73W632+12u91ut9vtdrvdPhu1fdT2UdtHbR+1fdT2UdsHs+0AqVGfBnNZ7+UAAAAASUVORK5CYII')
)
<img id=i><canvas id=C>

Ít chơi gôn hơn:

u => {
    i.src = u
    s = C.width = C.height = 500
    c = C.getContext('2d')
    c.drawImage(i, 0, 0)
    d = c.getImageData(0, 0, s, s).data
    return d.every((n,i) => n == d[i % 4]) && d.slice(0,3)
}

0

PowerShell, 79 byte

param($b)if(!($c=499..0*500|%{$b|% G*l $_ $y;$y+=!$_}|gu).Rank){$c.R;$c.G;$c.B}

Kịch bản kiểm tra ít chơi gôn hơn:

$f = {

    param($b)
    $c=499..0*500|%{$b.GetPixel($_,$y);$y+=!$_}|gu
    if(!$c.Rank){
        $c.R;$c.G;$c.B
    }

}

@(
    ,("22 194 147", "https://cdn.pbrd.co/images/8bawQk5kM.png")
    ,("139 22 194", "https://cdn.pbrd.co/images/8b9foR0H6.png")
    ,("149 144 144","https://cdn.pbrd.co/images/8baglmIE8.png")
    ,("132 240 12", "https://cdn.pbrd.co/images/8b9Uhhovn.png")
    ,("",           "https://cdn.pbrd.co/images/8bb4DeKx3.png")

) | % {
    $expected,$s = $_

    $binData = [System.Net.WebClient]::new().DownloadData($s)
    $memoryStream = [System.IO.MemoryStream]::new($binData)
    $bitmap = [System.Drawing.Bitmap]::FromStream($memoryStream)

    $sw = [System.Diagnostics.Stopwatch]::StartNew()
    $result = &$f $bitmap
    "$("$result"-eq$expected): $($sw.Elapsed): $result"
}
  • Lưu ý 1 : biểu thức 499..0*500có nghĩa là: lặp lại 500 lần một phạm vi từ 499 dowo 0
  • Lưu ý 2 : biểu thức $b|% G*l $_ $y là phím tắt cho $b.GetPixel($_,$y). Thủ thuật này rất hữu ích với gofing, nhưng nó làm chậm mã.

Đầu ra với $b|% G*l $_ $y:

True: 00:01:45.4904622: 22 194 147
True: 00:01:56.4208157: 139 22 194
True: 00:01:46.7629439: 149 144 144
True: 00:01:48.1999005: 132 240 12
True: 00:01:55.8579935:

Đầu ra với $b.GetPixel($_,$y):

True: 00:00:05.7637937: 22 194 147
True: 00:00:06.8743244: 139 22 194
True: 00:00:08.7456055: 149 144 144
True: 00:00:08.5942450: 132 240 12
True: 00:00:06.6495706:

Giải trình:

  • kịch bản tạo một mảng của mỗi màu pixel.
  • tập lệnh áp dụng gu(bí danh cho Get-Unique ) cho mảng màu.
  • nếu kết quả hulà một phần tử duy nhất (thuộc tính chỉ rankcó giá trị cho một mảng) thì xuất giá trị thập phân của R, G, B của phần tử này

0

Python 2 + OpenCV + NumPy: 66 ký tự

màu sắc

import numpy as N
def c(i):p=i[0,0];print(p[::-1],"")[N.any(i-p)]

kiểm tra

import cv2
from colors import c

c(cv2.imread('16C293.png'))
c(cv2.imread('84F00C.png'))
c(cv2.imread('8B16C2.png'))
c(cv2.imread('959090.png'))
c(cv2.imread('falsy.png'))

Kết quả:

18:14 ~/colors $ python test.py
[ 22 194 147]
[132 240  12]
[139  22 194]
[149 144 144]

18:15 ~/colors $ 

OpenCV có thể đọc một hình ảnh và trả về nó dưới dạng một mảng N chiều. NumPy được sử dụng để kiểm tra pixel đầu tiên so với các pixel khác và in ra các giá trị RGB hoặc để trống.


0

PHP, 88 byte

function($i){return~-imagecolorstotal($i)?0:sprintf("#%06x",imagecolorsforindex($i,0));}

Hàm ẩn danh lấy tài nguyên hình ảnh PHP được lập chỉ mục làm tham số, giả sử màu trong khe bảng đầu tiên, trả về mã màu hoặc 0.

chương trình, 96 byte

imagecolorstotal($i=imagecreatefromgif($argv[1]))-1||sprintf("#%06x",imagecolorsforindex($i,0));

lấy tên tệp GIF từ đối số, in mã màu hoặc không có gì. Chạy với php -r '<code>' <filename.gif>.

đối với hình ảnh màu trung thực, 113 112 byte

function($i){for(;$p<25e4;$p++)$r[$c=imagecolorat($i,$p%500,$p/500)]=1;return~-count($r)?0:sprintf("#%06x",$c);}

như trên, nhưng đòi hỏi hình ảnh màu sắc trung thực.

chương trình, 122 116 byte

for(;$p<25e4;$p++)$r[$c=imagecolorat(imagecreatefrompng($argv[1]),$p%500,$p/500)]=1;count($r)-1||printf("#%06x",$c);

như trên, nhưng yêu cầu tệp PNG.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.