भूरे रंग के पचास प्रकार


92

सिल्वर स्क्रीन पर फिफ्टी शेड्स ऑफ ग्रे देखने के लिए लड़के और लड़कियां उत्साहित हैं, हम सिर्फ परेशान किए बिना कोड करना चाहते हैं, इसलिए यहां हमारे दिमाग को चुनना एक चुनौती है।

आपको करना होगा:

  • स्क्रीन पर प्रिंट करें पचास वर्ग प्रत्येक को ग्रे की एक अलग छाया से भर दिया
  • यदि आपकी पसंद की भाषा में छवि प्रसंस्करण क्षमताओं का अभाव है , तो आप एक छवि फ़ाइल का उत्पादन कर सकते हैं
  • वर्गों को कम से कम 20 x 20 पिक्सेल दिखाई देनी चाहिए
  • आप यादृच्छिक संख्याओं का उपयोग नहीं कर सकते जब तक कि आप सुनिश्चित न करें कि प्रत्येक छाया अद्वितीय है।
  • आप किसी भी नेटवर्क पर किसी भी सेवा से नहीं जुड़ सकते
  • आप अपने प्रोग्राम में कोई भी फाइल नहीं पढ़ सकते हैं।
  • आप अपनी पसंद की भाषा के मानक पुस्तकालयों में से किसी भी पुस्तकालय का उपयोग नहीं कर सकते।

यह कोड गोल्फ है इसलिए सबसे छोटा कोड जीतता है।


21
क्या वे हमें परेशान कर रहे थे?
केल्विन के शौक

6
आपत्ति: भ्रामक शीर्षक!
जॉर्ज चल्होउब

23
हम एक देखेंगे पीट प्रस्तुत?
यादृच्छिक

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)

'I' का अर्थ 'InitialMagnification' है, लेकिन जाहिरा तौर पर Matlab नाम / मान जोड़े में स्वतः पूर्ण नाम होंगे। यकीन है कि एक अच्छा गोल्फ चाल है!

यहाँ छवि विवरण दर्ज करें


59

गणितज्ञ, 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
डेविड

4
यह अजीब है, मैट्रिक्सप्लॉट डिफ़ॉल्ट रूप से रंगों का उपयोग करता है, यह इस चुनौती के लिए भाग्यशाली है कि ArrayPlot ग्रेस्केल का उपयोग करता है और यह मैट्रिक्सपीलॉट से एक अक्षर छोटा है।
उमर

आप कर सकते हैं ArrayPlot@{Range@50}, जो केवल 20 बाइट्स है।
चिप हर्स्ट

@ChipHurst जब मैं ऐसा करता हूं, 20x20 पिक्सेल की आवश्यकता को पूरा करने के लिए डिफ़ॉल्ट आकार बहुत छोटा है।
मार्टिन एंडर

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
इसलिए खुश रहना तत्वों को बढ़ाता है !?
कारिडोरक

7
@ कैरिडरों की संख्याओं से युक्त, हाँ। और दुखी होने के कारण उन्हें: p
aditsu

आप PGM के विनिर्देश का पालन नहीं करते हैं:No line should be longer than 70 characters.
kivixz

@iKiWiXz अपडेट किया गया
aditsu

1
@iKiWiXz चाहिए, नहीं चाहिए। पंक्तियाँ इससे अधिक लंबी हो सकती हैं, लेकिन PGM छवियों को उत्पन्न करने वाले कार्यक्रमों को उन्हें 70 वर्णों के अंतर्गत रखने का प्रयास करना चाहिए।
FUZxxl

30

गणितज्ञ 72 61 59 43 35 34 बाइट्स

वर्तमान संस्करण (34 बाइट्स)

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

ग्रिड 2


पहले संस्करण (59 बाइट्स), मार्टिन ब्यूटनर को धन्यवाद।

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 से कम दिखाई दे?
जर्ग्बेल

2
निश्चित रूप से सबसे एस्टेथिक रूप से मनभावन उत्तर।
दान

30

ऋषि - २६ २४ ३५ २ ९ पात्र

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

यह इस तरह दिख रहा है:

ग्रे के 5x10 शेड्स

पिछला प्रयास : पहले मेरे पास था Matrix([range(50)]).plot(), फिर matrix_plot([range(50)])। ये इस तरह दिखते थे:

50 तरह के भूरे रंग

उपयोगकर्ता @flawr ने बताया कि डिफ़ॉल्ट सेटिंग्स के साथ निर्मित वर्ग बहुत छोटे हैं। एक figsizeविकल्प जोड़ना इसे ठीक करता है, लेकिन यह इस उत्तर के शीर्ष पर 5x10 संस्करण से 6 वर्ण अधिक लंबा है:

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

51 रंगों की तरह दिखता है और वर्ग 20x20px से छोटा दिखता है, क्या यह आपके प्रोग्राम द्वारा निर्मित होने पर बड़ा होता है?
दोष

मुझे नहीं लगता कि अतिरिक्त उत्पादन निषिद्ध है, @flawr, मैंने फ्रेम, टिकमार्क और नंबरों को हटाने की जहमत नहीं उठाई। आप वर्गों के बहुत छोटे होने के बारे में सही हो सकते हैं, मैं जाँच करूँगा।
उमर

अरे! @flawr सही है वर्ग 20px से 20px से छोटे हैं।
उमर

मैं कहूंगा कि अतिरिक्त आउटपुट को मना किया जाना चाहिए। प्रश्न '50 'को निर्दिष्ट करता है, '50 या अधिक' को नहीं।
जो

1
क्या मैं सही ढंग से समझ रहा हूं, @ जो, कि आपको फ्रेम और फ्रेम के बाहर की संख्या पर कोई आपत्ति नहीं है, केवल वर्गों की संख्या के लिए? अगर ऐसा है, तो 50 को 49 के साथ बदलें।
उमर

23

आर, 47 42 39 38 37 36 35 बाइट्स

यह मानते हुए कि उन्हें ओवरलैप करने की अनुमति है, यह काम करता है। Symbolsएक वेक्टर की आवश्यकता होती है जो प्रत्येक वर्ग के लिए आकार रखता है, और मैं सभी फ़ंक्शन मापदंडों के लिए एक ही वेक्टर का पुन: उपयोग करके अंतरिक्ष की बचत कर रहा हूं। सबसे बड़ा वर्ग हमेशा 1 इंच चौड़ा होता है। पूर्णांक की सीमा के रूप में 50:99 के साथ, सबसे छोटा वर्ग लगभग आधा इंच चौड़ा होगा, इसलिए 72 डीपीआई पर 36 पिक्सेल।

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

टिप्पणियों और सुझावों के लिए सभी को धन्यवाद, मैं आर के लिए बहुत नया हूं इसलिए यह सब बहुत शैक्षिक है।

नया और बेहतर?

पिछला संस्करण:

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 शेड्स


कुछ और के साथ बचा सकता हैsymbols(x<-50:99,sq=x,bg=gray(x/99))
मिकी

माइनस दो! धन्यवाद @ मिक्की, मुझे लगा कि यह पहले से ही किया गया था।
freekvd

1
@freekvd यह सामान्य रूप से करता है, यह उस क्रम पर निर्भर करता है जिसमें फ़ंक्शन के अंदर तर्कों को एक्सेस किया जाता है (चूंकि तर्कों का आलसी मूल्यांकन किया जाता है)। आप परीक्षण करके f = function (a, b) { a; b}और फिर कॉल करके इसे देख सकते हैं f(x <- 5, x)। यह उम्मीद के मुताबिक काम करता है। एक बार जब आप तर्कों को f(और rm(x)) परिभाषा में उलट देते हैं , तो यह किसी भी अधिक काम नहीं करता है।
कोनराड रुडोल्फ

1
ऐसा लगता है कि मूल्यांकन वर्ग = x से शुरू होता है, इसलिए मैं इसके साथ एक और चार्ट को ट्रिम कर सकता हूं। धन्यवाद @KonradRudolph
freekvd

1
1 बाइट में कटौती करेंsymbols(x,,,x<-50:99,bg=gray(x/99))
Vlo

21

