Skip to content

Instantly share code, notes, and snippets.

@ondras
Forked from 140bytes/LICENSE.txt
Created April 6, 2012 18:34
Show Gist options
  • Save ondras/2321944 to your computer and use it in GitHub Desktop.
Save ondras/2321944 to your computer and use it in GitHub Desktop.
Sierpinski triangle - 140byt.es
function(){
/* Rules: // make sure
(1) anonymous function // to annotate
(2) optionally self-executing // your code
(3) <140 bytes // so everyone
(4) no global vars // can learn
(5) MIT license // from it!
(6) good luck!
*/}
function(){/*Rules: (1) anonymous function (2) optionally self-executing (3) <140 bytes (4) no global vars (5) MIT license (6) good luck!*/}
{
"name": "sample",
"keywords": [ "sample", "original" ]
}
@williammalo
Copy link

9 bytes smaller:
function(c,s,i,a,b,r){for(a=b=0;i--;r=Math.random())c.fillRect(a=(r>2/3&&s)+a>>1,b=(r<1/3&&s)+b>>1,1,1)}

@xpansive
Copy link

xpansive commented Apr 6, 2012

@williammalo
Results will be different though, because r will be undefined the first time the loop runs. This should work and be a byte smaller too:

``` function(c,s,i,a,b){for(a=b=0;i--;)r=Math.random(),c.fillRect(a=(r>2/3&&s)+a>>1,b=(r<1/3&&s)+b>>1,1,1)}``

@williammalo
Copy link

@xpansive
"r" will leak to the global scope.

@williammalo
Copy link

Also, 20 bytes smaller than the original:
function(c,s,i,a,b,r){for(;i--;r=Math.random()_3)c.fillRect(a=(r>2)_s+a>>1,b=(r<1)*s+b>>1,1,1)}

@xpansive
Copy link

xpansive commented Apr 7, 2012

Whoops, totally missed that.

@ondras
Copy link
Author

ondras commented Apr 7, 2012

@williammalo
Thanks a lot for your improvements; I adjusted the code according to your last variant. Values "a" and "b" are now rounded each iteration (difference from my original version), but I suppose that is not a problem :-)

@williammalo
Copy link

@ondra Thanks! :)
1 byte smaller!:
function(c,s,i,a,b,r){for(;i--;r=Math.random()_3)c.fillRect(a=(r>2)_s+a>>1,b=!~~r*s+b>>1,1,1)}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment