यह बरसात का दिन है


42

प्रसंग

यह वैलेंटाइन डे है। केवल एक जिसे आपने कभी प्यार किया था कल आपको इस आदमी के लिए छोड़ दिया था वह हमेशा "बेवकूफ और निर्बाध" पाया । अपने घर के रास्ते पर, आप ट्रैफ़िक में फंस गए हैं, रेडियो पर पुराने गाने सुन रहे हैं, विंडस्क्रीन पर बारिश आपको मार रही है। अपनी कार में थोड़ी देर के बाद, आप अपने आप को अपने छोटे से अपार्टमेंट में अकेला पाते हैं और कुछ और नहीं सोच पाते हैं। प्रकाश नहीं है और आप खिड़की को घूरते हैं, जिससे अंधेरा आपको घेर लेता है। कोई बात करने वाला नहीं है, आपके दोस्त इस नई लड़की के बारे में आपको चेतावनी देने के बाद बहुत पहले चले गए हैं। आप अपना कंप्यूटर शुरू करते हैं, क्योंकि यह केवल एक चीज है जो आप कर सकते हैं, अपने ब्राउज़र को खोल सकते हैं और अपने दिमाग को बदलने के प्रयास में स्टैटेक्सचेंज में एक नई प्रोग्रामिंग पहेली पोस्ट कर सकते हैं।

चुनौती

अपनी पसंद की भाषा में एक कार्यक्रम लिखें, जो बारिश को जमीन पर गिराता है। आउटपुट ASCII वर्णों या 2D / 3D से बना हो सकता है। कैमरा ठीक किया गया है: आप सीधे जमीन पर देख रहे हैं। आपके प्रोग्राम में किसी तरह का एनीमेशन शामिल होना चाहिए जैसे कंसोल या पेज को हर बार जब आप एक नया "फ्रेम" जेनरेट करते हैं। यह यथार्थवादी होना चाहिए, मुझे पता है कि यह थोड़ा व्यक्तिपरक है लेकिन मान लीजिए कि आप केवल एक बड़ी गिरावट में सभी जमीन नहीं भर सकते।

आउटपुट के लिए एक छवि होना आवश्यक नहीं है, लेकिन अगर आप क्रिप्टो भाषा का उपयोग कर रहे हैं, तो यह बेहतर है कि यह वर्णन करने के लिए एक .gif प्रदान करें कि यह कार्रवाई में कैसे दिखता है (लेकिन निश्चित रूप से, यह आपके स्कोर को प्रभावित नहीं करेगा यदि आप नहीं करते हैं)।

नियम

  • आपका स्कोर कुल बाइट्स का उपयोग किया जाता है
  • -20 अंक यदि आप रंगों का उपयोग करते हैं
  • -50 यदि आप किसी प्रकार की हवा प्रदान करने के लिए प्राप्त करते हैं
  • सबसे कम स्कोर जीतता है

उदाहरण

क्या प्रस्तुत किया जाना चाहिए का एक बहुत ही बुनियादी उदाहरण:

मुझे उम्मीद है कि आप बेहतर करेंगे और इस चुनौती का आनंद लेंगे।

मेरी अंग्रेजी के लिए क्षमा करें, यदि आप कुछ त्रुटियों को ठीक करना चाहते हैं तो मेरी पोस्ट को संपादित करने के लिए स्वतंत्र महसूस करें

लीडर बोर्ड

यदि आपका नाम सूचीबद्ध नहीं है, तो इसलिए कि आपके प्रयास को नियम नहीं माना गया है।

Tobia - APL - 35  
j6m8 - Processing.js - 38
The Guy with The Hat - Processing - 42  
ace - Processing - 74  
kelunik - JS/CSS - 89  
Riot - Bash - 91  
Michael - JS/jQuery - 105  
Florent - HTML/JS - 123  
David Carraher - Mathematica - 134  
Doorknob - HTML/JS - 150  
undergroundmonorail - Python - 175

टोबिया को बधाई!


51
मुझे पूरी उम्मीद है कि पहला पैराग्राफ एक सच्ची कहानी नहीं है।
केंडल फ्रे

1
@DavidCarraher हाँ, जैसे आप आकाश में हैं, फर्श पर देख रहे हैं।

8
मुझे नहीं लगता कि यह कोड-गोल्फ होना चाहिए क्योंकि संभावित आउटपुट पर बहुत अधिक संभावना है
क्रंचर

4
इस रेंडरिंग के लिए कैमरा पोजिशन के साथ पहला पैराग्राफ काफी बड़ा है।
टोबिया

