비오는 날이야


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

Tobia에 축하드립니다!


51
첫 단락이 실화가 아니길 진심으로 바랍니다.
Kendall Frey

1
@DavidCarraher 네, 마치 하늘을보고있는 것처럼 바닥을보고 있습니다.

8
너무 많은 관용 잠재적 출력에있어 나는이 코드 골프 있어야한다고 생각하지 않는다
Cruncher의

4
이 렌더링을위한 카메라 위치와 함께 첫 번째 단락은 상당히 무섭습니다.
Tobia

답변:


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

* : 대부분의 APL 구현은 APL 기호를 상위 128 바이트 값에 매핑하는 (레거시) 단일 바이트 문자 집합을 지원합니다. 따라서 골프를 목적으로 ASCII 문자와 APL 기호 만 사용 하는 프로그램 은 chars = bytes로 점수를 매길 수 있습니다.

OS X 터미널의 Node.js에서 Nick의 최신 apl.js 에서 테스트했습니다 . 그러나 나는 그의 방언에 특정한 것을 사용하지 않았으므로 ANSI 터미널에서 실행할 수 있고 Linux 용 Dyalog 또는 Raspberry PI와 같은 d-funs {...}, strand assignment (a b)←...및 통근을 지원하는 최신 APL에서 작동해야합니다. ⎕IO←0)

라인 1 (1 바이트 인) 리터럴 제어 문자이다. Ctrl-V EscLinux 터미널이나 Vim 또는 Alt-027Windows 와 같은 것으로 사용하여 입력 할 수 있습니다 . 또한 터미널 크기를 감지하는 신뢰할 수있는 방법을 찾을 수 없으므로 마지막 줄의 끝에서 행과 열의 수를 편집 할 수 있습니다.

나는 각 빗방울이 다음과 같은 형태를 겪는다는 사실에 의해 50 보너스를 방어합니다 ⍟∘.. 실제로 아래의 gif를 보면 바닥에서 사라지기 전에 각 방울이 아래쪽과 왼쪽으로 부드럽게 움직이는 느낌이들 것입니다.

언 골프 버전 :

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

산출:

여기에 이미지 설명을 입력하십시오


APL, 다른 스타일

경쟁에서 벗어난.

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

여기서 나의 목표는 빗방울이 경사지게 떨어지고 땅에 쌓이는 느낌을 주면서 평균적으로 눈에 띄는 방울 (떨어지거나 산산조각이 나는 수)을 일정하게 유지하려고 노력하는 것입니다. 비결은 /매주기마다 여러 개의 새로운 낙하 방울을 생성 하고 낙하 방울이 이동하는 산산이 부서진 물방울을 "닦아내는"것입니다.

결과는 매트릭스 코드를 이상하게 생각 나게합니다.

출력
(5 초마다 저크가 gif 반복입니다)

여기에 이미지 설명을 입력하십시오


이것은 좋지만 ESC 문자가 올바르게 인쇄되지 않는다고 생각합니다. i.stack.imgur.com/vLERQ.png gedit로 코드를 붙여 넣을 시도했지만 작동하지 않았습니다.
Riking

당신은 당신의 점수를 잘못 얻었다. 질문은 "chars"가 아니라 "bytes"입니다.
jazzpi

1
@Riking 나는 그 부분을 편집했다. 다시 시도하면 작동합니다.
Tobia

@Tobia IBM 5100에 앉아있는 사진을 보여 주시면 chars = bytes 인수를 사겠습니다.
primo


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 바이트로 단축되었습니다. 두 번째 편집 : @manatwork 및 @Tobia의 제안과 추가 영감으로 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.
manatwork

1
계산 내부의시길이 필요하지 않습니다. 그리고 코드 끝에 줄 바꿈이 있어야합니다. 127 자 여야합니다.
manatwork

1
@manatwork의 의미는 이중 괄호 안에 달러 기호를 사용할 필요가 없다는 ((RANDOM<9))것입니다. 또한 내부 와 같은 것을 사용하여 for {0..19}{0..40}single for를 둘로 결합하여 코드를 축소 할 수 있습니다. {0..819}$((i%41))
Tobia

1
누군가 나를 멈춰라 !! e='printf \e'보다 2 char 더 짧습니다 e='echo -ne \e'!
Tobia

1
그리고 사용하여 다른 문자를 트림$e[C
Tobia

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 프레임 루프) :

실제 플레이 팩은 gif가 허용하는 것보다 훨씬 빠릅니다.


3
@ChristianCareaga 할 수는 있지만 흰색이 더 좋아 보인다고 생각합니다.
primo

8
내 눈에만 문제가 있습니다 : 당신은 옆에서 비를보고 있습니다.
Johannes H.

7
@JohannesH. 아니면 매우 바람이 많이 부는 날입니다.
primo February

20
나는 가끔 번쩍이는 번개를 좋아한다! : P
모자

3
하나 개의 문자를 사용하여 저장됩니다 R=__import__("random").randint대신의 from random...라인.
SimonT

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>

((!) 참고 : 문자열을 전달하여 더 golfed setInterval, with!의 자동 ID 변수 이름은 ... 그렇게 잘못된 느낌 떤다를 )

임의의 파란색 사각형을 그립니다.

HTML / JS, 309 자-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다음과 같이 전달하는 것보다 더 더러운 느낌을 느낀다 . : p
Niet the Dark Absol

@NiettheDarkAbsol Thanks;) (최소한 Chrome에서는) canvas자동 종료 할 수 없지만 완벽하게 작동하지 않는 것 같습니다 ! (또한 자동 ID 변수 이름을 사용하면 너무 더럽습니다 : D)
Doorknob

일부 브라우저는 해당 영역에서 좀 더 관대 해 보이지만 onload. 나는 Math.random()
@Florent의

canvasChrome에서 @Doorknob 자동 닫기 ! 내 답변은이 브라우저에서 개발 / 테스트되었습니다.
Florent

1
드립이지면 / 웅덩이에 가라 앉히면서 두 번째 것을 높이십시오.
GreenAsJade

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
8 월! 어떻게 막을까요?!
모자와 사람

1
@ user2509848 그러나 다른 방법이 있습니까?
모자와 사람

3
@TheGuywithTheHat, 페이지를 새로 고침
Michael M.

19
훌륭한! 이것이 문제의 핵심을 포착한다고 생각합니다.
andrewb 2013

26

매스 매 티카

134-20 = 114

2D

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]

2D


3D

빗방울 모양은 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]

바람과 함께


바로 위에서

가장 가까운 빗방울이 잘리지 만 간과 할 것입니다.

위의 3D

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 자 미만으로 옆으로 이동하면 점수가 낮아집니다. :)
Ali Caglayan

1
나는 이것을 좋아합니다

마지막 카메라 +1, 올바른 카메라 각도로 카메라가 비의 일부를 차단하는 것을 잊었습니다 ....;)
GreenAsJade

@GreenAsJade, (위에서) 3D 시점의 클리핑이 수정되었습니다.
DavidC

달콤하지만 생각보다 더 경박했습니다. 물리적 카메라가 아래를 내려다보고 있다는 의미이므로 빗방울 중 일부를 차단해야합니다. : %)
GreenAsJade

10

HTML / JavaScript, 156123 (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

스몰 토크 (Smalltalk / X)

임의의 바람으로 ;-)

|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

Firefox에서 볼 수 없으며 기본 보안 설정이 Java 애플릿을 차단하며 재정의 방법을 알려주지 않습니다. AFAIK JavaScript로 Processing.js 포트가 있습니다. JS로 변환하고 링크를 게시 할 수 있다면 감사하겠습니다.
marczellm

@marczellm 우분투에서 Firefox 27.0을 사용하고 있으며 정상적으로 작동합니다. 플러그인 허용 여부를 묻는 프롬프트가 표시되지 않습니까? JS 버전도 살펴볼 것입니다.
ace_HongKongIndependence

@ace 모든 프롬프트에 "허용"을 지시 한 후에도 여전히 보안 메시지가이를 차단합니다. JS 버전에 감사드립니다.
marczellm

1
@marczellm은 답변에 자바 스크립트 버전을 추가했습니다. :) 그리고 그냥 눈 먼 추측 일 것입니다. 아마도 현재 자바 플러그인 버전이 오래되었고 알려진 보안 문제를 가지고있을 것입니다
ace_HongKongIndependence

5

세게 때리다

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

