ห้าสิบ Shades of Grey


92

เด็กชายและเด็กหญิงตื่นเต้นที่จะได้เห็นFifty Shades of Greyบนหน้าจอสีเงินเราแค่ต้องการโค้ดโดยไม่ถูกรบกวนดังนั้นนี่คือความท้าทายในการเลือกสมองของเรา

คุณต้อง:

  • พิมพ์บนหน้าจอห้าสิบสี่เหลี่ยมที่เต็มไปด้วยแต่ละสีเทาที่แตกต่างกัน
  • หากภาษาที่คุณเลือกไม่มีความสามารถในการประมวลผลภาพคุณสามารถส่งออกไฟล์ภาพได้
  • ต้องมองเห็นช่องสี่เหลี่ยมอย่างน้อย 20 x 20 พิกเซล
  • คุณไม่สามารถใช้ตัวเลขสุ่มได้เว้นแต่คุณจะตรวจสอบให้แน่ใจว่าแต่ละเฉดสีนั้นไม่ซ้ำกัน
  • คุณไม่สามารถเชื่อมต่อกับบริการใด ๆ ผ่านเครือข่ายใด ๆ
  • คุณไม่สามารถอ่านไฟล์ใด ๆ ในโปรแกรมของคุณ
  • คุณไม่สามารถใช้ไลบรารีใด ๆ จากไลบรารีมาตรฐานของภาษาที่คุณเลือก

รหัสนี้เป็นรหัสกอล์ฟที่สั้นที่สุดที่จะชนะ


21
พวกเขารบกวนเราหรือเปล่า
งานอดิเรกของ Calvin

6
การคัดค้าน: ชื่อที่ทำให้เข้าใจผิด!
George Chalhoub

23
เราจะเห็นการยอมแพ้Pietไหม?
randomra

8
ไม่ใช่ภาพที่ฉันคิดว่าเราจะสร้างขึ้นเพื่อการแข่งขันสีเทา 50 เฉด
corsiKa

3
@randomra ถามและคุณจะได้รับ: codegolf.stackexchange.com/questions/45736/fifty-shades-of-grey/ ......
captncraig

คำตอบ:


24

MATLAB, 24 ไบต์

ความพยายามครั้งที่สองตอนนี้เป็นจริงตามกฎ

imshow(0:1/49:1,'I',2e3)

'ฉัน' หมายถึง 'InitialMagnification' แต่ Matlab จะเติมข้อความอัตโนมัติในชื่อ / คู่ค่า แน่นอนว่าเป็นเคล็ดลับการเล่นกอล์ฟที่ดี!

ป้อนคำอธิบายรูปภาพที่นี่


59

Mathematica ขนาด 30 ไบต์

นี่เป็นอีกวิธีการทางคณิตศาสตร์:

ArrayPlot[#+5#2&~Array~{5,10}]

ป้อนคำอธิบายรูปภาพที่นี่

หรือ

ArrayPlot[5#+#2&~Array~{10,5}]

ป้อนคำอธิบายรูปภาพที่นี่

คนแรกเพียงแค่สร้างอาร์เรย์

{{6, 11, 16, 21, 26, 31, 36, 41, 46, 51}, 
 {7, 12, 17, 22, 27, 32, 37, 42, 47, 52}, 
 {8, 13, 18, 23, 28, 33, 38, 43, 48, 53}, 
 {9, 14, 19, 24, 29, 34, 39, 44, 49, 54}, 
 {10, 15, 20, 25, 30, 35, 40, 45, 50, 55}}

และอันที่สอง

{{6, 7, 8, 9, 10},
 {11, 12, 13, 14, 15},
 {16, 17, 18, 19, 20},
 {21, 22, 23, 24, 25},
 {26, 27, 28, 29, 30},
 {31, 32, 33, 34, 35},
 {36, 37, 38, 39, 40},
 {41, 42, 43, 44, 45},
 {46, 47, 48, 49, 50},
 {51, 52, 53, 54, 55}}

จากนั้นทำการArrayPlotแปลงเป็นตารางและโดยค่าเริ่มต้นจะใช้ greyscale เพื่อแสดงค่า


ArrayPlotการใช้งานที่น่ารักของ
DavidC

4
เป็นเรื่องตลกที่ MatrixPlot ดูเหมือนจะใช้สีเป็นค่าเริ่มต้นโชคดีสำหรับความท้าทายนี้ที่ ArrayPlot ใช้โทนสีเทาและเป็นตัวอักษรที่สั้นกว่า MatrixPlot
โอมาร์

คุณสามารถทำได้ArrayPlot@{Range@50}ซึ่งมีเพียง 20 ไบต์
Chip Hurst

@ChipHurst เมื่อฉันทำเช่นนั้นขนาดเริ่มต้นเล็กเกินไปที่จะตอบสนองความต้องการพิกเซล 20x20
Martin Ender

36

CJam - 23 (ไม่มีเอาต์พุตกราฟิกจริง)

เนื่องจาก CJam วาดภาพบนหน้าจอไม่ได้ (?) ฉันจึงเขียนโปรแกรมที่แสดงผลภาพในรูปแบบpgmธรรมดา
บันทึกผลลัพธ์ไปยังไฟล์ชื่อ 50.pgm และเปิดด้วยโปรแกรมดูรูปภาพ / แก้ไข

"P2"1e3K51_,1>K*$K*~]N*

ลองออนไลน์

ผลลัพธ์จะเป็นดังนี้:

50.png

คำอธิบาย:

"P2"     push "P2" (netpbm magic number)
1e3K     push 1000 and K=20 (image size)
51       push 51 (value of white)
_,       duplicate 51 and convert to an array [0 1 2 ... 50]
1>       remove 0 (slice from 1)
K*       repeat the array 20 times
$        sort, to get [(20 1's) (20 2's) ... (20 50's)]
K*       repeat the array 20 times
~        dump the elements on the stack
]        put everything from the stack in an array
N*       join with newlines

3
ดังนั้นการมีความสุขจึงเพิ่มองค์ประกอบ!
Caridorc

7
@Caridorc ของอาร์เรย์ที่มีตัวเลขใช่ และความเศร้าก็ลดลง: p
aditsu

คุณไม่ปฏิบัติตามข้อกำหนดของ PGM:No line should be longer than 70 characters.
kiwixz

@iKiWiXz อัปเดตแล้ว
aditsu

1
@iKiWiXz ไม่ควรจะต้อง บรรทัดอาจยาวกว่านั้น แต่โปรแกรมที่สร้างอิมเมจ PGM ควรพยายามให้มีความยาวไม่เกิน 70 อักขระ
FUZxxl

30

Mathematica 72 61 59 43 35 34 ไบต์

รุ่นปัจจุบัน (34 ไบต์)

GrayLevel[#/50]~Style~50 &~Array~50    

grid2


รุ่นก่อนหน้า (59 ไบต์) ต้องขอบคุณ Martin Büttner

Graphics[{GrayLevel[#/50],Cuboid@{#~Mod~9,#/9}}&/@Range@50]

เพิ่มเส้นขอบสีน้ำเงินเพื่อเน้นตำแหน่งสี่เหลี่ยม

Graphics[{EdgeForm[Blue], GrayLevel[#/50], Cuboid@{#~Mod~9, #/9}} & /@Range@50]

สีน้ำเงิน

จำนวนสี่เหลี่ยม:

    Length[%[[1]]]

50


ความพยายามครั้งแรก (72 ไบต์)

หากช่องสี่เหลี่ยมสามารถทับซ้อนกัน ตามที่การ์บกล่าวมีความเป็นไปได้ในระยะไกลที่หนึ่งตารางจะซ่อนอีกส่วน

  Graphics@Table[{GrayLevel@k,Cuboid[{0,15}~RandomReal~2]},{k,.4,.89,.01}]

ป้อนคำอธิบายรูปภาพที่นี่


ฉันเดาว่าหลักการหนึ่งตารางสามารถครอบคลุมอีกส่วนได้อย่างสมบูรณ์ดังนั้นจะเห็นได้น้อยกว่า 50 ตัว?
Zgarb

2
คำตอบที่ถูกใจที่สุด
ด่าน

30

Sage - 26 24 35 29 ตัวอักษร

matrix(5,10,range(50)).plot()

ดูเหมือนว่านี้:

สีเทา 5x10

พยายามก่อนหน้านี้ : ครั้งแรกที่ฉันได้แล้วMatrix([range(50)]).plot() matrix_plot([range(50)])สิ่งเหล่านี้ดูเหมือนว่า:

สีเทา 50 เฉด

User @flawr ชี้ให้เห็นว่าสี่เหลี่ยมที่สร้างขึ้นด้วยการตั้งค่าเริ่มต้นนั้นเล็กเกินไป การเพิ่มfigsizeตัวเลือกแก้ไขได้ แต่จะยาวกว่า 5x10 ตัวอักษร 6 ตัวที่ด้านบนของคำตอบนี้:

matrix_plot([range(50)],figsize=20)

ดูเหมือนว่า 51 เฉดสีและสี่เหลี่ยมดูเล็กกว่า 20x20px มันใหญ่กว่าเมื่อผลิตโดยโปรแกรมของคุณหรือไม่?
ข้อบกพร่อง

ฉันไม่คิดว่าการส่งออกเพิ่มเติมเป็นสิ่งต้องห้าม @ flawr ฉันไม่ได้รำคาญที่จะลบเฟรมเครื่องหมายและตัวเลข คุณอาจพูดถูกเกี่ยวกับสี่เหลี่ยมที่เล็กเกินไปฉันจะตรวจสอบ
โอมาร์

โอ๊ะ! @ flawr ถูกต้องกำลังสองมีขนาดเล็กกว่า 20px คูณ 20px
โอมาร์

ฉันจะบอกว่าผลผลิตพิเศษควรถูกห้าม คำถามนี้ระบุว่า '50' ไม่ใช่ '50 หรือมากกว่า '
โจ

1
ฉันเข้าใจถูกต้องหรือไม่ @Joe คุณไม่ได้คัดค้านกรอบและตัวเลขที่อยู่นอกกรอบเพียงจำนวนสี่เหลี่ยมเท่านั้น? หากเป็นเช่นนั้นให้แทนที่ 50 ด้วย 49
โอมาร์

23

R, 47 42 39 38 37 36 35 ไบต์

สมมติว่าพวกเขาได้รับอนุญาตให้ทับซ้อนงานนี้ Symbolsต้องการเวกเตอร์ที่มีขนาดสำหรับแต่ละตารางและฉันกำลังประหยัดพื้นที่ด้วยการนำเวกเตอร์เดียวกันมาใช้ใหม่สำหรับพารามิเตอร์ฟังก์ชันทั้งหมด สี่เหลี่ยมจัตุรัสที่ใหญ่ที่สุดนั้นกว้าง 1 นิ้วเสมอ ด้วย 50:99 เป็นช่วงของจำนวนเต็มสี่เหลี่ยมที่เล็กที่สุดจะกว้างประมาณครึ่งนิ้วดังนั้น 36 พิกเซลที่ 72 dpi

symbols(x,,,x<-50:99,bg=gray(x/99))

ขอบคุณทุกคนสำหรับความคิดเห็นและข้อเสนอแนะฉันค่อนข้างใหม่กับ R ดังนั้นทั้งหมดนี้เป็นเรื่องการศึกษามาก

ใหม่และปรับปรุงแล้วหรือยัง

รุ่นก่อนหน้า:

symbols(x,sq=x<-50:99,bg=gray(x/99))            #36
x=50:99;symbols(x,sq=x,bg=gray(x/99))           #37
x<-50:99;symbols(x,sq=x,bg=gray(x/99))          #38
x<-1:50;symbols(x,sq=x/x,bg=gray(x/50))         #39
x<-1:50/50;symbols(x,sq=x/x,bg=rgb(x,x,x))      #42
x<-1:50/50;symbols(x,squares=x/x,bg=rgb(x,x,x)) #47

ภาพก่อนหน้า: 50 เฉดสีของ R


สามารถประหยัดเพิ่มได้อีกเล็กน้อยด้วยsymbols(x<-50:99,sq=x,bg=gray(x/99))
MickyT

ลบสอง! ขอบคุณ @MickyT ฉันคิดว่ามันเสร็จเรียบร้อยแล้ว
freekvd

1
@freekvd มันทำโดยทั่วไปมันขึ้นอยู่กับลำดับที่มีการเข้าถึงอาร์กิวเมนต์ภายในฟังก์ชัน (เนื่องจากอาร์กิวเมนต์ได้รับการประเมินอย่างขี้เกียจ) คุณสามารถทดสอบนี้โดยมีแล้วโทรf = function (a, b) { a; b} f(x <- 5, x)ทำงานได้ตามที่คาดไว้ เมื่อคุณย้อนกลับอาร์กิวเมนต์ในfนิยามของ (และrm(x)) แล้วมันจะไม่ทำงานอีกต่อไป
Konrad Rudolph

1
ดูเหมือนว่าการประเมินเริ่มต้นที่ sq = x ดังนั้นฉันสามารถตัดถ่านอีกอันด้วยสิ่งนี้ได้ ขอบคุณ @KonradRudolph
freekvd

1
ลดขนาดลง 1 ไบต์symbols(x,,,x<-50:99,bg=gray(x/99))
Vlo

21

Java - 180

ตรงไปตรงมาสวยเพียงแค่วาดกล่อง

import java.awt.*;void f(){new Frame(){public void paint(Graphics g){for(int i=1;i<51;g.setColor(new Color(328965*i)),g.fillRect(i%8*20,i++/8*20,20,20))setSize(600,600);}}.show();}

ป้อนคำอธิบายรูปภาพที่นี่

ด้วยตัวแบ่งบรรทัด:

import java.awt.*;
    void f(){
        new Frame(){
            public void paint(Graphics g){
                for(int i=1;
                    i<51;
                    g.setColor(new Color(328965*i)),
                    g.fillRect(i%8*20,i++/8*20,20,20))
                    setSize(600,600);
            }
        }.show();
    }

หากใครก็ตามที่วัตถุในกล่องสุดท้ายที่มีสีขาวในทางเทคนิคเพียงแค่เปลี่ยนตัวคูณสีเป็น 263172 นับไบต์เดียวกันฉันแค่คิดว่ามันดูดีขึ้นด้วยวิธีนี้
Geobits

ฉันคิดว่าคุณสามารถใช้int i;แทนint i=1แต่จากนั้นใช้++iในการใช้ครั้งแรกiแทนที่จะi++เกิดขึ้นครั้งสุดท้ายจะประหยัด 2 ไบต์ BTW: ฉันไม่รู้ด้วยซ้ำว่าคุณสามารถสร้างโปรแกรมจาวาได้โดยไม่ต้อง class MyClass ... public static void main(... !!!
ข้อบกพร่อง

@flawr Nah, Java จะไม่เริ่มต้นตัวแปรท้องถิ่นเป็นค่าเริ่มต้น มันอาจทำงานได้ถ้าฉันย้ายมันออกไปนอกฟังก์ชั่น ถ้าฉันให้โปรแกรมเต็มแทนฉันจะลองด้วยวิธีนี้ (นี่เป็นเพียงฟังก์ชั่นรวมทั้งการนำเข้าที่จำเป็น) ขอบคุณแม้ว่า :)
Geobits

2
@flawr หากเป็นโปรแกรมเต็มรูปแบบใช่แล้วคุณต้องการมัน นี่เป็นเพียงฟังก์ชันเนื่องจากคำถามไม่ได้ระบุ
Geobits

1
@JMansfield ฉันรู้ แต่ฉันพิจารณาการใช้ภาษาอื่นและฉันชอบเล่นกอล์ฟใน Java Java
Geobits

17

BBC BASIC, 57

FORn=51TO2STEP-1VDU19;-1,n,n,n:RECTANGLEFILL0,0,n*20NEXT

สี่เหลี่ยมจัตุรัสต้องมีอย่างน้อย 20 พิกเซล แต่ไม่มีอะไรจะบอกว่ามันต้องมีขนาดเท่ากันดังนั้นฉันเดาว่ามันมีคุณสมบัติ

อาจเป็นไปได้ที่จะย่อให้สั้นลงโดยใช้รหัส VDU ระดับต่ำมากขึ้น แต่การเปลี่ยนจากรูปแบบนี้เป็นสิ่งที่น่าสนใจน้อยกว่านั้นไม่น่าจะทำให้สั้นลง

ป้อนคำอธิบายรูปภาพที่นี่


2
จำตัวย่อพื้นฐานบีบีซีของคุณ? เอฟเอ็นเอสวี -> F.n=51TO2S.-1V.19;-1,n,n,n:RECTANGLEFILL0,0,n*20N.
SeanC

@SeanCheshire bbcbasic.co.uk/bbcwin/bbcwin.htmlสนับสนุนตัวย่อเหล่านั้นฉันไม่เคยคิดที่จะตรวจสอบ! วิธีของคุณนับเป็น 50 ขนาดไฟล์โทเค็นคือ 41 ไบต์ (แต่ละคำหลักโทเค็นเป็นหนึ่งไบต์นอกช่วง ASCII) แม้ว่าฉันจะไม่นับอย่างนั้น ฉันจะใช้เคล็ดลับของคุณในอนาคตแม้ว่า!
Level River St

17

ipython 2, 54 ไบต์

สิ่งที่ดีที่สุดที่ฉันทำได้คือใช้โปรแกรม ipython การเริ่มต้น ipython ด้วยipython -pylabและเรียกใช้งานโปรแกรมนี้จะแสดงกราฟที่มีสีเทา 50 เฉดใน 50 สี่เหลี่ยม:

t=arange(50);c=t/50.;scatter(t%5,t,500,zip(c,c,c),'s')

เอาท์พุท:

grey50

โซลูชันที่ 2:

นี่คือโปรแกรมอื่น (61 ไบต์):

imshow(arange(50).reshape(5,10)*.02,'Greys',None,1,'nearest')

ที่แสดงหน้าต่างต่อไปนี้:

grey50b


1
อย่างไรก็ตามโปรดทราบว่า ipython ไม่ใช่ภาษาและสิ่งที่คุณใช้คือ Python library matplotlib ซึ่งเป็น lib ภายนอก
Stefano Sanfilippo

15

JavaScript ( 72 , 70 , 67 ไบต์)

72: ต้นฉบับ (ยืมการ&#9632;ใช้งานที่ชาญฉลาดจากคำตอบของ Sphinxxx ):

for(i=90;i>40;)document.write('<font color=#'+i+i+i--+' size=7>&#9632;')

70: ขโมยอย่างไร้ความปราณีจากIsmael Miguel (ผู้สมควรได้รับคะแนน), สั้นลงสำหรับลูปและอนุญาตให้เบราว์เซอร์แก้ไขให้ถูกต้องเนื่องจากไม่มี # ดำเนินการตามรหัสสี ...

for(i=60;--i>9;)document.write('<font color='+i+i+i+' size=7>&#9632;')

67 ไบต์ (65 ตัวอักษร): การสลับเอนทิตีสำหรับอักขระ Unicode:

for(i=60;--i>9;)document.write('<font color='+i+i+i+' size=7>■')


i=51ฉันคิดว่าคุณควรจะเริ่มต้นที่ ถ้าฉันนับอย่างถูกต้องมีเพียง 49 กำลังสอง?
ข้อบกพร่อง

1
ฉันชอบคำตอบของคุณจริงๆ! ท่านที่รักทำไมฉันไม่คิดเกี่ยวกับเรื่องนี้? +1 บนอันนี้! ฉันจะลดอันนี้ลงfor(i=0;i++<50;)document.write('<font color=#'+i+i+i+' size=7>&#9632;')หรือคล้ายกัน ยังไม่ทดลอง แต่อาจใช้งานได้!
Ismael Miguel

1
เมื่อคุณกำลังขโมยจากฉันอย่างน้อยก็ขโมยอย่างถูกต้อง ลบ#อักขระเพื่อให้มีวิธีแก้ปัญหาแบบยาว 70 ไบต์
Ismael Miguel

1
ฉันแค่อยากจะแนะนำ ค่าเริ่มต้นคือการนับไบต์ แต่คุณควรใช้อักขระ Unicode เพราะยังคงมีจำนวนน้อยกว่าไบต์
NinjaBearMonkey

1
คำถามที่ว่าพูดว่า 50 สี่เหลี่ยมแน่นอน ? :) (โซลูชันอื่น ๆ ยังวาดสิ่งพิเศษ) ด้วยสิ่งนั้นและตัวอักษร unicode ลดลงถึง 65 ไบต์ (63 ตัวอักษร): for(i=90;i;)document.write('<font color=#'+i+i+i--+' size=7>■')- แต่อย่างน้อยในการตั้งค่าเริ่มต้นของเบราว์เซอร์ (OSX / Chrome) กล่องเล็กกว่า 20x20 เล็กน้อย พิกเซลอยู่แล้วดังนั้นโซลูชันที่ใช้■จึงเป็นที่น่าสงสัย
tuomassalo

13

C ++, 98 83 ตัวอักษร

โอเคคุณจะต้องมีเทอร์มินัลอีมูเลเตอร์ที่รองรับสีจริง สำหรับ mac os นั้นมีการสร้าง iTerm2 ทุกค่ำคืน สำหรับยูนิกซ์ฉันเชื่อว่า konsole รองรับ นี่คือรายการในกรณี: https://gist.github.com/XVilka/8346728#now-supporting-truecolor

คอมไพล์ด้วย g ++ (\ e ขึ้นอยู่กับคอมไพเลอร์)

เพื่อให้สี่เหลี่ยมมีพื้นที่เพียงพอคุณจะต้องเปลี่ยนขนาดฟอนต์เทอร์มินัล

#include <cstdio>
int main(){for(int i=51;i--;)printf("\e[48;2;%i;%i;%im ",i,i,i);}

การใช้ไลบรารี C แทน C ++ ช่วยให้สามารถโกนอักขระบางตัวได้

C, 61 58 ตัวอักษร

นี่เป็นโปรแกรมเดียวกัน แต่ใน C ซึ่งถือว่าการประกาศฟังก์ชันที่ไม่ได้พิมพ์เพื่อคืนค่า int และไม่จำเป็นต้องมีสำหรับฟังก์ชันไลบรารีมาตรฐานบางอย่างเช่นในกรณีนี้ printf แนะนำโดย @cartographer น้อยกว่าสามตัวอักษรด้วย @ user3601420

main(i){for(i=51;i--;)printf("\e[48;2;%i;%i;%im ",i,i,i);}

คอมไพล์ด้วยคำเตือนสองสามข้อ (สำหรับการสมมติว่าชนิดการส่งคืนของ main เป็น int และสำหรับปริยายรวมถึงการประกาศ printf)


2
หากคุณสลับไปที่ C คุณสามารถวางการรวมและintหน้าหลักและรวบรวมมันด้วยการเตือนเพียงสองสามครั้งด้วย gcc
นักทำแผนที่

ใช่ แต่นั่นจะเป็นภาษาอื่น อย่างไรก็ตามฉันจะต่อท้ายขอขอบคุณ!
rorlork

1
คุณสามารถลบอักขระบางตัวออกจากเวอร์ชั่น C หากคุณสร้างiอาร์กิวเมนต์แรกเป็น main ดังเช่นใน:main(i){for(i=51;i--;)printf(...
Functino

มีหนึ่งอักขระเพิ่มเติมที่จะทำให้เป็นมาตรฐาน: \e\33
Holger

นี่คือรหัสกอล์ฟ!
rorlork

11

Python 2, 125 115 104 bytes

from turtle import*
shape("square")
bk(500)
ht()
pu()
exec'color((xcor()/2e3+.5,)*3);stamp();fd(21);'*50

ตัวอย่างผลลัพธ์:

ป้อนคำอธิบายรูปภาพที่นี่

ดีเต่าเก่า นี่เป็นวิธีเดียวที่ฉันนึกได้ใน Python ที่พิมพ์รูปภาพไปยังหน้าจอโดยใช้ไลบรารีมาตรฐานเท่านั้น

รูปทรงเต่าสี่เหลี่ยมนั้นมีขนาด 21 คูณ 21 ซึ่งสะดวกมาก สิ่งนี้สามารถเห็นได้โดยการขุดผ่านturtle.py:

"square" : Shape("polygon", ((10,-10), (10,10), (-10,10), (-10,-10)))

หากคุณมีมอนิเตอร์ความละเอียดสูงหรือไม่สนใจว่ากำลังออกนอกจอสองสามสี่เหลี่ยมนี่คือ93 ไบต์:

from turtle import*
shape("square")
ht()
pu()
exec'color((xcor()/2e3,)*3);stamp();fd(21);'*50

การสาธิต

(ตัวอย่างนี้ใช้Skulptโดยปรับตัวอย่างที่พบที่นี่มันรวมไว้เพื่อให้แนวคิดว่าโค้ดทำอะไร - ฉันต้องแก้ไขสองสามบิตเพื่อให้มันทำงานได้)


อ่าฉันเห็นว่าคุณตระหนักถึง skulpt ได้รับการปรับปรุงแล้ว ขอบคุณสำหรับสิ่งนี้ฉันอาจใช้เพื่ออัปเดตข้อมูลโค้ด
ArtOfCode

11

J ( 43 41 40 38 33 29 ตัวอักษร)

หลังจากที่ข้อเสนอแนะจากrandomra

1!:2&4'P2 ',":(,*:,],*:#?~)50

วิธีนี้ไม่ได้แสดงอะไรเลยเพราะไลบรารีมาตรฐานของ J ไม่มี GUI ประจำ แต่ฉันสร้างภาพและเขียนลงในเอาต์พุตมาตรฐานแทน ผลลัพธ์จะถูกสุ่มทำให้มั่นใจได้ว่าเฉดสีทั้งหมดนั้นแตกต่างกัน นี่คือเอาต์พุตตัวอย่างบางส่วนและภาพที่ถูกแปลงเป็น png และหมุนได้ 90 °เพื่อการดูที่ง่ายขึ้น:

สีเทา 50 เฉด


ผลักดัน50จากส่วนหัวเข้าไปในส่วนที่สร้างขึ้นโดยใช้ 50 * 50 สี่เหลี่ยมบันทึก 1 1!:2&4'P2 50 2500 ',":(,*:#i.)50ไบต์:
randomra

นั่นเป็นความคิดที่เรียบร้อย
FUZxxl

มากขึ้น: กดตัวเลขทั้งหมดใน1!:2&4'P2 ',":(,*:,],*:#i.)5029 ตัวอักษร! Btw plotไม่ได้เป็นส่วนหนึ่งของไลบรารี J มาตรฐานใช่หรือไม่
randomra

@randomra plotเป็นหนึ่งในแพ็คเกจเสริมที่คุณสามารถดาวน์โหลดได้จากตัวจัดการแพ็คเกจ ฉันแทบจะเห็นว่ามันเป็นส่วนหนึ่งของห้องสมุดมาตรฐาน
FUZxxl

10

Excel vba, 81

ในหน้าต่างทันที:

for i=1 to 9:for j=1 to 9:k=i+j*10:cells(i,j).interior.color=rgb(k,k,k):next:next

บนแผ่นงานที่ใช้งานอยู่:

81 เฉดสีเป็นรหัสมากเท่ากับ 50

{81 เฉดเป็นโค้ดมากเท่ากับ 50}


บางคนแปลความหมายของ "50" เป็น 50 อย่างแน่นอนในกรณีนี้อาจเป็นตัวละครอีกตัวหนึ่งที่จะได้ 50 = 10 * 5 มากกว่าที่จะได้รับ 81 = 9 * 9
โอมาร์

@ Omar, 0 ถึง 9 และ 1 ถึง 5 จะผลิตได้ 50 ตัวในจำนวนอักขระเท่ากัน .... นี่ก็หมายความว่าฉันสามารถเขียนภาคต่อได้เช่นกันในจำนวนไบต์เดียวกัน - 0 ถึง 9 สองครั้ง
SeanC

1
โอ้ 0 ถึง 9! ผมคิดว่าสำหรับcells(i,j)คุณที่จำเป็นและi>0 j>0
โอมาร์

@ Omar เจ้ากรรมคุณพูดถูก ฉันไม่สามารถใช้ศูนย์
SeanC

1
สั้นลงเล็กน้อย (61)For i=1 To 50:Cells(i,1).Interior.Color=RGB(i*5,i*5,i*5):Next
OldCurmudgeon

8

R ,3732 ตัวอักษร1 :

image(t(1:50),c=gray.colors(50))

อย่างไรก็ตามหน้าจอสำหรับสิ่งนี้ดู… meh (ภาพหมุน 90 °เพื่อให้พอดีกับข้อความได้ดียิ่งขึ้นความยาวของสี่เหลี่ยมจัตุรัสดั้งเดิม> 20px):

น่าเบื่อ

ต่อไปนี้เป็นเวอร์ชันที่ดีกว่าซึ่งจะแปลงสี่เหลี่ยมตามลำดับแบบสุ่มภายในเมทริกซ์ (50 ตัวอักษร):

image(matrix(sample(1:50),10),c=gray.colors(50))

น่าตื่นเต้น!

(และใช่สี่เหลี่ยมสามสีที่อยู่ติดกันซึ่งดูเหมือนกันจะเป็นสีเทาสามเฉดสีที่ต่างกัน)

1ใช่อีกคำตอบ Rและไม่ใช่แม้แต่ที่สั้นที่สุด(ตอนนี้สั้นที่สุดสำหรับ R) - ขอโทษ ฉันขาดการแสดงผลที่สวยงามในอาร์


1
คุณแก้ไขอัตราส่วนภาพอย่างไร
koekenbakker

? โดยทั่วไปเหมือนกับรุ่นที่สอง @ 37image(matrix(1:50,5),c=gray(1:50/51))
Vlo

@koekenbakker ยังไม่ได้รับการแก้ไขฉันกำลังปรับหน้าต่างผลลัพธ์ด้วยตนเอง มันไม่สมบูรณ์แบบ แต่โค้ดจะสร้างช่องสี่เหลี่ยมสำหรับหน้าต่างที่กำหนดและรหัสอื่น ๆ ที่นี่มีปัญหาที่คล้ายคลึงกัน
Konrad Rudolph

8

Matlab 35 ต้องขอบคุณ sanchises

imshow(int8(ones(20,1)*(0:.05:51)))

Matlab 36

imshow(uint8(ones(20,1)*(0:.05:51)))

แสดง 50 สี่เหลี่ยมที่เต็มไปด้วยค่าสีเทา 1 ถึง 50 และ 2 สี่เหลี่ยมเพิ่มเติมที่เติมด้วยค่าสีเทา 0 และ 51:

ป้อนคำอธิบายรูปภาพที่นี่

Matlab, 45

imshow(uint8(ones(20,1)*floor(1:0.05:50.95)))

คุณสามารถโกนขนาด 1 ไบต์ได้ด้วยการใช้ int8 แทน uint8
Sanchises

ทางออกของ sanchises ดีกว่า!
Memming

@ การเก็บรวบรวมมันจะขึ้นอยู่กับคุณลักษณะที่ไม่ชัดเจน (ไม่มีเอกสาร?) ที่ฉันค้นพบโดยลองใช้มันเพื่อความเข้าใจ ให้เครดิตของ Steffen เพราะถึงกำหนดแล้ว :)
Sanchises

@TheBestOne / JaBe: คำตอบของคุณไม่ทำงานจริง ๆ เพราะมันไม่แสดงผลกำลังสอง Steffen ใช้ int8 เพื่อปัดเศษ 1,000 หรือมากกว่านั้นค่าให้เป็น 50 กำลังสอง
Sanchises

7

JavaScript, 87 90ไบต์

for(i=90;i>40;)document.write('<p style=background:#'+i+i+i--+';height:9ex;width:9ex>')

เอาต์พุตนี้จะยกกำลังสองไปยัง HTML เนื่องจากเป็นวิธีการแสดงผลกราฟิกของ JavaScript เท่านั้น ขอบคุณ edc65 สำหรับการโกนขนาด 3 ไบต์


1
บันทึก 3 for(i=90;i>40;)document.write('<p style=background:#'+i+i+i--+';height:9ex;width:9ex>')ไบต์: ไม่สามารถใช้ตัวเลขหลักเดียวได้เพราะสีเทาจะไม่ซ้ำกัน (# 111 สีเดียวกับ # 111111)
edc65

คุณสามารถใช้หน่วยอื่น ๆ 1cmหรือ 1 9mmจะดีขึ้นและได้รับการสนับสนุนอย่างกว้างขวางมากขึ้น โดยไม่เปลี่ยนจำนวนไบต์ของคุณ
Ismael Miguel

7

PHP, 96 88 74 ไบต์

ขอบคุณ Ismael Miguel ที่ช่วยประหยัด 22 ไบต์!

for($i=60;--$i>9;)echo"<p style=background:#$i$i$i;height:9mm;width:9mm>";

เขียน 50 <p>วินาทีด้วยความสูงและความกว้าง 9 มม. (ซึ่งควรใหญ่กว่า 20px ในหน้าจอส่วนใหญ่) ซ้อนกันซึ่งทั้งหมดมีความแตกต่างเล็กน้อยในที่ร่ม

ผลลัพธ์ที่สร้างขึ้น (รูปภาพถูกย่อและหมุน 90 °):

ผลลัพธ์


7

Matlab - 33 ไบต์

surf(meshgrid(1:7)),colormap gray

แม้จะมีคำสั่ง verbose ผลลัพธ์ก็ยังค่อนข้างกะทัดรัด มันดูดีขึ้นเล็กน้อยถ้าคุณแทนที่surfด้วยsurfaceแต่มีค่าใช้จ่าย 3 ตัวอักษร

หากคุณไม่สังเกตสี่เหลี่ยมสีเทาที่ 50 นั่นเป็นเพราะมันใหญ่กว่าจัตุรัสอื่นเล็กน้อย!


ใช้ndgrid! (น้อยกว่า 2 ไบต์) และแต่ละตารางเป็นสีเทาแตกต่างกันหรือไม่
Luis Mendo

7

Javascript (77 71 ไบต์):

คำตอบนี้ไม่ได้อยู่กับ IE11 อีกต่อไป มันทำงานได้เพราะเบราว์เซอร์แปลงรหัสสีที่ไม่ดีเป็นรหัสที่ใช้งานได้ (โดยการเพิ่ม#หมายเลข)

นี่คือรหัส:

for(i=59;i-->9;)document.write("<hr color="+i+i+i+" size=20 width=20>")

Firefox ยังมีมุมมองที่แปลกประหลาดในการสร้างแวดวง

(แก้ไขเล็กน้อย: เปลี่ยนfor(i=61;i-->9;)เป็นfor(i=59;i-->9;)เพราะมันสร้าง 52 สี่เหลี่ยม)


คำตอบเก่า:

สิ่งนี้ขึ้นอยู่กับคำตอบ PHP ของฉันและใช้วิธีเดียวกันในการสร้างสแควร์ส:

for(i=51;i--;)document.write("<hr color=rgb("+[i,i,i]+") size=20 width=20>");

ไม่ใช่คำตอบที่สั้นที่สุด แต่ควรเพิ่มที่นี่


โซลูชันนี้ไม่สามารถใช้งานร่วมกับ Chrome (สร้างสีเขียวหลายสี) และ Firefox (ผลลัพธ์เดียวกัน แต่สร้างแวดวง? oO WTH?)

ตั้งแต่นี้เป็นรหัสกอล์ฟโซลูชั่นที่ทำงานกับรุ่นเฉพาะหรือซอฟต์แวร์เฉพาะเป็นที่ยอมรับ


2
อาจเป็นฉันก็ได้ แต่การเรียกใช้ข้อมูลโค้ดนี้จะทำให้เกิดวงกลมสีเขียวและสีน้ำเงินเป็นส่วนใหญ่ ฉันเห็น @ MartinBüttnerเอาชนะฉันถึงความคิดเห็นนี้ดังนั้นมันไม่ใช่แค่ฉัน ...
MrLemon

@MrLemon ฉันคิดว่า chrome ไม่เหมือน RGB -.- แต่ใช้งานได้กับ IE11 เนื่องจากฉันไม่ได้พยายามสร้างโซลูชันข้ามเบราว์เซอร์จึงเป็นที่ยอมรับ ฉันจะเพิ่มสิ่งนี้ในคำตอบ
Ismael Miguel

@IsmaelMiguel ไม่เป็นไรฉันเดา แต่เพื่อความชัดเจนฉันอยู่ที่ FF ในตอนนี้ สามารถยืนยันได้ว่าทำงานได้บน IE11
MrLemon

@MLLemon มันทำงานได้กับ IE11 ตั้งแต่ฉันลองที่บ้าน ฉันสามารถจัดหาหน้าจอพิมพ์ได้ถ้าต้องการ Firefox สร้างแวดวงด้วย ฉันไม่มีความคิดเกี่ยวกับวิธีการ ไม่มีวิธีในการคืนค่า ฉันคาดหวังว่า IE จะมีสิ่งที่แปลกประหลาดไม่ใช่ Firefox
Ismael Miguel

Firefox ดูเหมือนจะวางครึ่งวงกลมไว้ที่ส่วนท้าย<hr>อาจทำให้ดูราบรื่นขึ้น ไม่มีเงื่อนงำเกี่ยวกับสิ่งที่เกิดขึ้นกับสี อย่างไรก็ตามมี +1 ของฉันสำหรับฉันทำให้งงงัน
MrLemon

7

Piet- 2 * 103 = 206

สิ่งนี้ไม่เหมือนกันในที่ซอร์สโค้ดและผลลัพธ์ที่ตอบสนองความท้าทาย:

Piet

ส่วนใหญ่เป็นของตกแต่งฉันเลยนับแค่สองแถวบนสุดเท่านั้น แสดงผล ppm ระดับสีเทาเหมือนที่บางคนทำไว้


6

JavaScript - 70 ไบต์

for(i=51;i-=1;)document.write('<a style=opacity:'+i/50+'>&#9632;</a>')


6
ขนาดกล่องเล็กกว่า 20 พิกเซล
edc65

1
จากนั้นคุณต้องปรับขนาดตัวอักษรของเบราว์เซอร์ของคุณ;)
Sphinxxx

1
คุณต้องใช้หรือfont:3em a font-size:3emฉันกำลังลงคะแนนอันนี้เนื่องจากขนาดของกล่อง จนกว่าคุณจะแก้ไข
Ismael Miguel

3
คุณสามารถใช้แทนi-- i-=1
ข้อบกพร่อง

1
คุณสามารถใช้<b>แท็ก มันจะไม่เปลี่ยนรหัสในทางใด ๆ ยกเว้นให้แน่ใจว่าข้อความจะเป็นสีดำ นี่ไม่ใช่ข้อกำหนด แต่มันอาจเป็นความคิดที่ดี
Ismael Miguel


6

PHP (62 60 63 72 71 62 59 ไบต์):

ฉันทำสั้นที่สุดที่ฉันสามารถหา:

for($i=59;$i-->9;)echo"<hr color=$i$i$i size=20 width=20>";

นี่คือว่ารหัสเดียวกับคำตอบของฉัน Javascript (71 bytes)

แต่มากสั้น!

นี้มีมุมแหลมใน Firefox A: แทนสี่เหลี่ยม, Firefox ทำให้วงการ ! (ไปบ้า!)
Othen กว่าที่เบราว์เซอร์ทั้งหมดที่ผลิตสีขวา (แม้จะมีการขาดหายไป#ในcolorแอตทริบิวต์)


การส่งและการเปลี่ยนแปลงไม่ถูกต้อง :

คำตอบเก่าด้วย 62 ไบต์

while($i++<51)echo"<hr color=rgb($i,$i,$i) size=20 width=20>";

เฉดสีทั้งหมดจัดเรียงอย่างสมบูรณ์แบบ

โซลูชันนี้ใช้ไม่ได้กับ Chrome (จะสร้างสี่เหลี่ยมที่มีหลายสี) และ Firefox (ซึ่งทำให้แวดวง oO ใช่แวดวงที่มี<hr>! ไม้บรรทัดแนวนอนคือวงกลมบน Firefox!)
คุณสามารถทดสอบบน IE11 และควรจะดี


(ลบออกจากด้านบน)

ฉันสังเกตเห็นบางสิ่งที่น่ากลัว: มันกำลังแสดงผล#111แทน#010101บางสี

นี่หมายความว่าบางสีกำลังทำซ้ำ

ดังนั้นฉันต้องเสียสละไม่กี่ไบต์:

<?while(f>$c=dechex(65-$i++))echo"<hr color=#$c$c$c size=20 width=20>";

แสดงผล 50 เฉดสีในรูปแบบที่สมบูรณ์แบบตั้งแต่สีอ่อนไปจนถึงสีเข้ม

เนื่องจากเป็นจุดที่ถูกต้องทำโดย@ edc65ผมต้องเพิ่มwidth=20การผลิตสแควร์ที่สมบูรณ์แบบ

ลดหนึ่งไบต์อีกครั้งโดยแทนที่f!=$cด้วยf>$cซึ่งทำงานได้อย่างสมบูรณ์


รุ่นสุดท้ายโดยไม่มีwidth=20:

<?while(f!=$c=dechex(65-$i++))echo"<hr color=#$c$c$c size=20>";

สิ่งนี้ไม่ถูกต้องเพราะมันเป็นสิ่งจำเป็นในการส่งออกกำลังสอง
วิธีนี้จะทำให้เฉดสีอ่อนลงไปถึงเข้มขึ้น


ลดลง 1 ไบต์โดยเปลี่ยนเป็นwhileลูปดังนี้:

<?while($c=dechex(50-$i++))echo"<hr color=#$c$c$c size=20>";

วิธีแก้ปัญหาแรก:

<?for($i=50;$c=dechex($i--);)echo"<hr color=#$c$c$c size=20>";

นี่ไม่ใช่เฉดสีที่สั่งอย่างเรียบร้อย แต่มี 50 เฉดสีที่แตกต่างกัน

ไม่มีอะไรที่ระบุว่าพวกเขาจะต้องสั่ง แต่มีข้อกำหนดเกี่ยวกับขนาด

ฉันหวังว่าฉันสามารถลดได้มากขึ้น

คุณสามารถทดสอบได้ที่http://writecodeonline.com/php/ (คลิกที่ "Display as HTML")


5

CSS (87 ตัวอักษร)

ใช้ภาพเคลื่อนไหว;)

:after{content:'\25A0';font:9em z;animation:g 8s steps(50)}@keyframes g{to{color:#fff}}

เวอร์ชันที่รันได้นานกว่าเนื่องจาก Webkit ยังคงต้องการคำนำหน้าของผู้จัดจำหน่าย :(

:after{content:'\25A0';font:9em z;-webkit-animation:g 8s steps(50);animation:g 8s steps(50)}@-webkit-keyframes g{to{color:#fff}}@keyframes g{to{color:#fff}}

หากเราอนุญาตให้ใช้<a>องค์ประกอบแบบสุ่มและว่างเปล่าเราสามารถทำให้มันเป็น 72 ตัวอักษร:

a{padding:3em;animation:g 8s steps(50)}@keyframes g{to{background:#000}}

ดู? CSS เป็นภาษาโปรแกรมที่ถูกต้อง!


4

R, 36 ไบต์

ฉันสามารถทำให้คำตอบของ freekvd สั้นลงเล็กน้อย

x=9:59/59;symbols(x,sq=x,bg=gray(x))

เอาท์พุต

(ขออภัยที่ไม่ได้แสดงความคิดเห็นภายใต้วิธีแก้ปัญหาของเขา Stackexchange ยังไม่อนุญาตให้ฉันแสดงความคิดเห็นลงคะแนน ฯลฯ )


สิ่งนี้ไม่ได้ผลิต 51 สี่เหลี่ยมใช่หรือไม่
มิ

ทำให้สี่เหลี่ยมเล็กที่สุดกว้างน้อยกว่า 20 พิกเซลหรือไม่ ขึ้นอยู่กับ dpi ของคุณ แต่สี่เหลี่ยมจัตุรัสที่ใหญ่ที่สุดคือ 1 นิ้วดังนั้นภาพ 72 dpi จะมีสี่เหลี่ยมจัตุรัสเล็ก ๆ 11 พิกเซล
freekvd

แม้ว่าคุณจะทำให้มันเป็น 1:99 คุณก็สามารถโต้แย้งได้ว่า 50 สี่เหลี่ยมที่ใหญ่ที่สุดนั้นมีคุณสมบัติตรงตามเกณฑ์
freekvd

4

PostScript ขนาด 34 ไบต์

ในการเข้ารหัส ISO-Latin-1:

20’›‡üˆì0{’81e3’6’–10’k0ˆ                   (note, this is a Line Feed)
’c’§}’H

นี่คือไบนารีเทียบเท่ากับ:

20 setlinewidth 1020 -20 0 { dup 1e3 div setgray 10 moveto 0 10 lineto stroke } for

(ซึ่งถือว่าคุณใช้งานบนอุปกรณ์ที่มีความกว้างอย่างน้อย 1,000 คะแนน [= 10 นิ้ว = 25.4 ซม.])


ให้เราชุดของหกเหลี่ยม octets เข้ารหัส (เช่น: 0f 4e 75 a3 ...)
haneefmubarak

@haneefmubarak ฉันจะทำฉันแค่ต้องการกลับบ้านเพื่อที่ฉันจะได้ใช้โปรแกรมนักกอล์ฟของฉัน (เครื่อง
บีบ

@haneefmubarak ตกลงอัปเดตด้วยการนำเสนอโดยตรงของไฟล์แม้ว่าจะไม่ใช่อ็อกเท็ตฐานสิบหก (ฉันจะเพิ่มเข้าไปในภายหลังเมื่อฉันสามารถใช้โปรแกรมแปลงจริง)
AJMansfield

4

DrRacket - 83

เพียงเพื่อจะได้ยิง DrRacket 1 ปีหลังจาก "รู้เบื้องต้นเกี่ยวกับการออกแบบโปรแกรมอย่างเป็นระบบ"

แก้ไข :

(require htdp/image)(map(λ(i)(rectangle 50 50'solid(make-color i i i)))(range 50))

บันทึกคู่ของตัวอักษร: เปลี่ยนจาก2htdp/imageการhtdp/imageเปลี่ยนสายการสัญลักษณ์"solid" 'solidสำหรับเงินฝากออมทรัพย์ที่ใหญ่กว่าเปลี่ยน(range 9 209 4)ไป(range 50): เฉดสีเทาเป็นเพียงจำเป็นต้องแตกต่างกันไม่ง่ายที่จะบอกความแตกต่างสำหรับตาของมนุษย์!
โอมาร์

คุณสามารถบันทึกตัวละครไม่กี่ตัวโดยใช้for/set:(require htdp/image)(for/set([i 50])(rectangle 50 50'solid(make-color i i i)))
Alexis King

4

C # - 173

ใช้ LINQPAD

var b=new Bitmap(1000,20);var g=Graphics.FromImage(b);for(int i=0;i<50;i++)g.FillRectangle(new SolidBrush(Color.FromArgb(i*5,i*5,i*5)),new Rectangle(i*20,0,20,20));b.Dump();

ขยาย :

var b = new Bitmap(1000, 20);
var g = Graphics.FromImage(b);
for (int i = 0; i < 50; i++)
    g.FillRectangle(new SolidBrush(Color.FromArgb(i * 5, i * 5, i * 5)), new Rectangle(i * 20, 0, 20, 20));
b.Dump();

ผลผลิต :

เอาท์พุต


คำแนะนำ: for(int i=0;i<250;i+=5)จากนั้นFromArgb(i,i,i)และRectangle(i*4,0,20,20)มอบ 168
โทมัสเวลเลอ

นอกจากนี้FillRectangle()ยังมีการโอเวอร์โหลดซึ่งใช้พิกัดสี่เหลี่ยมผืนผ้าโดยตรงดังนั้นคุณสามารถลบnew Rectangle()และออกไปได้ด้วย 153
Thomas Weller

4

จาวาสคริปต์, 152 ไบต์

โอเคบางทีนี่อาจไม่ใช่ทางออกที่ดีที่สุด แต่นี่เป็นของฉัน

function b(a){c=document
e=c.createElement('p')
with(e.style){background="rgb("+[a,a,a]+")"
width=height="20px"}c.body.appendChild(e)
a<245&&b(a+5)}b(0)

นี่คือเอาต์พุตที่มี css float left (เพื่อให้ง่ายต่อการนับกำลังสอง) และไม่มี:

กับ CSS ลอย

โดยไม่ต้อง CSS ลอย


2
คุณสามารถบันทึกบางไบต์โดยใช้ชื่อตัวแปรตัวอักษรหนึ่งตัววางvarคำหลักทั้งหมดและลบช่องว่างที่ไม่จำเป็น นอกจากนี้โปรดระบุชื่อภาษาและจำนวนไบต์ในคำตอบของคุณ
ProgramFOX

ขอบคุณสำหรับการป้อนข้อมูล ฉันลดพื้นที่สีขาวและเพิ่มจำนวนไบต์ แต่ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดยการวางvarคำหลัก
Devon Taylor

ไม่เป็นไร. ฉันรู้สึกเป็นใบ้
Devon Taylor

ใช้แทนc+=5 c=c+5นอกจากนี้คุณสามารถบันทึก 2 ตัวอักษรโดยใส่n=c.toString()ที่จุดสิ้นสุดของบรรทัดก่อนหน้าและจากนั้นบรรทัดที่ท้ายบรรทัดก่อนหน้าอีกครั้ง ดังนั้นบรรทัดที่สองของคุณจะเป็นfunction w(){if(c<250){n=c.toString()
mbomb007

นอกจากนี้ฉันค่อนข้างแน่ใจว่าคุณสามารถละเว้นpxความสูงและความกว้างได้
mbomb007
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.