जवाबों:


26

APL, 105 वर्ण / बाइट * - 20 - 50 = 35 स्कोर

e←{⍞←∊'␛['⍵}
e¨'36m' '?25l' '2J'
{⍵←3⌊⍵+3×0=?t⍴50
⍵{(⍵c)←⍕¨⍵+1
e⍵';'c'H',' .∘⍟'[⍺]}¨⍳t
∇0⌈⍵-1}0⍴⍨t←24 80

*: अधिकांश एपीएल कार्यान्वयन एकल-बाइट चार्टसेट के कुछ प्रकार (विरासत) का समर्थन करते हैं, जो एपीएल प्रतीकों को ऊपरी 128 बाइट मानों के लिए मैप करते हैं। इसलिए, गोल्फिंग के उद्देश्य के लिए, केवल ASCII वर्णों और APL प्रतीकों का उपयोग करने वाले प्रोग्राम को chars = बाइट्स के रूप में स्कोर किया जा सकता है।

मैंने इसे निक के नवीनतम apl.js पर Node.js पर OS X टर्मिनल में परीक्षण किया । लेकिन मैंने उनकी बोली के लिए कुछ भी विशेष उपयोग नहीं किया है, इसलिए यह किसी भी आधुनिक एपीएल पर काम करना चाहिए जो एक एएनएसआई टर्मिनल पर चलाया जा सकता है और डी-फन {...}, स्ट्रैंड असाइनमेंट (a b)←..., और कम्यूट का समर्थन करता है , जैसे कि लिनक्स के लिए डायलाग या रासपी पीआई के लिए। साथ ⎕IO←0)

पंक्ति 1 में (जो 1 बाइट है) एक शाब्दिक एस्केप वर्ण है। आप इसे Ctrl-V Escलिनक्स टर्मिनल या विम में उपयोग कर सकते हैं , या माना जा सकता है कि Alt-027विंडोज में कुछ ऐसा है । इसके अलावा, मुझे टर्मिनल आकार की खोज करने का एक विश्वसनीय तरीका नहीं मिला, इसलिए आप अंतिम पंक्ति के अंत में पंक्तियों और स्तंभों की संख्या को संपादित करना चाह सकते हैं।

मैं 50 बोनस का बचाव इस तथ्य से करता हूं कि प्रत्येक बारिश की बूंदें निम्नलिखित आकृतियों से गुजरती हैं: ⍟∘.जो थोड़ी सी नीचे की हवा का आभास देती हैं, यह देखते हुए कि दृश्य ऊपर से देखा जा रहा है। वास्तव में, नीचे दिए गए जिफ को देखते हुए, आपको यह धारणा बनानी चाहिए कि प्रत्येक बूंद धीरे-धीरे नीचे की ओर और बाईं ओर, जमीन पर गायब होने से पहले है।

Ungolfed संस्करण:

e←{⍞←∊"␛["⍵}                  # utility to print escape sequence
e¨'36m' '?25l' '2J'            # set cyan, hide the cursor and clear screen
{                              # repeat (⍵=current board of raindrops)
  ⍵←3⌊⍵+3×0=?t⍴50              #   add some new drops (=3) in random places
  ⍵{                           #   print the drops (⍺=drop value, ⍵=coords)
    (r c)←⍕¨⍵+1                #     convert the coordinates to string
    e r';'c'H',' .∘⍟'[⍺]       #     print or clear the drop
  }¨⍳t                         #   ..
  ∇0⌈⍵-1                       #   remove 1 from every drop and repeat
}0⍴⍨t←24 80                    # ..starting with an empty board

आउटपुट:

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


एपीएल, अलग शैली

प्रतियोगिता से बाहर।

m←×/t←1+(ζη)←2×(βγ)←24 80
e←{⍞←∊(⎕UCS 27)'['⍵}
s←{⍵[β-1-⍳β;1+⍳γ]}
p←{⍺{e'H'⍺,⍨{⍺,';',⍵}/⍕¨⍵}¨(,s⍵)/,1+⍳βγ}
e¨'2J' '36m' '?25l'
{'/'p⍵←(200<m÷?t⍴m)∨0⍪⍵[⍳ζ;1+⍳η],0
' 'p(~⍵)∧0,⍵[1+⍳ζ;⍳η]⍪0
'.∘°'[?(+/,sδ)/3]pδ←⍵∧~d←.2<m÷⍨?t⍴m
∇⍵∧d}t⍴0

यहाँ मेरा उद्देश्य औसत पर लगातार दिखाई देने वाली बूंदों (या तो गिरने या छींटे) की संख्या को बनाए रखने की कोशिश करते हुए बारिश की बूंदों को जमीन पर गिरने और जमीन पर जमा होने का आभास देना था। चाल /हर चक्र में कई नई गिरने वाली बूँदें बनाने की थी और गिरने वाली बूंदें किसी भी छींटे को "मिटा" देती थीं।

परिणाम अजीब तरह से मैट्रिक्स कोड की याद दिलाता है।

आउटपुट
(झटका हर 5s gif लूपिंग है)

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


यह अच्छा है, लेकिन मुझे नहीं लगता कि ESC के चरित्र को सही तरीके से छापा जा रहा है। i.stack.imgur.com/vLERQ.png मैंने कोड को gedit के साथ चिपकाने की कोशिश की, काम नहीं किया।
बाइक चलाना

आपने अपना अंक गलत पा लिया। प्रश्न "बाइट्स" कहता है, "वर्ण" नहीं।
जाजपी

1
@ बाइकिंग मैंने उस हिस्से को संपादित किया। यदि आप इसे फिर से कोशिश करते हैं तो यह काम करना चाहिए।
टोबिया

@ टोबिया मुझे अपने आईबीएम 5100 पर बैठे हुए की एक तस्वीर दिखाओ, और मैं चरस = बाइट्स तर्क खरीदूँगा।
प्राइमो


42

बैश: 111 बाइट्स - 20 = 91 अंक!

आपके टर्मिनल में एक चिंतनशील कोमल रिमझिम बारिश। क्रमशः विभिन्न ऊंचाई और चौड़ाई के लिए संख्या 819 और 41 को समायोजित करें।

