-
-
Save ondras/2321944 to your computer and use it in GitHub Desktop.
function(){ | |
/* Rules: | |
(1) anonymous function // make sure | |
(2) may be self-executing // to annotate | |
(3) <=140 bytes // your code | |
(4) no globals // so everyone | |
(5) MIT license // can learn | |
(6) have a good time! // from it! | |
*/} |
function(){/*Rules: (1) anonymous function (2) may be self-executing (3) <=140 bytes (4) no globals (5) MIT license (6) have a good time!*/} |
Copyright (c) 2011 YOUR_NAME_HERE, YOUR_URL_HERE | |
Permission is hereby granted, free of charge, to any person obtaining | |
a copy of this software and associated documentation files (the | |
"Software"), to deal in the Software without restriction, including | |
without limitation the rights to use, copy, modify, merge, publish, | |
distribute, sublicense, and/or sell copies of the Software, and to | |
permit persons to whom the Software is furnished to do so, subject to | |
the following conditions: | |
The above copyright notice and this permission notice shall be | |
included in all copies or substantial portions of the Software. | |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | |
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | |
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
{ | |
"name": "140bytes", | |
"keywords": [ "140bytes", "master", "rules" ] | |
} |
@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)}``
@xpansive
"r" will leak to the global scope.
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)}
Whoops, totally missed that.
@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 :-)
@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)}
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)}