जावा - 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(...!!!
14

@flawr नाह, जावा डिफ़ॉल्ट मानों के लिए स्थानीय चर आरंभ नहीं करेगा। अगर मैं इसे फंक्शन के बाहर ले जाऊं तो यह काम कर सकता है। अगर मैं इसके बजाय एक पूरा कार्यक्रम दे रहा था, तो मैं इसे इस तरह से कोशिश करूँगा (यह सिर्फ एक फ़ंक्शन है, और आवश्यक आयात है)। धन्यवाद, हालांकि :)
ज्योबिट्स

2
@flawr यदि यह एक पूर्ण कार्यक्रम था तो हाँ, आपको इसकी आवश्यकता होगी। यह केवल एक फ़ंक्शन है , क्योंकि प्रश्न निर्दिष्ट नहीं करता है।
जॉयोबिट्स

1
@AJMansfield मुझे पता है, लेकिन मैं एक अलग भाषा प्रसंस्करण पर विचार करता हूं, और मुझे जावा जावा में गोल्फ पसंद है।
भूतकाल

17

बीबीसी बेसिक, 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 रेंज के बाहर एकल बाइट के लिए टोकन है) हालांकि मैं अक्सर उस तरह से गिनती नहीं करता हूं। मैं हालांकि भविष्य में आपके टिप का उपयोग करूंगा!
लेवल रिवर सेंट

17

आईपीथॉन 2, 54 बाइट्स

सबसे अच्छा मैं एक ipython कार्यक्रम के साथ कर सकता था। ipython -pylabइस कार्यक्रम के साथ ipython शुरू करने और 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 है, जो एक बाहरी देयता है।
स्टेफानो सैनफिलिपो

15

जावास्क्रिप्ट ( 72 , 70 , 67 बाइट्स)

72: मूल ( स्फिंक्सएक्स के उत्तर&#9632; से चतुर उपयोग उधार लेना ):

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

70: इस्माईल मिगुएल (जो वोटों के हकदार हैं) से बेशर्मी से चोरी करना , पाश के लिए एक छोटा और # कलर कोड को आगे बढ़ाने के लिए ब्राउज़र को सही करने की अनुमति देता है ...

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

67 बाइट्स (65 वर्ण): यूनिकोड चरित्र के लिए इकाई की अदला-बदली:

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


मुझे लगता है कि आपको शुरू करना चाहिए i=51। अगर मैं सही ढंग से गिना जाता हूं, तो केवल 49 वर्ग हैं?
14

1
मुझे वास्तव में आपका उत्तर पसंद है! प्रिय प्रभु, क्यों मैं इसके बारे में हालांकि नहीं था? इस पर +1! मैं इसे एक for(i=0;i++<50;)document.write('<font color=#'+i+i+i+' size=7>&#9632;')या इसी तरह कम कर दूंगा। अनकहा लेकिन यह काम कर सकता है!
इस्माइल मिगेल

1
चूंकि आप मुझसे चोरी कर रहे हैं, कम से कम ठीक से चोरी करें। #70-बाइट लंबे समाधान के लिए वर्ण निकालें ।
इस्माइल मिगुएल

1
मैं बस सिफारिश करने वाला था। डिफ़ॉल्ट बाइट्स की गिनती कर रहा है, लेकिन आपको यूनिकोड वर्ण का उपयोग करना चाहिए क्योंकि यह अभी भी कम बाइट्स है।
निन्जाबियरमॉन्की

1
क्या सवाल ने ठीक 50 वर्ग कहे ? :) (अन्य समाधान भी अतिरिक्त सामान खींचते हैं।) उसके साथ और यूनिकोड शाब्दिक, डाउन टू 65 बाइट्स (63 चार्ट्स): for(i=90;i;)document.write('<font color=#'+i+i+i--+' size=7>■')- लेकिन मेरे ब्राउज़र की डिफ़ॉल्ट सेटिंग्स (OSX / Chrome) पर कम से कम बॉक्स 20x20 से थोड़ा छोटा है पिक्सल वैसे भी, इसलिए ये ■ आधारित समाधान संदिग्ध हैं।
tuomassalo

13

सी ++, 98 83 वर्ण

ठीक है, तो आपको एक टर्मिनल एमुलेटर की आवश्यकता है जो सच्चे रंगों का समर्थन करता है। मैक ओएस के लिए iTerm2 के रात के निर्माण हैं, उदाहरण के लिए। यूनिक्स के लिए मेरा मानना ​​है कि कोनोला इसका समर्थन करता है। यहाँ एक सूची है, बस मामले में: https://gist.github.com/XVilka/8346728#now-supporting-truecolor

जी ++ (\ e कंपाइलर निर्भर) के साथ संकलित करें।

चौकों के लिए पर्याप्त क्षेत्र होने के लिए, आपको अपना टर्मिनल फ़ॉन्ट आकार बदलना होगा।

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

C ++ के बजाय C पुस्तकालयों का उपयोग करने से कुछ वर्णों को शेविंग करने की अनुमति मिलती है।

सी, ६१ ५ 61 अक्षर

यह एक ही कार्यक्रम है, लेकिन सी में, जो बिना वापस जाने के लिए अनपेक्षित फ़ंक्शन घोषणाओं को मानता है, और जिसमें मानक पुस्तकालय कार्यों में से कुछ के लिए शामिल करने की आवश्यकता नहीं है, जैसे कि इस मामले में, प्रिंटफ। @Cartographer द्वारा सुझाया गया। तीन अक्षर कम @ user3601420 के लिए धन्यवाद

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

कुछ चेतावनियों के साथ संकलन (मुख्य रिटर्न के प्रकार को अंतर मानने के लिए और स्पष्ट रूप से प्रिंटफ की घोषणा सहित) के लिए।


2
यदि आप इसे C पर स्विच करते हैं तो आप इसमें शामिल कर सकते हैं और intमुख्य के सामने और इसे जीसीसी के साथ सिर्फ एक-दो चेतावनियों के साथ संकलित करें।
कार्टोग्राफर

हां, लेकिन यह एक और भाषा होगी। वैसे भी, मैं इसे जोड़ूंगा, धन्यवाद!
रॉलकॉर्ड

1
आप कुछ वर्ण सी संस्करण से यदि आप कर निकाल सकते हैं i: मुख्य करने के लिए पहले तर्क के रूप में,main(i){for(i=51;i--;)printf(...
Functino

इसे मानक बनाने के लिए केवल एक अतिरिक्त चरित्र: \e\33
Holger

यह कोड-गोल्फ है!
रोरलॉर्क

11

पायथन 2, 125 115 104 बाइट्स

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

नमूना उत्पादन:

यहाँ छवि विवरण दर्ज करें

अच्छा पुराना कछुआ। यह एकमात्र तरीका था जिसे मैं पायथन में सोच सकता था जो केवल मानक पुस्तकालयों का उपयोग करके स्क्रीन पर छवियों को प्रिंट करता है।

चौकोर कछुए की आकृति केवल 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

डेमो

(यह डेमो यहां पाए गए स्निपेट को अडॉप्ट करके स्कल्प्चर का उपयोग करता है । यह केवल एक विचार देने के लिए शामिल है कि कोड क्या करता है - मुझे इसे काम करने के लिए कुछ बिट्स को संशोधित करना पड़ा।)


आह मैं देख रहा हूँ कि कैसे एहसास हुआ कि आप ने अपडेट किया है। इसके लिए धन्यवाद, मैं शायद स्निपेट को अपडेट करने के लिए इसका उपयोग करूंगा।
ArtOfCode

11

जे ( 43 41 40 38 33 29 अक्षर)

रैंडम से सुझाव के बाद ।

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

यह समाधान कुछ भी प्रदर्शित नहीं करता है क्योंकि J के मानक पुस्तकालय में GUI दिनचर्या नहीं है। इसके बजाय, मैं एक छवि उत्पन्न करता हूं और इसे मानक आउटपुट पर लिखता हूं। आउटपुट यादृच्छिक होता है, यह सुनिश्चित करता है कि सभी शेड अलग हैं। यहाँ कुछ नमूना आउटपुट और छवि को आसान देखने के लिए png और 90 ° से घुमाया गया है:

ग्रे रंग के 50 शेड


5050 * 50 वर्ग का उपयोग करके उत्पन्न भाग में हेडर से पुश करने पर 1 बाइट बचती है 1!:2&4'P2 50 2500 ',":(,*:#i.)50:।
15

यह एक साफ विचार है।
फ़ूजएक्सएक्सएल

इससे भी अधिक: 1!:2&4'P2 ',":(,*:,],*:#i.)5029 नंबरों के लिए सभी नंबरों को धक्का दें ! Btw plotमानक J लाइब्रेरी का हिस्सा नहीं है?
यादृच्छिक

@randomra plotउन सहायक पैकेजों में से एक है जिन्हें आप पैकेज मैनेजर से डाउनलोड कर सकते हैं। मैं इसे शायद ही मानक पुस्तकालय के एक हिस्से के रूप में देखूंगा ।
FUZxxl

10

एक्सेल 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 प्राप्त करना है।
उमर

@ उमर, 0 से 9 और 1 से 5 समान वर्णों में ठीक 50 का उत्पादन करेगा .... इसका मतलब यह है कि मैं अगली कड़ी भी लिख सकता हूं, समान संख्या में बाइट्स में - 0 से 9 दो बार
SeanC

1
ओह, 0 से 9! मैंने सोचा था कि cells(i,j)आप की जरूरत है i>0और के लिए j>0
उमर

@ उमर, अरे, तुम सही हो। मैं शून्य का उपयोग नहीं कर सकता
सीन

1
थोड़ा कम (61)For i=1 To 50:Cells(i,1).Interior.Color=RGB(i*5,i*5,i*5):Next
OldCurmudgeon

8

आर ,3732 अक्षर 1 :

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

हालाँकि, इसके लिए डिस्प्ले दिखता है ... meh (छवि 90 ° घुमाकर पाठ में बेहतर रूप से फिट होने के लिए; संपीड़ित, मूल वर्गाकार लंबाई> 6px):

उबाऊ

यहां एक अच्छा संस्करण है जो मैट्रिक्स के अंदर यादृच्छिक क्रम में वर्गों को प्लॉट करता है (50 अक्षर):

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

उत्तेजित करनेवाला!

(और हाँ, समान रूप से समान रंगों के तीन आसन्न वर्ग वास्तव में ग्रे के तीन अलग-अलग शेड हैं।)

1 हाँ, एक और आर उत्तर,और सबसे छोटा भी नहीं है(अब आर के लिए सबसे छोटा) - माफी। मुझे आर में एक बहुत अच्छा प्रतिपादन याद आ रहा था ।


1
आपने पहलू अनुपात कैसे तय किया?
koekenbakker

? मूल रूप से दूसरे संस्करण @ 37 के रूप में एक हीimage(matrix(1:50,5),c=gray(1:50/51))
Vlo

@koekenbakker यह तय नहीं है, मैं मैन्युअल रूप से आउटपुट विंडो को समायोजित कर रहा हूं। यह सही नहीं है, लेकिन कोड किसी दिए गए विंडो के लिए वर्ग का उत्पादन करता है , और यहां अन्य कोड में तुलनीय मुद्दे हैं।
कोनराड रुडोल्फ

8

Matlab 35 sanchises के लिए धन्यवाद

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

मतलूब ३६

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

1 से 50 ग्रे मानों से भरे हुए 50 वर्ग और 2 अतिरिक्त आयताकारों को ग्रे मान 0 और 51 के साथ प्रदर्शित करता है:

यहाँ छवि विवरण दर्ज करें

मतलूब, ४५

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

आप uint8 के बजाय int8 का उपयोग करके एक तेज़ 1 बाइट को शेव कर सकते हैं।
18

sanchises का समाधान बेहतर है!
मेमोरियल

@Memming यह कुछ अस्पष्ट (अनिर्दिष्ट?) सुविधा पर टिका है जो मुझे केवल इसके बारे में जानने के लिए इसे आजमाकर पता चला है।
स्टिफ़ेन

@ TheBestOne / JaBe: आपका जवाब वास्तव में काम नहीं करता है क्योंकि यह वर्ग प्रदर्शित नहीं करता है। स्टीफ़न int8 का उपयोग 1000 या तो मानों को 50 वर्गों में गोल करने के लिए करता है।
सांचीस

7

जावास्क्रिप्ट, 87 90 बाइट्स

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

यह HTML के लिए वर्गों का उत्पादन करता है, क्योंकि यह वास्तव में जावास्क्रिप्ट का आलेखीय आउटपुट का एकमात्र तरीका है। 3 बाइट्स को बंद करने के लिए edc65 का धन्यवाद।


1
3 बाइट्स सहेजें for(i=90;i>40;)document.write('<p style=background:#'+i+i+i--+';height:9ex;width:9ex>'):। एकल अंकों का उपयोग नहीं किया जा सकता है क्योंकि ग्रे अद्वितीय नहीं होगा (#
11111

आप अन्य इकाइयों का उपयोग कर सकते हैं। 1cmया 1 9mmबेहतर और व्यापक रूप से समर्थित होगा। बिना अपनी बाइट काउंट बदले।
इस्माइल मिगुएल

7

PHP, 96 88 74 बाइट्स

22 बाइट बचाने के लिए इस्माइल मिगुएल का धन्यवाद!

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

<p>ऊंचाई और चौड़ाई के रूप में 9 मिमी के साथ 50 एस लिखता है (जो स्क्रीन के बहुमत पर 20px से बड़ा होना चाहिए), एक दूसरे पर ढेर, सभी छाया में मामूली अंतर के साथ।

उत्पन्न परिणाम (छवि को ज़ूम आउट किया जाता है और 90 ° घुमाया जाता है):

नतीजा


7

मतलाब - 33 बाइट्स

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

वर्बोज़ कमांड के बावजूद, परिणाम अभी भी काफी कॉम्पैक्ट है। अगर आप की जगह यह थोड़ा बेहतर लग रहा है surfके साथ surfaceलेकिन यह है कि 3 वर्ण खर्च होता है।

यदि आप 50 वें ग्रे वर्ग को नोटिस नहीं करते हैं, क्योंकि यह दूसरों की तुलना में थोड़ा बड़ा है!


का उपयोग करें ndgrid! (2 बाइट्स कम)। और, क्या प्रत्येक वर्ग एक अलग ग्रे है?
लुइस मेंडो

7

जावास्क्रिप्ट (77 71 बाइट्स):

यह उत्तर अब IE11 आधारित नहीं है। यह काम करता है क्योंकि ब्राउज़र खराब रंग कोड को प्रयोग करने योग्य ( #संख्या में जोड़कर ) में परिवर्तित करता है ।

यहाँ कोड है:

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

फ़ायरफ़ॉक्स में अभी भी सर्कल बनाने की विचित्रता है।

(छोटा संपादन: बदल 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>");

सबसे छोटा जवाब नहीं है, लेकिन यह यहाँ जोड़ने लायक है।


यह समाधान क्रोम के साथ संगत नहीं है (कई हरे रंग का उत्पादन करता है) और फ़ायरफ़ॉक्स (एक ही परिणाम है, लेकिन हलकों का उत्पादन करता है? ऊ WTH?)

चूंकि यह कोड-गोल्फ है, एक विशिष्ट संस्करण या विशिष्ट सॉफ़्टवेयर के साथ काम करने वाला समाधान स्वीकार्य है।


2
यह सिर्फ मेरे लिए हो सकता है, लेकिन इस कोड स्निपेट को चलाने से ज्यादातर हरे और नीले वृत्त बनते हैं। मैं देख रहा हूं @ मार्टिनबटनर ने मुझे इस टिप्पणी पर हराया, इसलिए यह सिर्फ मेरे लिए नहीं ...
MrLemon

@ मुझे लगता है कि क्रोम आरजीबी पसंद नहीं करता है - लेकिन यह IE11 पर काम करता है। चूंकि मैं क्रॉस-ब्राउज़र समाधान बनाने की कोशिश नहीं कर रहा हूं, यह स्वीकार्य है। मैं इसे उत्तर में जोड़ूंगा।
इस्माईल मिगुएल

@IsmaelMiguel यह ठीक है मुझे लगता है। लेकिन सिर्फ स्पष्टता के लिए, मैं अभी एफएफ पर हूं। हालांकि यह IE11 पर काम करने की पुष्टि कर सकता है।
15

@ घर यह IE11 पर काम करता है, क्योंकि मैंने घर पर कोशिश की थी। यदि आवश्यक हो तो मैं प्रिंट-स्क्रीन प्रदान कर सकता हूं। फ़ायरफ़ॉक्स इसके साथ सर्कल बनाता है। मेरे पास कोई f # $% आईएनजी नहीं है कि कैसे। इसे वापस करने का कोई तरीका नहीं है। मैं IE की उम्मीद कर रहा था quirks, फ़ायरफ़ॉक्स नहीं।
इस्माइल मिगेल

फ़ायरफ़ॉक्स, के सिरों पर आधे-हलकों को लगाता है <hr>, शायद इसे और अधिक चिकनी बनाने के लिए। रंगों के साथ क्या होता है इसका कोई सुराग नहीं। वैसे भी मुझे चकरा देने के लिए मेरा +1 है।
MrLemon

7

Piet- 2 * 103 = 206

यह स्रोत कोड और आउटपुट चुनौती को पूरा करने में अद्वितीय है:

Piet

अधिकांश यह सजावटी है, इसलिए मैंने केवल शीर्ष दो पंक्तियों को गिना, जो अकेले ठीक खड़े हैं। आउटपुट ग्रेस्केल पीपीएम जैसा कुछ अन्य लोगों ने किया है।


6

जावास्क्रिप्ट - 70 बाइट्स

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


6
बॉक्स का आकार 20 पिक्सेल से छोटा है
edc65

1
फिर आपको अपने ब्राउज़र का फ़ॉन्ट आकार समायोजित करने की आवश्यकता है;)
स्फिंक्सएक्स

1
आप का उपयोग करने के font:3em aलिए या font-size:3em। मैं बक्सों के आकार के कारण इसे डाउनवोट कर रहा हूं। जब तक आप ठीक नहीं करते।
इस्माईल मिगुएल

3
आप उपयोग कर सकते हैं i--के बजाय i-=1
14

1
आप <b>टैग का उपयोग कर सकते हैं । यह किसी भी तरह से कोड को नहीं बदलेगा, यह सुनिश्चित करने के अलावा कि पाठ काला होगा। यह एक आवश्यकता नहीं है, लेकिन यह एक अच्छा विचार हो सकता है।
इस्माइल मिगुएल


6

PHP (62 60 63 72 71 62 59 बाइट्स):

मैंने सबसे छोटा बनाया है जो मुझे मिल सकता है:

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

यह बिल्कुल मेरे जावास्क्रिप्ट उत्तर (71 बाइट्स के साथ) के समान कोड है ।

लेकिन बहुत छोटा है!

फ़ायरफ़ॉक्स में यह एक विचित्रता है: वर्गों के बजाय, फ़ायरफ़ॉक्स सर्कल बनाता है ! (पागलपन जाओ!)
उस से भी, सभी ब्राउज़र सही रंग का उत्पादन करते हैं (यहां तक #कि colorविशेषता पर लापता होने के साथ )।


अमान्य सबमिशन और चैंज :

पुराना जवाब, 62 बाइट्स के साथ।

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

सभी शेड पूरी तरह से संरेखित हैं।

यह (कई रंगों के साथ वर्गों का उत्पादन करेगा) और समाधान क्रोम के लिए काम नहीं करेगा फ़ायरफ़ॉक्स (जो हलकों में आता है ऊ हाँ, हलकों के साथ <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>";

यह अमान्य है क्योंकि यह आउटपुट वर्ग के लिए आवश्यक है।
यह रंगों को हल्के से गहरे रंग में बदल देता है।


एक whileलूप पर स्विच करके 1 बाइट कम करें , जैसे:

<?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/ ("HTML के रूप में प्रदर्शित करें" पर क्लिक करें) पर परीक्षण कर सकते हैं ।


5

सीएसएस (87 वर्ण)

एनीमेशन का उपयोग करता है;)

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

चलने योग्य संस्करण तब से लंबा है जब वेबकिट को अभी भी विक्रेता के उपसर्ग की आवश्यकता है। :(

: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

आर, 36 बाइट्स

मैं फ्रीक्वॉइड के उत्तर को मामूली रूप से छोटा कर सकता हूं।

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

उत्पादन

(उनके समाधान के तहत टिप्पणी नहीं करने के लिए क्षमा करें। Stackexchange मुझे टिप्पणी, वोट आदि अभी तक करने की अनुमति नहीं देता है)।


क्या यह 51 वर्ग का उत्पादन नहीं करता है?
मिकट

यह सबसे छोटा वर्ग 20 पिक्सेल से कम चौड़ा बनाता है? यह आपके डीपीआई पर निर्भर करता है, लेकिन सबसे बड़ा वर्ग 1 इंच है, इसलिए 72 डीपीआई छवि में 11 पिक्सल का एक छोटा वर्ग होगा।
फ़्रीक्वेड

यद्यपि यदि आप इसे 1:99 बनाते हैं तो आप तर्क दे सकते हैं कि 50 सबसे बड़े वर्ग मापदंड को पूरा करते हैं।
फ़्रीक्वेड

4

पोस्टस्क्रिप्ट, 34 बाइट्स

आईएसओ-लैटिन -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

(यह मानता है कि आप इसे एक ऐसे उपकरण पर उपयोग कर रहे हैं जो कम से कम 1000 अंक [= 10 इंच = 25.4 सेमी] चौड़ा है।)


हमें हेक्स एनकोडेड ओकटेट्स (यानी:) की एक श्रृंखला दें 0f 4e 75 a3 ...
हनीफेमबारक

@haneefmubarak मैं करूँगा, मुझे बस घर पाने की ज़रूरत है ताकि मैं अपने गोल्फर कार्यक्रम का उपयोग कर सकूँ। (ऑनलाइन पोस्टस्क्रिप्ट कम्पेक्टर कभी काम नहीं करता है।)
AJMansfield

@haneefmubarak ठीक है, फ़ाइल के प्रत्यक्ष प्रतिनिधित्व के साथ अद्यतन किया गया है, हालाँकि यह हेक्स ओक्टेट नहीं है। (मैं बाद में एक बार असली कन्वर्टर प्रोग्राम का उपयोग कर सकता हूं।)
AJMansfield

4

DrRacket - 83

सिर्फ "व्यवस्थित प्रोग्राम डिज़ाइन का परिचय" के बाद DrRacket को फायर करने के लिए।

संपादित करें :

(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)))
एलेक्सिस किंग

4

सी # - 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
थॉमस वेलर

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)

यहाँ सीएसएस फ्लोट के साथ आउटपुट छोड़ दिया गया है (सिर्फ इसलिए कि वर्गों को गिनना आसान है) और इसके बिना:

सीएसएस फ्लोट के साथ

बिना सीएसएस फ्लोट


2
आप एक-अक्षर चर नामों का उपयोग करके, सभी varकीवर्ड्स को छोड़ने और अनावश्यक व्हाट्सएप को हटाकर कुछ बाइट्स बचा सकते हैं । इसके अलावा, अपने उत्तर में भाषा का नाम और बाइट गिनती भी शामिल करें।
प्रोग्रामफॉक्स

इनपुट के लिए धन्यवाद। मैंने श्वेत स्थान को कम किया और बाइट की गिनती को जोड़ा, लेकिन मुझे यकीन नहीं है कि आप varकीवर्ड छोड़ने का क्या मतलब है ।
डेवोन टेलर

कोई बात नहीं। मुझेमूक होने का अनुभव हो रहा है।
डेवॉन टेलर

के c+=5बजाय का उपयोग करें c=c+5। इसके अलावा, आप n=c.toString()पिछली पंक्ति के अंत में रख कर 2 वर्णों को बचा सकते हैं , और फिर पिछली पंक्ति के अंत में फिर से उस पंक्ति को। तो आपकी दूसरी पंक्ति होगीfunction w(){if(c<250){n=c.toString()
mbomb007

इसके अलावा, मुझे पूरा यकीन है कि आप pxऊंचाई और चौड़ाई के लिए छोड़ सकते हैं ।
mbomb007
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.