"비"가 어떻게 생겼는지에 대한 엄격한 요구 사항이 없기 때문에 이것이 코드 골프인지 확실하지 않습니다.

편집 : 카메라가 똑바로 향하는 것처럼 보이게하려면 다음을 사용하십시오.

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

7
"카메라가 고정되어 있습니다.지면을 똑바로보고 있습니다." 옆에서 비가 내리고있는 것 같습니까?
undergroundmonorail

2
9 문자를 저장하십시오 : while echo \ / / / / /;do echo / / / / /;done(또는 재귀 기능으로 몇 개 더 있지만 스택을 빠르게 날려 버릴 것입니다) @undergroundmonorail 강한 바람, 카메라를 기준으로 한 대각선.
Gilles 'SO- 악마 그만두 다'

@Gilles이 경우, while echo -e '\e[0;34m / / / / /';do echo / / / / /;done보너스로 -13까지 얻을 수 있습니다 :)
undergroundmonorail

4
비처럼 보이지 않습니다. : D
Kiwy

5
나는 이것이 이것이 대답으로 간주되어야한다고 생각하지 않습니다. 요컨대 현실적이지 않다. 상세한 논증 : 내가 질문을 올바르게 해석했다면, 비는 무작위로 (또는 적어도 의사 난수로) 떨어지고, 장기간에 걸쳐 분포는 단위 면적당 비슷해야합니다. (이것은 비가 어떻게 작용 하는가, 맞습니까?) 그러나이 답변에서, 어떤 빗방울 옆에도 빗방울이 없음을 보장하므로 단위 면적을 한 문자의 면적으로 설정하면 분포가 고르지 않습니다.
ace_HongKongIndependence

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를 게시 할 것입니다.

이것은 리눅스에서 작동합니다. 교체 'clear''cls'는 윈도우에서 작동 만들지 만, 다음 ANSI 색상은 작업을하지 않는 나는 보너스를 잃게됩니다.

로 초기화 된 1 문자 문자열의 2D 배열이 있습니다. 0.05 초마다이 중 하나가 임의로로 설정되어 선택되고 .화면이 다시 그려집니다.

from random import*어쨌든 셀을 선택하는 가장 좋은 방법이라고 확신하지는 않지만 두 문자 import os,time,randomrandom.randint()두 번 이상 저장하고 두 번 사용 합니다. 사용하고 싶었지만 random.choice()저장된 것보다 더 많은 문자를 낭비하지 않는 불변 문자열 주위의 방법을 생각할 수 없었습니다.


3
l=[i[:]for i in[[' ']*100]*50], 당 stackoverflow.com/a/6688361/1114687 .
198-20

와우, 전에는 본 적이 없어 올바르게 읽으면 슬라이스 표기법이 고유 한 목록인지 확인하고 동일한 목록에 대한 다른 참조가 아닌지 확인하십시오. 맞습니까? 정말 멋지다! 감사합니다!
undergroundmonorail

나는 원래 시도 l=[[' ']*100]*50했지만 동일한 100 요소 목록에 대한 50 개의 참조를 생성하므로이를 피할 수있는 가장 짧은 방법을 검색하고 위에 링크 된 스택 오버플로 응답을 찾았습니다.
n.st

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)

CSS (27)

i{color:blue;position:fixed

데모 : http://jsfiddle.net/kelunik/5WC87/4/embedded/result/


측면에서 볼 때 현재로서는 자격이 없습니다.

@ Benen 당신이 맞아요, 그 시점을 놓쳤다, 새로운 버전은 지금 내 대답에 있습니다.
kelunik

firefox 콘솔에서 코드를 시도 할 때 아무 일도 일어나지 않는 것 같습니다 : /

@BenH 그래서 jsfiddle-demo가있는 이유입니다.
kelunik

그것을 보지 못했습니다. 감사합니다


1

Processing.js, 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);}

보너스 기능에는 초록색과 푸른 색 (다양한 '도시'비)이 다양합니다.

또한 여기에서 JavaScript 해킹을 사용해야한다는 것이 매우 기뻤습니다. 처리 중이므로주의하십시오. js 라면, g = 99의 typeless 선언이나 rfor의 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만드는 스크립트는 더 한 바이트가있다!

여기에 이미지 설명을 입력하십시오

멈추려면, 불가능한 "X"버튼을 클릭하기 만하면됩니다.

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