From f172764c5dc408dbd5d339c453ce230a36e25808 Mon Sep 17 00:00:00 2001 From: Riley Shaw Date: Tue, 2 Sep 2014 10:41:46 -0700 Subject: [PATCH] Update 2014-09-02T17:41:46.034Z --- index.html | 25 ++++++++++++++++++++++++- main.css | 2 +- terra.demo.min.js | 4 ++-- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index f7d0c53..b55f949 100644 --- a/index.html +++ b/index.html @@ -156,7 +156,30 @@ terra.registerCreature({ bbTerrarium.grid = bbTerrarium.makeGridWithDistribution([['plant', 50], ['brute', 5], ['bully', 5]]); bbTerrarium.animate(); -

If you come up with a cool example, let me know! I'll add it to this list and credit you.

+

Rule 146

+
var elementary = new terra.Terrarium(150, 150);
+
+factory.registerCA({
+  type: 'elementary',
+  alive: false,
+  ruleset: [1, 0, 0, 1, 0, 0, 1, 0].reverse(), // rule 146
+  colorFn: function () { return this.alive ? this.color + ',1' : '0,0,0,0'; },
+  process: function (neighbors, x, y) {
+    if (this.age === y) {
+      var index = neighbors.filter(function (neighbor) { return neighbor.coords.y === y - 1;
+      }).map(function (neighbor) { return neighbor.creature.alive ? 1 : 0; });
+      index = parseInt(index.join(''), 2);
+      this.alive = isNaN(index) ? !x : this.ruleset[index];
+    }
+    return false;
+  }
+});
+
+elementary.grid = elementary.makeGrid('elementary');
+elementary.animate();
+ + +

If you come up with a cool example, let me know! I'll add it to this list and credit you.

Creatures

Creatures are registered with

terra.registerCreature(options, init)
or
terra.registerCA(options, init)
for cellular automata.

diff --git a/main.css b/main.css index 64ca907..da13d70 100755 --- a/main.css +++ b/main.css @@ -1 +1 @@ -@font-face{font-family:icomoon;src:url(icomoon.eot?it882c);src:url(icomoon.eot?#iefixit882c) format('embedded-opentype'),url(icomoon.woff?it882c) format('woff'),url(icomoon.ttf?it882c) format('truetype'),url(icomoon.svg?it882c#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" icon-"],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-play:before{content:"\e600"}.icon-stop:before{content:"\e601"}.icon-github:before{content:"\e602"}code[class*=language-],pre[class*=language-]{color:#f8f8f2;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono',monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.important{font-weight:700}.token.entity{cursor:help}.fullPage,body,html{height:100%;width:100%}body{margin:0;font-family:Open Sans,sans-serif;color:#bbb;background:#222}a{color:#bbb}a:focus{outline:0;color:#ff69b4!important}.main{line-height:1.5em;width:50%;padding-top:1.5em;margin:0 auto;font-size:24px}.main canvas{display:block;margin:1em auto}.canvasWrapper{position:relative}.canvasWrapper button{position:absolute;top:50%;left:50%;height:60px;width:60px;margin:-30px;border:0;border-radius:30px;outline:0;font-size:36px;background:rgba(255,255,255,.3);cursor:pointer}.playing .icon-play,.stopped .icon-stop{display:none}.vcent{height:100%;display:inline-block;vertical-align:middle}.sticky nav{position:fixed;top:0;left:0}.sticky .main{margin-top:60px}.splash{position:relative;overflow:hidden;font-size:0;text-align:center;background:#222}.splash canvas{position:absolute;top:0;left:0}header{z-index:1;position:relative;width:20em;display:inline-block;vertical-align:middle;font-size:1rem;color:#fff;background:rgba(0,0,0,.7)}header h1 span{vertical-align:super;font-size:16px}header p{line-height:normal;font-size:1rem}header .downArrow{display:block;font-size:24px;padding-bottom:1em;text-decoration:none;color:#fff}nav{z-index:1;height:60px;line-height:60px;width:100%;font-size:0;background:#bbb;-webkit-box-shadow:0 1px 2px #444;box-shadow:0 1px 2px #444}nav a{text-decoration:none;color:#222}nav ul{margin:0;padding:0 10%;list-style:none;font-size:1rem;text-align:justify}nav ul:after{content:"";display:inline-block;width:100%}nav li{display:inline-block}h2{margin-top:1.5em}.mono,h4{font-family:monospace;font-weight:400}.defaults,.defaults ul{list-style:none;padding-left:0}.defaults li{margin-top:1em}.defaults>li{margin-bottom:1em;padding:1em;background:#272822}.defaults h4{margin:0}.defaults p{margin:1em 0 .5em}pre{font-size:16px}a.question{font-size:18px;font-weight:700;text-decoration:none;color:#6e6e6e}footer{height:96px;line-height:96px;margin-top:5em;text-align:center;background:#111;-webkit-box-shadow:-6px 0 6px #222 inset;box-shadow:-6px 0 6px #222 inset} \ No newline at end of file +@font-face{font-family:icomoon;src:url(icomoon.eot?it882c);src:url(icomoon.eot?#iefixit882c) format('embedded-opentype'),url(icomoon.woff?it882c) format('woff'),url(icomoon.ttf?it882c) format('truetype'),url(icomoon.svg?it882c#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" icon-"],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-play:before{content:"\e600"}.icon-stop:before{content:"\e601"}.icon-github:before{content:"\e602"}code[class*=language-],pre[class*=language-]{color:#f8f8f2;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono',monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.important{font-weight:700}.token.entity{cursor:help}.fullPage,body,html{height:100%;width:100%}body{margin:0;font-family:Open Sans,sans-serif;color:#bbb;background:#222}a{color:#bbb}a:focus{outline:0;color:#ff69b4!important}.main{line-height:1.5em;width:50%;padding-top:1.5em;margin:0 auto;font-size:24px}.main canvas{display:block;margin:1em auto}.canvasWrapper{position:relative}.canvasWrapper button{position:absolute;top:50%;left:50%;height:60px;width:60px;margin:-30px;border:0;border-radius:30px;outline:0;font-size:36px;background:rgba(255,255,255,.3);cursor:pointer}.playing .icon-play,.stopped .icon-stop{display:none}.vcent{height:100%;display:inline-block;vertical-align:middle}.sticky nav{position:fixed;top:0;left:0}.sticky .main{margin-top:60px}.splash{position:relative;overflow:hidden;font-size:0;text-align:center;background:#222}.splash canvas{position:absolute;top:0;left:0}header{z-index:1;position:relative;display:inline-block;vertical-align:middle;width:20em;padding:0 2em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:1rem;color:#fff;background:rgba(0,0,0,.7)}header h1 span{vertical-align:super;font-size:16px}header p{line-height:normal;font-size:1rem}header .downArrow{display:block;font-size:24px;padding-bottom:1em;text-decoration:none;color:#fff}nav{z-index:1;height:60px;line-height:60px;width:100%;font-size:0;background:#bbb;-webkit-box-shadow:0 1px 2px #444;box-shadow:0 1px 2px #444}nav a{text-decoration:none;color:#222}nav ul{margin:0;padding:0 10%;list-style:none;font-size:1rem;text-align:justify}nav ul:after{content:"";display:inline-block;width:100%}nav li{display:inline-block}h2{margin-top:1.5em}.mono,h4{font-family:monospace;font-weight:400}.defaults,.defaults ul{list-style:none;padding-left:0}.defaults li{margin-top:1em}.defaults>li{margin-bottom:1em;padding:1em;background:#272822}.defaults h4{margin:0}.defaults p{margin:1em 0 .5em}pre{font-size:16px}a.question{font-size:18px;font-weight:700;text-decoration:none;color:#6e6e6e}footer{height:96px;line-height:96px;margin-top:5em;text-align:center;background:#111;-webkit-box-shadow:-6px 0 6px #222 inset;box-shadow:-6px 0 6px #222 inset} \ No newline at end of file diff --git a/terra.demo.min.js b/terra.demo.min.js index 2a0fa4a..920af9d 100755 --- a/terra.demo.min.js +++ b/terra.demo.min.js @@ -1,2 +1,2 @@ -Function.prototype.bind||(Function.prototype.bind=function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),n=this;return fNOP=function(){},fBound=function(){return n.apply(this instanceof fNOP&&e?this:e,t.concat(Array.prototype.slice.call(arguments)))},fNOP.prototype=this.prototype,fBound.prototype=new fNOP,fBound}),!function(e,t){"function"==typeof define&&define.amd?define("smoothScroll",t(e)):"object"==typeof exports?module.exports=t(e):e.smoothScroll=t(e)}(this,function(e){"use strict";var t,n={},r=!!document.querySelector&&!!e.addEventListener,i={speed:500,easing:"easeInOutCubic",offset:0,updateURL:!0,callbackBefore:function(){},callbackAfter:function(){}},o=function(e,t,n){if("[object Object]"===Object.prototype.toString.call(e))for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.call(n,e[r],r,e);else for(var i=0,o=e.length;o>i;i++)t.call(n,e[i],i,e)},a=function(e,t){var n={};return o(e,function(t,r){n[r]=e[r]}),o(t,function(e,r){n[r]=t[r]}),n},u=function(e){for(var t,n=String(e),r=n.length,i=-1,o="",a=n.charCodeAt(0);++i=1&&31>=t||127==t||0===i&&t>=48&&57>=t||1===i&&t>=48&&57>=t&&45===a?"\\"+t.toString(16)+" ":t>=128||45===t||95===t||t>=48&&57>=t||t>=65&&90>=t||t>=97&&122>=t?n.charAt(i):"\\"+n.charAt(i)}return o},c=function(e,t){var n;return"easeInQuad"===e&&(n=t*t),"easeOutQuad"===e&&(n=t*(2-t)),"easeInOutQuad"===e&&(n=.5>t?2*t*t:-1+(4-2*t)*t),"easeInCubic"===e&&(n=t*t*t),"easeOutCubic"===e&&(n=--t*t*t+1),"easeInOutCubic"===e&&(n=.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),"easeInQuart"===e&&(n=t*t*t*t),"easeOutQuart"===e&&(n=1- --t*t*t*t),"easeInOutQuart"===e&&(n=.5>t?8*t*t*t*t:1-8*--t*t*t*t),"easeInQuint"===e&&(n=t*t*t*t*t),"easeOutQuint"===e&&(n=1+--t*t*t*t*t),"easeInOutQuint"===e&&(n=.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t),n||t},s=function(e,t,n){var r=0;if(e.offsetParent)do r+=e.offsetTop,e=e.offsetParent;while(e);return r=r-t-n,r>=0?r:0},l=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},f=function(e){return e&&"object"==typeof JSON&&"function"==typeof JSON.parse?JSON.parse(e):{}},p=function(e,t){history.pushState&&(t||"true"===t)&&history.pushState({pos:e.id},"",window.location.pathname+e)};return n.animateScroll=function(t,n,r,o){var g=a(g||i,r||{}),d=f(t?t.getAttribute("data-options"):null);g=a(g,d),n="#"+u(n.substr(1));var h,y,m,v=document.querySelector("[data-scroll-header]"),b=null===v?0:v.offsetHeight+v.offsetTop,w=e.pageYOffset,x=s(document.querySelector(n),b,parseInt(g.offset,10)),E=x-w,j=l(),k=0;t&&"a"===t.tagName.toLowerCase()&&o&&o.preventDefault(),p(n,g.updateURL);var O=function(r,i,o){var a=e.pageYOffset;(r==i||a==i||e.innerHeight+a>=j)&&(clearInterval(o),g.callbackAfter(t,n))},S=function(){k+=16,y=k/parseInt(g.speed,10),y=y>1?1:y,m=w+E*c(g.easing,y),e.scrollTo(0,Math.floor(m)),O(m,x,h)},C=function(){g.callbackBefore(t,n),h=setInterval(S,16)};0===e.pageYOffset&&e.scrollTo(0,0),C()},n.init=function(e){if(r){t=a(i,e||{});var u=document.querySelectorAll("[data-scroll]");o(u,function(e){e.addEventListener("click",n.animateScroll.bind(null,e,e.hash,t),!1)})}},n}),self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{};var Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content)):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(d instanceof r)){s.lastIndex=0;var h=s.exec(d);if(h){f&&(p=h[1].length);var y=h.index-1+p,h=h[0].slice(p),m=h.length,v=y+m,b=d.slice(0,y+1),w=d.slice(v+1),x=[g,1];b&&x.push(b);var E=new r(a,l?t.tokenize(h,l):h);x.push(E),w&&x.push(w),Array.prototype.splice.apply(i,x)}}}}}return i},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[],r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(r&&r.length)for(var i,o=0;i=r[o++];)i(n)}}},n=t.Token=function(e,t){this.type=e,this.content=t};if(n.stringify=function(e,r,i){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(function(t){return n.stringify(t,r,e)}).join("");var o={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};"comment"==o.type&&(o.attributes.spellcheck="true"),t.hooks.run("wrap",o);var a="";for(var u in o.attributes)a+=u+'="'+(o.attributes[u]||"")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'" '+a+">"+o.content+""},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(i,t.languages[r])))),self.close()},!1),self.Prism):self.Prism;var r=document.getElementsByTagName("script");return r=r[r.length-1],r&&(t.filename=r.src,document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),Prism.languages.markup={comment://g,prolog:/<\?.+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\&#?[\da-z]{1,8};/gi},Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//g,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*?(\r?\n|$)/g,lookbehind:!0}],string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/gi,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/gi,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g},Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/gi,inside:{tag:{pattern:/|<\/script>/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}}),Prism.languages.bash=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])(#.*?(\r?\n|$))/g,lookbehind:!0},string:{pattern:/("|')(\\?[\s\S])*?\1/g,inside:{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^\}]+\})/g}},keyword:/\b(if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)\b/g}),Prism.languages.insertBefore("bash","keyword",{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^}]+\})/g}),Prism.languages.insertBefore("bash","comment",{important:/(^#!\s*\/bin\/bash)|(^#!\s*\/bin\/sh)/g}),function(e,t,n,r,i,o,a){e.GoogleAnalyticsObject=i,e[i]=e[i]||function(){(e[i].q=e[i].q||[]).push(arguments)},e[i].l=1*new Date,o=t.createElement(n),a=t.getElementsByTagName(n)[0],o.async=1,o.src=r,a.parentNode.insertBefore(o,a)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-49939229-4","auto"),ga("send","pageview"),function e(t,n,r){function i(a,u){if(!n[a]){if(!t[a]){var c="function"==typeof require&&require;if(!u&&c)return c(a,!0);if(o)return o(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var l=n[a]={exports:{}};t[a][0].call(l.exports,function(e){var n=t[a][1][e];return i(n?n:e)},l,l.exports,e,t,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a=s&&!g?(document.body.className="sticky",d.stop(),g=!0):s>e&&g&&(document.body.className="",d.animate(),g=!1)}function n(e,t){var n=e.canvas,r=n.parentNode,i=n.nextElementSibling,o=document.createElement("div"),a=document.createElement("button"),u=document.createElement("button");a.className="icon-play",u.className="icon-stop",o.className="canvasWrapper stopped",o.appendChild(n),o.appendChild(a),o.appendChild(u),i?r.insertBefore(o,i):r.appendChild(o),a.addEventListener("click",function(){o.className="canvasWrapper playing",e.animate(t,function(){u.click()})},!1),u.addEventListener("click",function(){o.className="canvasWrapper stopped",e.stop(),e.grid=e.distributed?e.makeGridWithDistribution(e.initial):e.makeGrid(e.initial)},!1)}var r=e("../../app/terrarium.js");e("./bugs.js");var i=document.getElementById("scroller1"),o=document.getElementById("header"),a=document.getElementById("gol"),u=document.getElementById("cyclic");bbExample=document.getElementById("brutesAndBullies");var c=document.getElementById("ex1End"),s=window.innerHeight,l=document.documentElement.clientWidth,f=Math.ceil(s/20),p=Math.ceil(l/20),g=!1,d=new r(p,f,"topTerrarium",20,o);d.canvas.style.top=d.canvas.style.left="50%",d.canvas.style.marginTop=20*f/-2+"px",d.canvas.style.marginLeft=20*p/-2+"px",d.initial=[["plant",50],["brute",5],["bully",10]],d.distributed=!0,d.grid=d.makeGridWithDistribution(d.initial);var h=new r(25,25,"ex1",12,c);h.initial=[["secondCreature",10],["simplePlant",90]],h.distributed=!0,h.grid=h.makeGridWithDistribution(h.initial);var y=new r(25,25,"golTerrarium",12,a);y.initial="GoL",y.distributed=!1,y.grid=y.makeGrid(y.initial);var m=new r(100,100,"cyclicTerrarium",3,u);m.initial="cyclic",m.distributed=!1,m.grid=m.makeGrid(m.initial),bbTerrarium=new r(50,50,"bbTerrarium",6,bbExample),bbTerrarium.initial=d.initial,bbTerrarium.distributed=!0,bbTerrarium.grid=bbTerrarium.makeGridWithDistribution(bbTerrarium.initial),d.draw(),h.draw(),y.draw(),m.draw(),bbTerrarium.draw(),d.animate(),n(h,300),n(y,300),n(m),n(bbTerrarium),smoothScroll.init({offset:60}),document.addEventListener("scroll",t),i.addEventListener("click",function(){d.stop()},!1)},{"../../app/terrarium.js":5,"./bugs.js":8}],2:[function(e,t){var n=e("./util.js"),r=function(){function e(){this.age=0}function t(){}e.prototype.initialEnergy=50,e.prototype.maxEnergy=100,e.prototype.efficiency=.7,e.prototype.size=50,e.prototype.actionRadius=1,e.prototype.sustainability=2,e.prototype.reproduceLv=.7,e.prototype.moveLv=0,e.prototype.boundEnergy=function(){this.energy>this.maxEnergy&&(this.energy=this.maxEnergy)},e.prototype.isDead=function(){return this.energy<=0},e.prototype.reproduce=function(e){var t=n.filter(e,function(e){return!e.creature});if(t.length){var i=t[n.random(t.length-1)],o=i.coords,a=r.make(this.type),u=function(){return this.energy-=this.initialEnergy,!0}.bind(this),c=this.wait;return{x:o.x,y:o.y,creature:a,successFn:u,failureFn:c}}return!1},e.prototype.move=function(e){var t=this,r=n.filter(e,function(e){return e.creature.sizen*this.reproduceLv&&this.reproduce?t=this.reproduce(e):this.energy>n*this.moveLv&&this.move&&(t=this.move(e));var r=t.creature;return r?(r.successFn=t.successFn||r.wait,r.failureFn=t.failureFn||r.wait,{x:t.x,y:t.y,creature:r}):!1},t.prototype.boundEnergy=function(){},t.prototype.isDead=function(){return!1},t.prototype.process=function(){},t.prototype.wait=function(){};var i={};return{make:function(e,t){var n=i[e];return n?new n(t):!1},registerCreature:function(t,r){var o=t.type;if("string"==typeof o&&"undefined"==typeof i[o]){i[o]="function"==typeof r?function(){this.energy=this.initialEnergy,r.call(this)}:function(){this.energy=this.initialEnergy};var a=t.color;return("object"!=typeof a||3!==a.length)&&(t.color=[n.random(255),n.random(255),n.random(255)]),i[o].prototype=new e,i[o].prototype.constructor=i[o],n.each(t,function(e,t){i[o].prototype[t]=e}),i[o].prototype.successFn=i[o].wait,i[o].prototype.failureFn=i[o].wait,i[o].prototype.energy=t.initialEnergy,!0}return!1},registerCA:function(e,r){var o=e.type;if("string"==typeof o&&"undefined"==typeof i[o]){i[o]="function"==typeof r?function(){r.call(this)}:function(){};var a=e.color;return("object"!=typeof a||3!==a.length)&&(e.color=[n.random(255),n.random(255),n.random(255)]),i[o].prototype=new t,i[o].prototype.constructor=i[o],n.each(e,function(e,t){i[o].prototype[t]=e}),!0}return!1}}}();t.exports=r},{"./util.js":6}],3:[function(e,t){var n=e("./util.js");t.exports=function(e,t,r){var i=e.getContext("2d");i.clearRect(0,0,e.width,e.height),n.each(t,function(e,t){n.each(e,function(e,n){if(e){var o=e.colorFn?e.colorFn():e.color+","+e.energy/e.maxEnergy;i.fillStyle="rgba("+o+")",e.character?i.fillText(e.character,t*r,n*r+r):i.fillRect(t*r,n*r,r,r)}})})}},{"./util.js":6}],4:[function(e,t){var n=function(e,t,n,r,i){function o(i){var o=document.createElement("canvas"),a=o.getContext("2d");return i=function(){var e=document.createElement("canvas").getContext("2d"),t=window.devicePixelRatio||1,n=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return t/n}(),o.width=e*i,o.height=t*i,o.style.width=e+"px",o.style.height=t+"px",a.setTransform(i,0,0,i,0,0),a.font="bold "+n+"px Arial",r&&(o.id=r),o}e*=n,t*=n;var a=o();return i?i.parentNode.insertBefore(a,i.nextSibling):document.body.appendChild(a),a};t.exports={createCanvasElement:n}},{}],5:[function(e,t){function n(e,t,n,r,i){r=r||10,this.cellSize=r,this.width=e,this.height=t,this.grid=[],this.canvas=a.createCanvasElement(e,t,r,n,i),this.nextFrame=!1}var r=e("./util"),i=e("./creature.js"),o=e("./display.js"),a=e("./dom.js");n.prototype.makeGrid=function(e){for(var t=[],n=typeof e,r=0,o=this.width;o>r;r++){t.push([]);for(var a=0,u=this.height;u>a;a++)t[r].push(i.make("function"===n?e(r,a):"object"===n&&e.length?(e[a]||[])[r]:"string"===n?e:void 0))}return t},n.prototype.makeGridWithDistribution=function(e){for(var t=[],n=0,o=this.width;o>n;n++){t.push([]);for(var a=0,u=this.height;u>a;a++)t[n].push(i.make(r.pickRandomWeighted(e)))}return t},n.prototype.step=function(e){function t(e){if(e){var t=r.assign(new e.constructor,e);return t&&!t.isDead()?t:!1}return!1}function n(e){return r.map(e,t)}function i(e){return{coords:e,creature:d[e.x][e.y]}}function o(e){var t=e.creature;t?(t.failureFn(),t.boundEnergy()):(e.wait(),e.boundEnergy())}function a(e,t,n){if(e){var a=r.map(r.getNeighborCoords(t,n,p-1,g-1,e.actionRadius),i),u=e.process(a);if(u){var c=f[u.x];c[u.y]||(c[u.y]=[]),c[u.y].push({x:t,y:n,creature:u.creature})}else o(e)}}function u(e,t){r.each(e,function(e,n){a(e,t,n)})}function c(e,t,n){if(e){var i=e.splice(r.random(e.length-1),1)[0],a=i.creature;a.successFn()||(l[i.x][i.y]=!1),a.boundEnergy(),l[t][n]=a,r.each(e,o)}}function s(e,t){r.each(e,function(e,n){c(e,t,n)})}var l,f,p=this.width,g=this.height,d=this.grid;for("number"!=typeof e&&(e=1);e--;)d=l?r.clone(l):this.grid,l=r.map(d,n),f=this.makeGrid(),r.each(l,u),r.each(f,s);return l},n.prototype.draw=function(){o(this.canvas,this.grid,this.cellSize)},n.prototype.animate=function(e,t){function n(){i.grid=i.step(),i.draw(),r++!==e?i.nextFrame=requestAnimationFrame(n):(i.nextFrame=!1,t())}if(!this.nextFrame){var r=0,i=this;i.nextFrame=requestAnimationFrame(n)}},n.prototype.stop=function(){cancelAnimationFrame(this.nextFrame),this.nextFrame=!1},t.exports=n},{"./creature.js":2,"./display.js":3,"./dom.js":4,"./util":6}],6:[function(e,t){e("../bower_components/seedrandom/seedrandom.js")("terra :)",{global:!0});var n=e("../lodash_custom/lodash.custom.min.js")._;n.getNeighborCoords=function(e,t,n,r,i){var o,a,u,c,s=[];("number"!=typeof i||1>i)&&(i=1),o=Math.max(0,e-i),u=Math.max(0,t-i),a=Math.min(e+i,n),c=Math.min(t+i,r);for(var l=o;a>=l;l++)for(var f=u;c>=f;f++)(l!==e||f!==t)&&s.push({x:l,y:f});return s},n.pickRandomWeighted=function(e){var t,r,i=0,o=n.random(100,!0);for(r=0,_len=e.length;_len>r;r++)if(t=e[r],i+=t[1],i>o)return t[0];return!1},t.exports=n},{"../bower_components/seedrandom/seedrandom.js":7,"../lodash_custom/lodash.custom.min.js":9}],7:[function(e,t){!function(e,t,n,r,i,o,a,u,c){function s(e){var t,n=e.length,i=this,o=0,a=i.i=i.j=0,u=i.S=[];for(n||(e=[n++]);r>o;)u[o]=o++;for(o=0;r>o;o++)u[o]=u[a=m&a+e[o%n]+(t=u[o])],u[a]=t;(i.g=function(e){for(var t,n=0,o=i.i,a=i.j,u=i.S;e--;)t=u[o=m&o+1],n=n*r+u[m&(u[o]=u[a=m&a+t])+(u[a]=t)];return i.i=o,i.j=a,n})(r)}function l(e,t){var n,r=[],i=typeof e;if(t&&"object"==i)for(n in e)try{r.push(l(e[n],t-1))}catch(o){}return r.length?r:"string"==i?e:e+"\x00"}function f(e,t){for(var n,r=e+"",i=0;ie;)e=(e+n)*r,t*=r,n=v.g(1);for(;e>=y;)e/=2,t/=2,n>>>=1;return(e+n)/t},m,"global"in o?o.global:this==n)};f(n[c](),t),a&&a.exports?a.exports=v:u&&u.amd&&u(function(){return v})}(this,[],Math,256,6,52,"object"==typeof t&&t,"function"==typeof define&&define,"random")},{}],8:[function(e){var t=e("../../app/creature.js"),n=e("../../app/util.js");t.registerCreature({type:"plant",color:[0,120,0],size:10,initialEnergy:5,maxEnergy:20,wait:function(){this.energy+=1},move:!1,reproduceLv:.65}),t.registerCreature({type:"brute",color:[0,255,255],maxEnergy:50,initialEnergy:10,size:20}),t.registerCreature({type:"bully",color:[241,196,15],initialEnergy:20,reproduceLv:.6,sustainability:3}),t.registerCA({type:"GoL",colorFn:function(){return this.alive?this.color+",1":"0,0,0,0"},process:function(e){var t=n.filter(e,function(e){return e.creature.alive}).length;return this.alive=3===t||2===t&&this.alive,!1}},function(){this.alive=Math.random()<.5}),t.registerCA({type:"cyclic",colors:["255,0,0,1","255,96,0,1","255,191,0,1","223,255,0,1","128,255,0,1","32,255,0,1","0,255,64,1","0,255,159,1","0,255,255,1","0,159,255,1","0,64,255,1","32,0,255,1","127,0,255,1","223,0,255,1","255,0,191,1","255,0,96,1"],colorFn:function(){return this.colors[this.state]},process:function(e){var t=(this.state+1)%16,r=n.some(e,function(e){return e.creature.state===t});r&&(this.state=t)}},function(){this.state=Math.floor(16*Math.random())}),t.registerCreature({type:"secondCreature",color:[154,109,235],initialEnergy:100,sustainability:6,reproduceLv:1,moveLv:0}),t.registerCreature({type:"simplePlant",color:[166,226,46],colorFn:function(){return this.color+",1"},size:10,initialEnergy:5,maxEnergy:20,wait:function(){this.energy+=1},move:!1,reproduceLv:.65})},{"../../app/creature.js":2,"../../app/util.js":6}],9:[function(e,t,n){(function(e){(function(){function r(e){return"function"!=typeof e.toString&&"string"==typeof(e+"")}function i(e){e.length=0,F.length<_&&F.push(e)}function o(e,t){var n;t||(t=0),"undefined"==typeof n&&(n=e?e.length:0);var r=-1;n=n-t||0;for(var i=Array(0>n?0:n);++rk;k++)r+="n='"+n.h[k]+"';if((!(r&&x[n])&&m.call(t,n))",n.j||(r+="||(!x[n]&&t[n]!==A[n])"),r+="){"+n.g+"}";r+="}"}return(n.b||wt.nonEnumArgs)&&(r+="}"),r+=n.c+";return E",e("d,j,k,m,o,p,q,s,v,A,B,y,I,J,L",t+r+"}")(l,R,tt,ct,N,y,Et,b,U.f,nt,Y,bt,J,rt,it)}function h(e){return"function"==typeof e&&ot.test(e)}function y(e){return e&&"object"==typeof e&&"number"==typeof e.length&&it.call(e)==D||!1}function m(e){return"function"==typeof e}function v(e){return!(!e||!Y[typeof e])}function b(e){return"string"==typeof e||e&&"object"==typeof e&&it.call(e)==J||!1}function w(e,t,n){var r=[];if(t=a.createCallback(t,n,3),Et(e)){n=-1;for(var i=e.length;++narguments.length;if(t=a.createCallback(t,r,4),Et(e)){var o=-1,u=e.length;for(i&&(n=e[++o]);++o3&&typeof a[c-2]=='function'){var e=d(a[--c-1],a[c--],2)}else if(c>2&&typeof a[c-1]=='function'){e=a[--c]}"),g:"E[n]=e?e(E[n],t[n]):t[n]"}),At=d(X,Ot,{j:!1}),Pt=d(X,Ot);m(/x/)&&(m=function(e){return"function"==typeof e&&"[object Function]"==it.call(e)}),a.assign=Ct,a.bind=S,a.createCallback=function(e,t,n){var r=typeof e;if(null==e||"function"==r)return l(e,t,n);if("object"!=r)return P(e);var i=kt(e),o=i[0],a=e[o];return 1!=i.length||a!==a||v(a)?function(t){for(var n=i.length,r=!1;n--&&(r=p(t[i[n]],e[i[n]],null,!0)););return r}:function(e){return e=e[o],a===e&&(0!==a||1/a==1/e)}},a.filter=w,a.forEach=x,a.forIn=At,a.forOwn=Pt,a.keys=kt,a.map=E,a.property=P,a.collect=E,a.each=x,a.extend=Ct,a.select=w,a.clone=function(e,t,n,r){return"boolean"!=typeof t&&null!=t&&(r=n,n=t,t=!1),c(e,t,"function"==typeof n&&l(n,r,1))},a.identity=C,a.isArguments=y,a.isArray=Et,a.isFunction=m,a.isObject=v,a.isString=b,a.noop=A,a.random=function(e,t,n){var r=null==e,i=null==t;return null==n&&("boolean"==typeof e&&i?(n=e,e=1):i||"boolean"!=typeof t||(n=t,i=!0)),r&&i&&(t=1),e=+e||0,i?(t=e,e=0):t=+t||0,n||e%1||t%1?(n=mt(),yt(e+n*(t-e+parseFloat("1e-"+((n+"").length-1))),t)):e+at(mt()*(t-e+1))},a.reduce=j,a.some=O,a.any=O,a.foldl=j,a.inject=j,a.VERSION="2.4.1",V&&Z&&(V._=a)}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1]); \ No newline at end of file +Function.prototype.bind||(Function.prototype.bind=function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),n=this;return fNOP=function(){},fBound=function(){return n.apply(this instanceof fNOP&&e?this:e,t.concat(Array.prototype.slice.call(arguments)))},fNOP.prototype=this.prototype,fBound.prototype=new fNOP,fBound}),!function(e,t){"function"==typeof define&&define.amd?define("smoothScroll",t(e)):"object"==typeof exports?module.exports=t(e):e.smoothScroll=t(e)}(this,function(e){"use strict";var t,n={},r=!!document.querySelector&&!!e.addEventListener,i={speed:500,easing:"easeInOutCubic",offset:0,updateURL:!0,callbackBefore:function(){},callbackAfter:function(){}},o=function(e,t,n){if("[object Object]"===Object.prototype.toString.call(e))for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.call(n,e[r],r,e);else for(var i=0,o=e.length;o>i;i++)t.call(n,e[i],i,e)},a=function(e,t){var n={};return o(e,function(t,r){n[r]=e[r]}),o(t,function(e,r){n[r]=t[r]}),n},u=function(e){for(var t,n=String(e),r=n.length,i=-1,o="",a=n.charCodeAt(0);++i=1&&31>=t||127==t||0===i&&t>=48&&57>=t||1===i&&t>=48&&57>=t&&45===a?"\\"+t.toString(16)+" ":t>=128||45===t||95===t||t>=48&&57>=t||t>=65&&90>=t||t>=97&&122>=t?n.charAt(i):"\\"+n.charAt(i)}return o},c=function(e,t){var n;return"easeInQuad"===e&&(n=t*t),"easeOutQuad"===e&&(n=t*(2-t)),"easeInOutQuad"===e&&(n=.5>t?2*t*t:-1+(4-2*t)*t),"easeInCubic"===e&&(n=t*t*t),"easeOutCubic"===e&&(n=--t*t*t+1),"easeInOutCubic"===e&&(n=.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),"easeInQuart"===e&&(n=t*t*t*t),"easeOutQuart"===e&&(n=1- --t*t*t*t),"easeInOutQuart"===e&&(n=.5>t?8*t*t*t*t:1-8*--t*t*t*t),"easeInQuint"===e&&(n=t*t*t*t*t),"easeOutQuint"===e&&(n=1+--t*t*t*t*t),"easeInOutQuint"===e&&(n=.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t),n||t},s=function(e,t,n){var r=0;if(e.offsetParent)do r+=e.offsetTop,e=e.offsetParent;while(e);return r=r-t-n,r>=0?r:0},l=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},f=function(e){return e&&"object"==typeof JSON&&"function"==typeof JSON.parse?JSON.parse(e):{}},p=function(e,t){history.pushState&&(t||"true"===t)&&history.pushState({pos:e.id},"",window.location.pathname+e)};return n.animateScroll=function(t,n,r,o){var g=a(g||i,r||{}),d=f(t?t.getAttribute("data-options"):null);g=a(g,d),n="#"+u(n.substr(1));var h,y,m,v=document.querySelector("[data-scroll-header]"),b=null===v?0:v.offsetHeight+v.offsetTop,w=e.pageYOffset,x=s(document.querySelector(n),b,parseInt(g.offset,10)),E=x-w,j=l(),k=0;t&&"a"===t.tagName.toLowerCase()&&o&&o.preventDefault(),p(n,g.updateURL);var O=function(r,i,o){var a=e.pageYOffset;(r==i||a==i||e.innerHeight+a>=j)&&(clearInterval(o),g.callbackAfter(t,n))},S=function(){k+=16,y=k/parseInt(g.speed,10),y=y>1?1:y,m=w+E*c(g.easing,y),e.scrollTo(0,Math.floor(m)),O(m,x,h)},C=function(){g.callbackBefore(t,n),h=setInterval(S,16)};0===e.pageYOffset&&e.scrollTo(0,0),C()},n.init=function(e){if(r){t=a(i,e||{});var u=document.querySelectorAll("[data-scroll]");o(u,function(e){e.addEventListener("click",n.animateScroll.bind(null,e,e.hash,t),!1)})}},n}),self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{};var Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content)):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(d instanceof r)){s.lastIndex=0;var h=s.exec(d);if(h){f&&(p=h[1].length);var y=h.index-1+p,h=h[0].slice(p),m=h.length,v=y+m,b=d.slice(0,y+1),w=d.slice(v+1),x=[g,1];b&&x.push(b);var E=new r(a,l?t.tokenize(h,l):h);x.push(E),w&&x.push(w),Array.prototype.splice.apply(i,x)}}}}}return i},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[],r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(r&&r.length)for(var i,o=0;i=r[o++];)i(n)}}},n=t.Token=function(e,t){this.type=e,this.content=t};if(n.stringify=function(e,r,i){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(function(t){return n.stringify(t,r,e)}).join("");var o={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};"comment"==o.type&&(o.attributes.spellcheck="true"),t.hooks.run("wrap",o);var a="";for(var u in o.attributes)a+=u+'="'+(o.attributes[u]||"")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'" '+a+">"+o.content+""},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(i,t.languages[r])))),self.close()},!1),self.Prism):self.Prism;var r=document.getElementsByTagName("script");return r=r[r.length-1],r&&(t.filename=r.src,document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),Prism.languages.markup={comment://g,prolog:/<\?.+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\&#?[\da-z]{1,8};/gi},Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//g,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*?(\r?\n|$)/g,lookbehind:!0}],string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/gi,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/gi,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g},Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/gi,inside:{tag:{pattern:/|<\/script>/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}}),Prism.languages.bash=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])(#.*?(\r?\n|$))/g,lookbehind:!0},string:{pattern:/("|')(\\?[\s\S])*?\1/g,inside:{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^\}]+\})/g}},keyword:/\b(if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)\b/g}),Prism.languages.insertBefore("bash","keyword",{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^}]+\})/g}),Prism.languages.insertBefore("bash","comment",{important:/(^#!\s*\/bin\/bash)|(^#!\s*\/bin\/sh)/g}),function(e,t,n,r,i,o,a){e.GoogleAnalyticsObject=i,e[i]=e[i]||function(){(e[i].q=e[i].q||[]).push(arguments)},e[i].l=1*new Date,o=t.createElement(n),a=t.getElementsByTagName(n)[0],o.async=1,o.src=r,a.parentNode.insertBefore(o,a)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-49939229-4","auto"),ga("send","pageview"),function e(t,n,r){function i(a,u){if(!n[a]){if(!t[a]){var c="function"==typeof require&&require;if(!u&&c)return c(a,!0);if(o)return o(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var l=n[a]={exports:{}};t[a][0].call(l.exports,function(e){var n=t[a][1][e];return i(n?n:e)},l,l.exports,e,t,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a=f&&!h?(document.body.className="sticky",y.stop(),h=!0):f>e&&h&&(document.body.className="",y.animate(),h=!1)}function n(e,t){var n=e.canvas,r=n.parentNode,i=n.nextElementSibling,o=document.createElement("div"),a=document.createElement("button"),u=document.createElement("button");a.className="icon-play",u.className="icon-stop",o.className="canvasWrapper stopped",o.appendChild(n),o.appendChild(a),o.appendChild(u),i?r.insertBefore(o,i):r.appendChild(o),a.addEventListener("click",function(){o.className="canvasWrapper playing",e.animate(t,function(){u.click()})},!1),u.addEventListener("click",function(){o.className="canvasWrapper stopped",e.stop(),e.grid=e.distributed?e.makeGridWithDistribution(e.initial):e.makeGrid(e.initial)},!1)}var r=e("../../app/terrarium.js");e("./bugs.js");var i=document.getElementById("scroller1"),o=document.getElementById("header"),a=document.getElementById("gol"),u=document.getElementById("cyclic"),c=document.getElementById("brutesAndBullies"),s=document.getElementById("rule146"),l=document.getElementById("ex1End"),f=window.innerHeight,p=document.documentElement.clientWidth,g=Math.ceil(f/20),d=Math.ceil(p/20),h=!1,y=new r(d,g,"topTerrarium",20,o);y.canvas.style.top=y.canvas.style.left="50%",y.canvas.style.marginTop=20*g/-2+"px",y.canvas.style.marginLeft=20*d/-2+"px",y.initial=[["plant",50],["brute",5],["bully",10]],y.distributed=!0,y.grid=y.makeGridWithDistribution(y.initial);var m=new r(25,25,"ex1",12,l);m.initial=[["secondCreature",10],["simplePlant",90]],m.distributed=!0,m.grid=m.makeGridWithDistribution(m.initial);var v=new r(25,25,"golTerrarium",12,a);v.initial="GoL",v.distributed=!1,v.grid=v.makeGrid(v.initial);var b=new r(100,100,"cyclicTerrarium",3,u);b.initial="cyclic",b.distributed=!1,b.grid=b.makeGrid(b.initial);var w=new r(150,150,"elementaryTerrarium",2,s);w.initial="elementary",w.distributed=!1,w.grid=w.makeGrid(w.initial);var x=new r(50,50,"bbTerrarium",6,c);x.initial=y.initial,x.distributed=!0,x.grid=x.makeGridWithDistribution(x.initial),y.draw(),m.draw(),v.draw(),b.draw(),x.draw(),y.animate(),n(m,300),n(v,300),n(b),n(w,150),n(x),smoothScroll.init({offset:60}),document.addEventListener("scroll",t),i.addEventListener("click",function(){y.stop()},!1)},{"../../app/terrarium.js":5,"./bugs.js":8}],2:[function(e,t){var n=e("./util.js"),r=function(){function e(){this.age=-1}function t(){this.age=-1}e.prototype.initialEnergy=50,e.prototype.maxEnergy=100,e.prototype.efficiency=.7,e.prototype.size=50,e.prototype.actionRadius=1,e.prototype.sustainability=2,e.prototype.reproduceLv=.7,e.prototype.moveLv=0,e.prototype.boundEnergy=function(){this.energy>this.maxEnergy&&(this.energy=this.maxEnergy)},e.prototype.isDead=function(){return this.energy<=0},e.prototype.reproduce=function(e){var t=n.filter(e,function(e){return!e.creature});if(t.length){var i=t[n.random(t.length-1)],o=i.coords,a=r.make(this.type),u=function(){return this.energy-=this.initialEnergy,!0}.bind(this),c=this.wait;return{x:o.x,y:o.y,creature:a,successFn:u,failureFn:c}}return!1},e.prototype.move=function(e){var t=this,r=n.filter(e,function(e){return e.creature.sizen*this.reproduceLv&&this.reproduce?t=this.reproduce(e):this.energy>n*this.moveLv&&this.move&&(t=this.move(e));var r=t.creature;return r?(r.successFn=t.successFn||r.wait,r.failureFn=t.failureFn||r.wait,{x:t.x,y:t.y,creature:r}):!1},t.prototype.boundEnergy=function(){},t.prototype.isDead=function(){return!1},t.prototype.process=function(){},t.prototype.wait=function(){};var i={};return{make:function(e,t){var n=i[e];return n?new n(t):!1},registerCreature:function(t,r){var o=t.type;if("string"==typeof o&&"undefined"==typeof i[o]){i[o]="function"==typeof r?function(){this.energy=this.initialEnergy,r.call(this)}:function(){this.energy=this.initialEnergy};var a=t.color;return("object"!=typeof a||3!==a.length)&&(t.color=[n.random(255),n.random(255),n.random(255)]),i[o].prototype=new e,i[o].prototype.constructor=i[o],n.each(t,function(e,t){i[o].prototype[t]=e}),i[o].prototype.successFn=i[o].wait,i[o].prototype.failureFn=i[o].wait,i[o].prototype.energy=t.initialEnergy,!0}return!1},registerCA:function(e,r){var o=e.type;if("string"==typeof o&&"undefined"==typeof i[o]){i[o]="function"==typeof r?function(){r.call(this)}:function(){};var a=e.color;return("object"!=typeof a||3!==a.length)&&(e.color=[n.random(255),n.random(255),n.random(255)]),i[o].prototype=new t,i[o].prototype.constructor=i[o],n.each(e,function(e,t){i[o].prototype[t]=e}),!0}return!1}}}();t.exports=r},{"./util.js":6}],3:[function(e,t){var n=e("./util.js");t.exports=function(e,t,r){var i=e.getContext("2d");i.clearRect(0,0,e.width,e.height),n.each(t,function(e,t){n.each(e,function(e,n){if(e){var o=e.colorFn?e.colorFn():e.color+","+e.energy/e.maxEnergy;i.fillStyle="rgba("+o+")",e.character?i.fillText(e.character,t*r,n*r+r):i.fillRect(t*r,n*r,r,r)}})})}},{"./util.js":6}],4:[function(e,t){var n=function(e,t,n,r,i){function o(i){var o=document.createElement("canvas"),a=o.getContext("2d");return i=function(){var e=document.createElement("canvas").getContext("2d"),t=window.devicePixelRatio||1,n=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return t/n}(),o.width=e*i,o.height=t*i,o.style.width=e+"px",o.style.height=t+"px",a.setTransform(i,0,0,i,0,0),a.font="bold "+n+"px Arial",r&&(o.id=r),o}e*=n,t*=n;var a=o();return i?i.parentNode.insertBefore(a,i.nextSibling):document.body.appendChild(a),a};t.exports={createCanvasElement:n}},{}],5:[function(e,t){function n(e,t,n,r,i){r=r||10,this.cellSize=r,this.width=e,this.height=t,this.grid=[],this.canvas=a.createCanvasElement(e,t,r,n,i),this.nextFrame=!1}var r=e("./util"),i=e("./creature.js"),o=e("./display.js"),a=e("./dom.js");n.prototype.makeGrid=function(e){for(var t=[],n=typeof e,r=0,o=this.width;o>r;r++){t.push([]);for(var a=0,u=this.height;u>a;a++)t[r].push(i.make("function"===n?e(r,a):"object"===n&&e.length?(e[a]||[])[r]:"string"===n?e:void 0))}return t},n.prototype.makeGridWithDistribution=function(e){for(var t=[],n=0,o=this.width;o>n;n++){t.push([]);for(var a=0,u=this.height;u>a;a++)t[n].push(i.make(r.pickRandomWeighted(e)))}return t},n.prototype.step=function(e){function t(e){if(e){var t=r.assign(new e.constructor,e);return t.age++,t&&!t.isDead()?t:!1}return!1}function n(e){return r.map(e,t)}function i(e){return{coords:e,creature:d[e.x][e.y]}}function o(e){var t=e.creature;t?(t.failureFn(),t.boundEnergy()):(e.wait(),e.boundEnergy())}function a(e,t,n){if(e){var a=r.map(r.getNeighborCoords(t,n,p-1,g-1,e.actionRadius),i),u=e.process(a,t,n);if(u){var c=f[u.x];c[u.y]||(c[u.y]=[]),c[u.y].push({x:t,y:n,creature:u.creature})}else o(e)}}function u(e,t){r.each(e,function(e,n){a(e,t,n)})}function c(e,t,n){if(e){var i=e.splice(r.random(e.length-1),1)[0],a=i.creature;a.successFn()||(l[i.x][i.y]=!1),a.boundEnergy(),l[t][n]=a,r.each(e,o)}}function s(e,t){r.each(e,function(e,n){c(e,t,n)})}var l,f,p=this.width,g=this.height,d=this.grid;for("number"!=typeof e&&(e=1);e--;)d=l?r.clone(l):this.grid,l=r.map(d,n),f=this.makeGrid(),r.each(l,u),r.each(f,s);return l},n.prototype.draw=function(){o(this.canvas,this.grid,this.cellSize)},n.prototype.animate=function(e,t){function n(){i.grid=i.step(),i.draw(),r++!==e?i.nextFrame=requestAnimationFrame(n):(i.nextFrame=!1,t&&t())}if(!this.nextFrame){var r=0,i=this;i.nextFrame=requestAnimationFrame(n)}},n.prototype.stop=function(){cancelAnimationFrame(this.nextFrame),this.nextFrame=!1},t.exports=n},{"./creature.js":2,"./display.js":3,"./dom.js":4,"./util":6}],6:[function(e,t){e("../bower_components/seedrandom/seedrandom.js")("terra :)",{global:!0});var n=e("../lodash_custom/lodash.custom.min.js")._;n.getNeighborCoords=function(e,t,n,r,i){var o,a,u,c,s=[];("number"!=typeof i||1>i)&&(i=1),o=Math.max(0,e-i),u=Math.max(0,t-i),a=Math.min(e+i,n),c=Math.min(t+i,r);for(var l=o;a>=l;l++)for(var f=u;c>=f;f++)(l!==e||f!==t)&&s.push({x:l,y:f});return s},n.pickRandomWeighted=function(e){var t,r,i=0,o=n.random(100,!0);for(r=0,_len=e.length;_len>r;r++)if(t=e[r],i+=t[1],i>o)return t[0];return!1},t.exports=n},{"../bower_components/seedrandom/seedrandom.js":7,"../lodash_custom/lodash.custom.min.js":9}],7:[function(e,t){!function(e,t,n,r,i,o,a,u,c){function s(e){var t,n=e.length,i=this,o=0,a=i.i=i.j=0,u=i.S=[];for(n||(e=[n++]);r>o;)u[o]=o++;for(o=0;r>o;o++)u[o]=u[a=m&a+e[o%n]+(t=u[o])],u[a]=t;(i.g=function(e){for(var t,n=0,o=i.i,a=i.j,u=i.S;e--;)t=u[o=m&o+1],n=n*r+u[m&(u[o]=u[a=m&a+t])+(u[a]=t)];return i.i=o,i.j=a,n})(r)}function l(e,t){var n,r=[],i=typeof e;if(t&&"object"==i)for(n in e)try{r.push(l(e[n],t-1))}catch(o){}return r.length?r:"string"==i?e:e+"\x00"}function f(e,t){for(var n,r=e+"",i=0;ie;)e=(e+n)*r,t*=r,n=v.g(1);for(;e>=y;)e/=2,t/=2,n>>>=1;return(e+n)/t},m,"global"in o?o.global:this==n)};f(n[c](),t),a&&a.exports?a.exports=v:u&&u.amd&&u(function(){return v})}(this,[],Math,256,6,52,"object"==typeof t&&t,"function"==typeof define&&define,"random")},{}],8:[function(e){var t=e("../../app/creature.js"),n=e("../../app/util.js");t.registerCreature({type:"plant",color:[0,120,0],size:10,initialEnergy:5,maxEnergy:20,wait:function(){this.energy+=1},move:!1,reproduceLv:.65}),t.registerCreature({type:"brute",color:[0,255,255],maxEnergy:50,initialEnergy:10,size:20}),t.registerCreature({type:"bully",color:[241,196,15],initialEnergy:20,reproduceLv:.6,sustainability:3}),t.registerCA({type:"GoL",colorFn:function(){return this.alive?this.color+",1":"0,0,0,0"},process:function(e){var t=n.filter(e,function(e){return e.creature.alive}).length;return this.alive=3===t||2===t&&this.alive,!1}},function(){this.alive=Math.random()<.5}),t.registerCA({type:"cyclic",colors:["255,0,0,1","255,96,0,1","255,191,0,1","223,255,0,1","128,255,0,1","32,255,0,1","0,255,64,1","0,255,159,1","0,255,255,1","0,159,255,1","0,64,255,1","32,0,255,1","127,0,255,1","223,0,255,1","255,0,191,1","255,0,96,1"],colorFn:function(){return this.colors[this.state]},process:function(e){var t=(this.state+1)%16,r=n.some(e,function(e){return e.creature.state===t});r&&(this.state=t)}},function(){this.state=Math.floor(16*Math.random())}),t.registerCreature({type:"secondCreature",color:[154,109,235],initialEnergy:100,sustainability:6,reproduceLv:1,moveLv:0}),t.registerCreature({type:"simplePlant",color:[166,226,46],colorFn:function(){return this.color+",1"},size:10,initialEnergy:5,maxEnergy:20,wait:function(){this.energy+=1},move:!1,reproduceLv:.65}),t.registerCA({type:"elementary",alive:!1,ruleset:[1,0,0,1,0,0,1,0].reverse(),colorFn:function(){return this.alive?this.color+",1":"0,0,0,0"},process:function(e,t,r){if(this.age===r){var i=n.map(n.filter(e,function(e){return e.coords.y===r-1}),function(e){return e.creature.alive?1:0});i=parseInt(i.join(""),2),this.alive=isNaN(i)?!t:this.ruleset[i]}return!1}})},{"../../app/creature.js":2,"../../app/util.js":6}],9:[function(e,t,n){(function(e){(function(){function r(e){return"function"!=typeof e.toString&&"string"==typeof(e+"")}function i(e){e.length=0,F.length<_&&F.push(e)}function o(e,t){var n;t||(t=0),"undefined"==typeof n&&(n=e?e.length:0);var r=-1;n=n-t||0;for(var i=Array(0>n?0:n);++rk;k++)r+="n='"+n.h[k]+"';if((!(r&&x[n])&&m.call(t,n))",n.j||(r+="||(!x[n]&&t[n]!==A[n])"),r+="){"+n.g+"}";r+="}"}return(n.b||wt.nonEnumArgs)&&(r+="}"),r+=n.c+";return E",e("d,j,k,m,o,p,q,s,v,A,B,y,I,J,L",t+r+"}")(l,R,tt,ct,N,y,Et,b,U.f,nt,Y,bt,J,rt,it)}function h(e){return"function"==typeof e&&ot.test(e)}function y(e){return e&&"object"==typeof e&&"number"==typeof e.length&&it.call(e)==T||!1}function m(e){return"function"==typeof e}function v(e){return!(!e||!Y[typeof e])}function b(e){return"string"==typeof e||e&&"object"==typeof e&&it.call(e)==J||!1}function w(e,t,n){var r=[];if(t=a.createCallback(t,n,3),Et(e)){n=-1;for(var i=e.length;++narguments.length;if(t=a.createCallback(t,r,4),Et(e)){var o=-1,u=e.length;for(i&&(n=e[++o]);++o3&&typeof a[c-2]=='function'){var e=d(a[--c-1],a[c--],2)}else if(c>2&&typeof a[c-1]=='function'){e=a[--c]}"),g:"E[n]=e?e(E[n],t[n]):t[n]"}),At=d(X,Ot,{j:!1}),Pt=d(X,Ot);m(/x/)&&(m=function(e){return"function"==typeof e&&"[object Function]"==it.call(e)}),a.assign=Ct,a.bind=S,a.createCallback=function(e,t,n){var r=typeof e;if(null==e||"function"==r)return l(e,t,n);if("object"!=r)return P(e);var i=kt(e),o=i[0],a=e[o];return 1!=i.length||a!==a||v(a)?function(t){for(var n=i.length,r=!1;n--&&(r=p(t[i[n]],e[i[n]],null,!0)););return r}:function(e){return e=e[o],a===e&&(0!==a||1/a==1/e)}},a.filter=w,a.forEach=x,a.forIn=At,a.forOwn=Pt,a.keys=kt,a.map=E,a.property=P,a.collect=E,a.each=x,a.extend=Ct,a.select=w,a.clone=function(e,t,n,r){return"boolean"!=typeof t&&null!=t&&(r=n,n=t,t=!1),c(e,t,"function"==typeof n&&l(n,r,1))},a.identity=C,a.isArguments=y,a.isArray=Et,a.isFunction=m,a.isObject=v,a.isString=b,a.noop=A,a.random=function(e,t,n){var r=null==e,i=null==t;return null==n&&("boolean"==typeof e&&i?(n=e,e=1):i||"boolean"!=typeof t||(n=t,i=!0)),r&&i&&(t=1),e=+e||0,i?(t=e,e=0):t=+t||0,n||e%1||t%1?(n=mt(),yt(e+n*(t-e+parseFloat("1e-"+((n+"").length-1))),t)):e+at(mt()*(t-e+1))},a.reduce=j,a.some=O,a.any=O,a.foldl=j,a.inject=j,a.VERSION="2.4.1",V&&Z&&(V._=a)}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1]); \ No newline at end of file