e='printf \e';while :;do for i in {0..819};do((RANDOM<9))&&$e[1\;36m.||$e[1C;((i%41<1))&&$e'
';done;$e[20A;done

स्क्रीनशॉट

एक सुखद बोनस है जिस तरह से बारिश के क्षेत्र में कर्सर पिटर-पेटेंट करता है।

संपादित करें: @ manatwork के सुझावों के लिए 140 बाइट्स से 129 बाइट्स को छोटा करना। दूसरा संपादन: @ मैनटवर्क और @ टोबिया के सुझावों के अतिरिक्त 129 बाइट्स से 111 बाइट्स को छोटा करना, साथ ही अतिरिक्त प्रेरणा - टिप्पणियां देखें।

(नोट: स्क्रीनशॉट कोड के पिछले कम-गोल्फ संस्करण को दिखाता है, जो कार्यात्मक रूप से समान है)


1
आप अलग कर सकते हैं: के echoविकल्प में शामिल होकर 2 वर्ण ; के \eबजाय का उपयोग करके 2 वर्ण \033; के :बजाय का उपयोग करके 3 वर्ण true; अंकगणितीय मूल्यांकन ( ((…))) का उपयोग करके 5 वर्ण e='echo -ne \e';while :;do for i in {0..19};do for i in {0..40};do ((RANDOM<9))&&$e"[1;36m".||$e[1C;done;$e' ';done;$e[20A;done:।
मैनटवर्क

1
अंकगणित मूल्यांकन के अंदर आपको सतर्कता की आवश्यकता नहीं है। और आपके कोड के अंत में एक अनुगामी newline होना चाहिए। केवल 127 अक्षर होने चाहिए।
मैनटवर्क

1
मेरा मानना ​​है कि @manatwork का मतलब यह है कि आपको डबल कोष्ठक के अंदर डॉलर चिह्न का उपयोग करने की आवश्यकता नहीं है: ((RANDOM<9))बस काम करता है। इसके अलावा, आप इसके अंदर कुछ का उपयोग करके अपने कोड को दो के लिए {0..19}और {0..40}एक में जोड़कर सिकोड़ने का प्रयास कर सकते हैं । {0..819}$((i%41))
तोबिया

1
कोई मुझे रोको !! e='printf \e'2 चार से छोटा है e='echo -ne \e'!
तोबिया

1
और उपयोग करके एक और चार-ट्रिम करें$e[C
टोबिया

39

पायथन, 312 बाइट्स - 50 (हवा) = 262

from pygame import*
R=__import__('random').randint
t,u=640,480;init();d=display;s=d.set_mode((t,u))
w=[255]*3;r=range(t)
a=[[R(0,t),R(0,u),R(3,6)]for i in r]
while time.wait(9):
 d.flip();event.get();s.fill(R(0,99)<1and w)
 for i in r:x,y,z=a[i];draw.line(s,w,(x,y),(x+z,y+2*z));a[i][0]=(x+z)%t;a[i][1]=(y+z*2)%u

नमूना उत्पादन (एक 50-फ्रेम लूप):

वास्तविक प्लेपैक जिफ अनुमति की तुलना में काफी तेज है।


3
@ChristianCareaga मैं कर सकता था, लेकिन मुझे लगता है कि सफेद बेहतर दिखता है।
प्रिमो

8
मेरी नज़र में केवल समस्या: आप बारिश को पक्ष से देख रहे हैं, जबकि नियम एक निश्चित कैमरे को सीधे नीचे देखते हैं।
जोहान्स एच।

7
@JohannesH। या, यह एक बहुत, बहुत हवा का दिन है।
प्रिमो

20
मैं बिजली की कभी कभी चमक पसंद है! : पी
द गैट विथ द हैट

3
एक वर्ण पंक्ति के R=__import__("random").randintबजाय का उपयोग करके सहेज लिया जाता है from random...
सिमॉन

35

HTML / JS, 170 वर्ण - 20 = 150 अंक

<canvas id=c></canvas><script>d=400;with(c)width=height=d,t=getContext('2d');t.fillStyle='blue';setInterval("t.fillRect(Math.random()*d,Math.random()*d,5,5)",50)</script>

(sidenote: के लिए एक स्ट्रिंग पारित करके आगे golfed setInterval, with!, स्वत: आईडी चर नाम ... यह तो गलत लगता है shudders )

यह सिर्फ यादृच्छिक नीले आयतें खींचता है।

HTML / JS, 309 char - 20 - 50 = 239 अंक

अब हवा के साथ!

<canvas id=c></canvas><script>s=400;r=Math.random;with(c)width=height=s,t=getContext('2d');t.fillStyle='blue';o=[];setInterval("t.clearRect(0,0,s,s);for(i=0;++i<o.length;)d=o[i],t.fillRect(d[0],d[1],d[2],d[2]),d[0]+=1,d[1]+=2,d[2]-=1,d[2]<0?o.splice(i,1):0;if(r()<.6)o.push([r()*400,r()*400,20])",50)</script>


163 बाइट्स: <canvas id=c /><script>d=400;with(c)width=height=d,t=getContext('2d');t.fillStyle='blue';setInterval("t.fillRect(Math.random()*d,Math.random()*d,5,5)",50)</script>AAAHHH! मैंने इस्तेमाल किया with! मैं एक स्ट्रिंग को पास करने की तुलना में गंदा महसूस करता हूं setInterval: पी
नीट द डार्क एब्सोल

@NiettheDarkAbsol धन्यवाद;) ऐसा लगता है कि (कम से कम क्रोम पर) canvasऑटो-बंद नहीं हो सकता है, लेकिन इसके अलावा यह पूरी तरह से काम करता है! (इसके अलावा, स्वत: आईडी चर नाम का उपयोग करते हुए इतना गंदा लगता है के रूप में अच्छी तरह से: डी)
दरवाज़े

कुछ ब्राउज़र उस क्षेत्र में अधिक उदार लगते हैं ... लेकिन इसका उपयोग करने से बचा जाता है onload। मुझे कहना चाहिए कि मुझे @ फ्लोरेंट की नकल से बचने का तरीका पसंद हैMath.random()
नीट द डार्क एबसोल

canvasChrome में @Doorknob ऑटोक्लोज़ ! इस ब्राउज़र में मेरा उत्तर विकसित / परीक्षण किया गया था।
फ्लोरेंट

1
जमीन / पोखर में डूबने वाले ड्रिप के साथ दूसरे के लिए अपवोट करें।
ग्रीनएजजादे

34

JS + jQuery (172-20-50 = 102)

ब्राउज़र कंसोल में उस लाइन को कॉपी / पेस्ट करें (आमतौर पर F12 कुंजी दबाएं):

r=Math.random;w=$(window);setInterval("$('<b>♥</b>').css({color:'red',position:'fixed',top:r()*w.height(),left:r()*w.width()}).appendTo('body').animate({fontSize:0},3e3)",9)

वेलेंटाइन डे के लिए एनिमेटेड लाल दिलों की बारिश!

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


1
ठीक है, यह यथार्थवादी नहीं है। दिल स्क्रीन के ऊपर से आ रहे हैं और पृष्ठ के यादृच्छिक पदों पर चिपके रहते हैं। यह वास्तव में देखने की स्थिति से मेल नहीं खाता है।

10
AUGGGGHH! मैं इसे कैसे रोरूं?!
द गाइ हैट ​​विथ द हैट

1
@ user2509848 लेकिन क्या कोई और तरीका है?
द गाइ हैट ​​विथ द हैट

3
@ TheGuywithTheHat, पृष्ठ को पुनः लोड करें
माइकल एम।

19
प्रतिभाशाली! मुझे लगता है कि यह सवाल का दिल पकड़ लेता है।
andrewb

26

मेथेमेटिका

134 - 20 = 114

2 डी

n = 99; m = Array[0 &, {n, n}]; r := RandomInteger[{1, n}, {2}]
Table[ArrayPlot[m = ReplacePart[m, r ->  1], ColorRules -> {1 -> Blue}], {k, 250}];
Export["d.gif", d]

2 डी


3 डी

रेनड्रॉप का आकार z अक्ष के चारों ओर एक क्रांति भूखंड के माध्यम से बनाया गया है।

प्रारंभ में, बारिश एक ऐसे क्षेत्र के लिए उत्पन्न होती है जो प्रदर्शन क्षेत्र के ऊपर अच्छी तरह से फैलता है। गिरने वाली वर्षा की उपस्थिति को व्यू-पॉइंट को z- अक्ष के साथ ऊपर की ओर स्थानांतरित करके प्राप्त किया जाता है। (यह प्रत्येक रेनड्रॉप की स्थिति को पुन: परिकलित करने से अधिक कुशल है।)

बारिश

r = RandomInteger; z = Table[{r@30, r@30, r@160}, {100}];
w = RevolutionPlot3D[{.7 Sin[x] Cos[x], 0,   1.4 Sin[x] }, {x, 0, -Pi/2}, 
PerformanceGoal -> "Speed"][[1]];
c = Map[Translate[w, #] &, z]; 
p = Table[Graphics3D[c, PlotRange -> {k, k + 50}], {k, 1, 100}]
Export["p.gif", p]

हवा के साथ

हवा के साथ बारिश गिरने के लिए काफी उपरि है। लेकिन मैं वैसे भी यहां शामिल हूं।

नीले रंग की मंजिल बहुत अधिक {x, y} दृश्य क्षेत्र को ब्याज के क्षेत्र तक सीमित रखती है। कुछ ग्लिच हैं, लेकिन, ओह,

r = RandomInteger;
z = Table[{r@120, r@30, r@180}, {800}];
w = RevolutionPlot3D[{.7 Sin[x] Cos[x], 0,   1.4 Sin[x] }, {x, 
     0, -Pi/2}, PerformanceGoal -> "Speed"][[1]];
c = Map[Translate[w, #] &, z];
g[k_, z1_, w_, c1_] :=
 Module[{z2},
  z2 = Cases[z, {x_, _, _} /; 0 + k < x < 30 + k];
  c = Map[Translate[w, #] &, z2];
  Graphics3D[{Polygon[{{0 + k, 0, 1 + k}, {30 + k, 0, 1 + k}, {30 + k,
        30, 1 + k}, {0 + k, 30, 1 + k}}], c}, 
   PlotRange -> {k, k + 50}]]

p = Table[g[k, z, w, c], {k, 1, 100, 1}];
Export["p.gif", p]

हवा के साथ


सीधे ऊपर से

निकटतम रेनड्रॉप्स क्लिप किए गए हैं, लेकिन मैं इसे अनदेखा कर दूंगा।

3 डी के ऊपर से

m=40;
r=RandomInteger;
positions=Table[{r@m,r@m,r@1000},{800}];
g[lowZ_,pos_]:=
Module[{hiZ=lowZ+103},
Graphics3D[{PointSize[Small],White,Point[{{0,0,lowZ},{0,m,lowZ},{m,0,lowZ},{m,m,lowZ},{0,0,hiZ},{0,m,hiZ},{m,0,hiZ},{m,m,hiZ}}],
ImageSize-> 350,Sphere/@Cases[pos,{_,_,z1_}/;lowZ<z1<hiZ-2]},PlotRange->{lowZ,hiZ}, 
ViewPoint-> {0,0,1},ImagePadding->5]]

इसे अंडर 50 अक्षरों में साइड में शिफ्ट करें और आप अपना स्कोर कम करें। :)
अली कैगेलन

1
मुझे यह बहुत पसंद है

अंतिम एक के लिए +1, सही कैमरा कोण के साथ लेकिन आप भूल गए कि कैमरा बारिश के कुछ ब्लॉक करता है ....;)
GreenAsJade

@GreenAsJade, अब 3D (ऊपर से) दृश्य के लिए क्लिपिंग तय हो गई है।
डेविड एफसी

मीठा, लेकिन मैं आपके विचार से अधिक तुच्छ हो रहा था। मेरा मतलब था कि एक भौतिक कैमरा है जो इसे नीचे देख रहा है, इसलिए इसे बारिश की कुछ बूंदों को रोकना चाहिए:%)
GreenAsJade

10

HTML / जावास्क्रिप्ट, 156 123 (143 - 20)

<body bgcolor=0 onload="t=c.getContext('2d');t.fillStyle='#07d';setInterval('n=Math.random()*4e4;t.fillRect(n%270,n/150,1,1)',1)"><canvas id=c>

एनोटेट संस्करण:

<body bgcolor="#000">
<canvas id="c"></canvas>
<script>
  onload = function() {
    // Retrieve the rendering context
    t=c.getContext('2d');
    // Set rain color
    t.fillStyle='#07d';
    // Render whenever it is possible
    setInterval(function() {
      // Generate a number between 0 and 40,000
      // 40,000 ~= 270 * 150
      n=Math.random()*4e4;
      // Draw a raindrop.
      // Since x and y are not rounded, the raindrop looks blurry!
      t.fillRect(n%270,n/150,1,1)
    }, 1);
  };
</script>
</body>

7

स्मॉलटॉक (स्मॉलटाक / एक्स)

यादृच्छिक हवा के साथ ;-)

|BG CLR N1 H W v WIND drops gen newDrops draw remove move buffer|


BG := Color black.
CLR := Color blue lightened.
H := 100.
W := 100.
N1 := 10.
WIND := 0.
drops := OrderedCollection new.

gen := [:n | ((1 to:n) collect:[:i | Random nextIntegerBetween:1 and:W] as:Set) collect:[:x | x@0]].
newDrops := [drops addAll:(gen value:N1)].
draw := [buffer fill:BG; paint:CLR. drops do:[:d | buffer displayPoint:d]].
remove := [drops := drops reject:[:d | d y > H]].
move := [:wind | drops := drops collect:[:d| (d x + wind)\\W @ (d y + 1)]].
v := View new openAndWait.
buffer := Form extent:(v extent) depth:24 onDevice:v device.

[
    [v shown] whileTrue:[
        draw value.
        v displayForm:buffer.
        move value:WIND.
        remove value.
        newDrops value.
        WIND := (WIND+(Random nextBetween:-1 and:1)) clampBetween:-5 and:5.
        Delay waitForSeconds:0.1.
    ]
] fork.

देखने में उत्पादन: यहाँ छवि विवरण दर्ज करें


6
यह योग्य नहीं है क्योंकि यह बारिश गिरने का एक पक्ष दृश्य है, और बारिश जमीन से टकराने का नहीं है। फिर भी एक अच्छा हवा प्रभाव।

6

प्रसंस्करण, 94 - 20 = 74

void setup(){background(0);fill(0,0,255);}
void draw(){ellipse(random(0,99),random(0,99),3,3);}

(पठनीयता के लिए नई लाइन जोड़ी गई।)

ऑनलाइन डेमो के लिए यहां क्लिक करें


1
इन जैसी समस्याओं के लिए प्रसंस्करण वास्तव में अच्छा है।
cjfaure

यह फ़ायरफ़ॉक्स में नहीं देख सकता, डिफ़ॉल्ट सुरक्षा सेटिंग्स जावा एप्लेट को ब्लॉक करती हैं और यह मुझे नहीं बताती है कि कैसे ओवरराइड करना है। AFAIK में JavaScript के लिए एक प्रसंस्करण .js पोर्ट है, यदि आप इसे JS में परिवर्तित कर सकते हैं और एक लिंक पोस्ट कर सकते हैं जो मैं आभारी रहूंगा।
17

@marczellm मैं Ubuntu पर फ़ायरफ़ॉक्स 27.0 का उपयोग कर रहा हूँ और यह ठीक काम करता है। क्या आप सुनिश्चित हैं कि कोई भी संकेत नहीं है जो आपसे पूछ रहा है कि प्लगइन को अनुमति दें या ब्लॉक करें? मैं एक जेएस संस्करण पर भी एक नज़र डालूंगा।
ace_HongKongIndependence

@ace के बाद मैं सभी प्रॉमिस को "अनुमति" देने के लिए कहता हूं, एक सुरक्षा संदेश अभी भी इसे ब्लॉक करता है। जेएस संस्करण के लिए धन्यवाद।
marczellm

1
@marczellm ने उत्तर में जावास्क्रिप्ट संस्करण को जोड़ा, आनंद :) और सिर्फ एक अंधा अनुमान, हो सकता है कि आपका वर्तमान जावा प्लगइन संस्करण पुराना हो और सुरक्षा मुद्दों को ज्ञात हो
ace_HongKongInd डिपेंडेंस

5

दे घुमा के

while true;do echo " / / / / /";echo "/ / / / / ";done

मुझे यकीन नहीं है कि यह एक कोड गोल्फ होना चाहिए क्योंकि "बारिश" जैसा दिखना चाहिए, इस पर कोई सख्त आवश्यकता नहीं है।

संपादित करें: यदि आप चाहते हैं कि यह कैमरे की तरह दिखे तो यह सीधे उपयोग की ओर इशारा करता है:

while true;do echo " . . . . .";echo ". . . . . ";done

7
"कैमरा ठीक किया गया है: आप सीधे जमीन पर देख रहे हैं।" यह बारिश को ओर से देखने के लिए प्रतीत होता है?
भूमिगत

2
9 वर्ण सहेजें: while echo \ / / / / /;do echo / / / / /;done(या एक पुनरावर्ती फ़ंक्शन के साथ कुछ और लेकिन यह जल्दी से स्टैक को उड़ा देगा)। @undergroundmonorail कैमरे के सापेक्ष मजबूत हवा, विकर्ण।
गिलेस एसओ- बुराई को रोकना '

@ गिल्स उस मामले में, हम कर सकते हैं while echo -e '\e[0;34m / / / / /';do echo / / / / /;doneऔर इसे बोनस के साथ -13 से नीचे ले आओ :)
भूमिगत

4
यह रक्षात्मक रूप से बारिश की तरह नहीं दिख रहा है: D
कीवी

5
मुझे नहीं लगता कि इसे उत्तर के रूप में माना जाना चाहिए। संक्षेप में: यह यथार्थवादी नहीं है। विस्तृत तर्क: यदि मैंने प्रश्न को सही ढंग से व्याख्या किया है, तो बारिश अनियमित रूप से (या कम से कम छद्म-यादृच्छिक रूप से) गिरनी चाहिए और, लंबी अवधि में वितरण प्रति यूनिट क्षेत्र के समान होना चाहिए। (यह है कि बारिश कैसे काम करती है, ठीक है?) हालांकि इस जवाब में, यह गारंटी है कि किसी भी बारिश की बूंद के बगल में बारिश की बूंदें नहीं होंगी, इसलिए यदि हम इकाई क्षेत्र को एक वर्ण के क्षेत्र में ले जाते हैं, तो हम देखते हैं कि वितरण असमान है।
ace_HongKongIndependence 17

3

पायथन 2.7: 195 - 20 = 175

मुझे यकीन है कि यहां और भी बहुत कुछ किया जा सकता है, लेकिन यह वही है जो मुझे अभी मिला है:

import os,time
from random import*
l=[i[:]for i in[[' ']*100]*50]
while 1:
 os.system('clear')
 l[randint(0,49)][randint(0,99)]='.'
 print'\033[94m\n'.join(''.join(r)for r in l)
 time.sleep(.05)

मैं आउटपुट का gif पोस्ट करूँगा जब मुझे याद होगा कि मुझे यह कैसे करना है।

यह linux पर काम करता है। जगह 'clear'के साथ 'cls'बनाता है यह खिड़कियों पर काम करते हैं, लेकिन फिर एएनएसआई रंग काम नहीं करते हैं और मैं बोनस खो देते हैं।

मेरे पास एक-वर्ण स्ट्रिंग्स का 2 डी सरणी है, जिसे इनिशियलाइज़ किया गया है । प्रत्येक 0.05 सेकंड, उनमें से एक को यादृच्छिक सेट पर चुना जाता है ., और स्क्रीन को फिर से तैयार किया जाता है।

from random import*दो चरित्रों को दो बार import os,time,randomउपयोग करने से बचाता है random.randint(), हालांकि मुझे यकीन नहीं है कि वैसे भी सेल चुनने का सबसे अच्छा तरीका है। मैं उपयोग करना चाहता था random.choice()लेकिन मैं अपरिवर्तनीय स्ट्रिंग्स के चारों ओर एक रास्ता नहीं सोच सकता था जो इसे बचाने से अधिक वर्णों को बर्बाद नहीं करेगा।


3
l=[i[:]for i in[[' ']*100]*50], के अनुसार stackoverflow.com/a/6688361/1114687 । 198 - 20 = 178
n.st

ओह, वाह, मैंने ऐसा पहले कभी नहीं देखा। अगर मैं इसे सही ढंग से पढ़ रहा हूं, तो स्लाइस नोटेशन यह सुनिश्चित करने के अलावा कुछ भी नहीं करता है कि यह एक अनूठी सूची है और उसी के लिए एक और संदर्भ नहीं, सही? यह वास्तव में अच्छा है! धन्यवाद!
भूमिगत

मैंने मूल रूप से कोशिश की थी l=[[' ']*100]*50, लेकिन यह सिर्फ एक ही 100-तत्व सूची में 50 संदर्भ बनाता है, इसलिए मैंने इसे कम करने के लिए सबसे कम संभव तरीका खोजा और स्टैक ओवरफ्लो उत्तर को ऊपर से मिला।
n

2

132 + 27 - 20 - 50 = 89

जावास्क्रिप्ट (132)

r=Math.random;setInterval("$('body').append($('<i>∘</i>').css({left:r()*2e3,top:r()*2e3}).animate({left:'+=70',fontSize:0},500))",1)

सीएसएस (27)

i{color:blue;position:fixed

डेमो: http://jsfiddle.net/kelunik/5WC87/4/embedded/result/


यह साइड व्यू से है, यह फिलहाल क्वालीफाई नहीं करता है।

@BenH तुम सही हो, उस बिंदु से चूक गए, नया संस्करण अब मेरे उत्तर में है।
केलुनिक

ऐसा लगता है जैसे फ़ायरफ़ॉक्स कंसोल में अपने कोड की कोशिश करते समय कुछ नहीं होता है: /

@BenH यही कारण है कि एक jsfiddle- डेमो है।
केलुनिक

यह नहीं देखा। धन्यवाद

1

प्रसंस्करण, 62 - 20 = 42

void draw(){stroke(0,0,214);point(random(0,99),random(0,99));}

सफेद पृष्ठभूमि पर नीले रंग के पिक्सेल बनाता है। यहां एक समान भाषा में प्रदर्शन: https://www.khanacademy.org/cs/rain2/6172053633761280


अत्यधिक चंचलता के लिए अप्रचलित +1।
प्राइमो

1

प्रसंस्करण। जेएस, 86 - 20 = 66

... लेकिन यह भी धीरे-धीरे मिटता है (जमीन प्राकृतिक रूप से बारिश को अवशोषित करती है)। उसके लिए अंक?

g=99;r=random;void draw(){fill(0,9);rect(0,0,g,g);fill(0,g,r(g));rect(r(g),r(g),2,2);}

बोनस सुविधाओं में हरे और नीले रंग के बीच भिन्नता है (यह स्पष्ट रूप से गंदा 'शहर' बारिश) है।

इसके अलावा, मुझे बहुत खुशी हुई कि मुझे यहां एक जावास्क्रिप्ट हैक का उपयोग करने के लिए मिला; ध्यान दें, क्योंकि यह प्रसंस्करण है। js , आप जी = 99 के typeless घोषणा, या की उर्फ जैसी चीजों में फेंक कर सकते हैं rके लिए random(क्रॉस-भाषा उर्फ!)।

किसी भी अन्य विचारों को छोटा करने के लिए?

पठनीय संस्करण:

g = 99;
r = random;                  // Javascript trickery
void draw() {
    fill(0, 9);
    rect(0, 0, g, g);        // Fade the background
    fill(0, r(g), r);
    rect(r(g), r(g), 2, 2);  // Add a new drop
}

पूरी बात यहां देखी जा सकती है

... प्लस एक और संस्करण बिना फीका: 58 - 20 = 38

यदि आप लुप्त होती पसंद नहीं करते हैं और ग्रे गंदगी का मन नहीं करते हैं:

r=random;void draw(){fill(0,0,255);rect(r(99),r(99),2,2);}

1

Tcl / Tk, 139 - 20 = 119

मेरे अपने उत्तर का पुनः उपयोग करना http://codegolf.stackexchange.com/a/143018/29325

इंटरैक्टिव शेल में चलाया जाना चाहिए

gri [can .c -w 40 -he 40]
set x 0
wh 1 {.c cr o $x [set y [exp int(rand()*40)]] $x [set x $y] -f #[form %06x [exp int(rand()*255**3)]]
upd}

दुर्भाग्य से, expr int(rand()*एक procस्क्रिप्ट में परिवर्तित करना एक बाइट अधिक है!

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

रोकने के लिए, किसी को अक्षम "एक्स" बटन पर क्लिक करना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.