class Random{constructor(e){this.seed=e}random_dec(){return this.seed^=this.seed<<13,this.seed^=this.seed>>17,this.seed^=this.seed<<5,(this.seed<0?1+~this.seed:this.seed)%1e3/1e3}random_num(e,n){return e+(n-e)*this.random_dec()}random_int(e,n){return Math.floor(this.random_num(e,n+1))}}function random_hash(){let e="0123456789abcdef",n="0x";for(let t=64;t>0;--t)n+=e[Math.floor(Math.random()*e.length)];return n}const Z=255,T=!0,F=!1;var R;let seed;var size,dim,DIM,path,field,pal,prevStart,prevFinish,bc=Z,matrix={},q=[],v=[],lc=-1,w=0;function sm(e=T){var n,t,o,s;e?(gmx(dim,dim),gmz(),n=R.random_int(0,dim-1),o=R.random_int(0,dim-1)):minCol>dim-maxCol-1?(n=R.random_int(0,prevStart-1),o=R.random_int(0,prevFinish-1),prevFinish=o):(n=R.random_int(prevStart+1,dim-1),o=R.random_int(prevFinish+1,dim-1)),t=toHex(0,n),prevStart=n,s=toHex(dim-1,o),prevFinish=o,path=(path=fsp(matrix,t,s)).path,field={};for(var r=0;r<dim;r++)field[r]=[];for(var i=0;i<dim;i++)for(var l=0;l<dim;l++)field[i][l]=0;setField(),below()}class P{constructor(e,n=[0,0,0],t=[Z,Z,Z]){this.line=n,this.back=t,this.colors=e}}var sywt,plen,cps3=[],cps3b=[],cps3c=[],cps3d=[],cps3e=[],cps4=[],cps4b=[],cps5=[],cps5b=[],cps6=[],cps6b=[],cps2=[];function ldpls(){cps2=[[198,0,197],[201,Z,0],[157,221,254],[Z,0,0],[Z,0,244],[Z,0,145],[0,Z,228],[0,77,Z],[0,Z,0],[Z,199,0],[130,0,0],[0,128,38],[163,163,163],[105,105,105],[49,49,49],[Z,140,0],[117,7,135],[Z,237,0],[0,161,134],[0,168,Z],[0,101,153],[Z,145,250],[Z,90,0],[Z,Z,166],[0,143,5],[0,Z,168],[191,19,99],[194,185,127],[Z,151,112],[56,145,166],[12,208,205],[181,202,141],[143,57,133],[71,74,44],[89,169,106],[76,91,92],[181,202,141],[139,177,116],[86,78,88],[144,78,85],[14,121,178],[Z,16,31],[125,0,120],[224,59,134],[253,231,76],[244,96,54],[68,Z,209],[97,83,204],[166,0,103],[117,159,188],[31,86,115],[227,197,103],[200,150,62],[87,61,28],[167,232,189],[199,234,228],[252,188,184],[219,84,97],[48,228,38],[102,215,209],[252,119,83],[217,207,191],[37,Z,0],[247,231,51],[190,183,164],[47,50,76],[166,117,82],[99,105,64],[117,139,253]],cps3.push(new P([[254,74,73],[42,183,202],[56,102,65]]),new P([[Z,127,17],[Z,63,0],[119,101,227]]),new P([[131,33,97],[218,65,103],[51,153,137]]),new P([[78,103,102],[165,200,130],[247,221,114]]),new P([[138,113,106],[194,184,178],[25,123,189]]),new P([[70,55,48],[31,86,115],[117,159,188]]),new P([[149,250,36],[90,43,218],[133,71,152]]),new P([[Z,16,31],[219,84,97],[48,228,38]]),new P([[Z,199,0],[254,29,91],[143,45,86]]),new P([[Z,145,250],[Z,0,244],[125,0,120]]),new P([[217,207,191],[252,119,83],[102,215,209]]),new P([[201,Z,0],[37,Z,0],[0,143,5]]),new P([[181,202,141],[139,177,116],[66,107,105]]),new P([[157,221,254],[0,168,Z],[0,101,153]]),new P([[Z,163,163],[Z,0,0],[130,0,0]]),new P([[198,0,197],[Z,Z,0],[0,Z,168]]),new P([[68,3,129],[235,54,141],[Z,65,94]]),new P([[68,Z,209],[97,83,204],[166,0,103]]),new P([[Z,0,145],[0,Z,228],[Z,199,0]]),new P([[247,231,51],[Z,0,145],[37,Z,0]]),new P([[14,121,178],[191,19,99],[243,146,55]]),new P([[194,185,127],[86,78,88],[144,78,85]]),new P([[228,87,46],[23,190,187],[254,192,30]]),new P([[5,168,170],[184,213,184],[215,180,158]]),new P([[227,197,103],[200,150,62],[87,61,28]]),new P([[117,139,253],[174,184,254],[219,84,97]]),new P([[199,234,228],[167,232,189],[252,188,184]]),new P([[239,188,155],[238,146,194],[157,106,137]]),new P([[179,0,27],[61,61,61],[37,92,153]]),new P([[118,123,145],[242,55,92],[21,5,120]]),new P([[71,74,44],[99,105,64],[89,169,106]]),new P([[47,50,76],[143,57,133],[166,117,82]])),cps3c.push(new P([[163,163,163],[105,105,105],[49,49,49]],[Z,0,0],[0,0,0]),new P([[163,163,163],[105,105,105],[49,49,49]],[0,Z,0],[0,0,0]),new P([[163,163,163],[105,105,105],[49,49,49]],[0,0,Z],[0,0,0])),cps3d.push(new P([[237,225,177],[207,183,159],[249,250,210]],[140,0,3],[46,46,46])),cps4.push(new P([[66,158,166],[127,99,110],[107,191,89],[175,56,0]]),new P([[39,24,126],[117,139,253],[174,184,254],[153,242,246]]),new P([[70,115,250],[116,144,227],[252,203,53],[63,82,140]]),new P([[232,174,183],[184,225,Z],[169,Z,247],[148,251,171]]),new P([[Z,184,209],[231,206,227],[224,225,233],[221,253,254]]),new P([[112,214,Z],[Z,112,166],[Z,151,112],[Z,214,112]]),new P([[91,192,235],[253,231,76],[155,197,61],[195,66,63]]),new P([[250,74,111],[247,78,189],[68,232,244],[96,232,97]]),new P([[127,127,118],[35,0,Z],[149,250,36],[188,0,239]]),new P([[232,106,146],[247,231,51],[185,185,202],[65,226,186]]),new P([[220,Z,98],[0,188,249],[90,43,218],[219,84,97]]),new P([[244,96,54],[46,41,78],[27,153,139],[231,29,54]]),new P([[56,145,166],[76,91,92],[253,231,76],[219,84,97]]),new P([[12,208,205],[224,26,79],[241,89,70],[249,194,46]]),new P([[Z,105,120],[237,207,242],[177,237,232],[109,67,90]]),new P([[81,81,77],[187,206,168],[227,216,126],[240,236,87]]),new P([[142,85,114],[192,216,192],[194,185,127],[188,170,153]])),cps5.push(new P([[100,101,54],[209,96,20],[34,170,161],[165,102,139],[105,48,109]]),new P([[66,3,61],[104,14,75],[124,35,140],[133,71,152],[124,114,160]]),new P([[115,251,211],[68,229,231],[89,210,254],[74,143,231],[92,122,Z]]),new P([[162,0,33],[245,47,87],[247,157,92],[243,117,43],[224,59,134]]),new P([[150,173,200],[215,Z,171],[252,Z,108],[216,157,106],[109,69,76]]),new P([[172,154,168],[20,54,66],[15,139,141],[236,154,41],[168,32,26]]),new P([[19,167,213],[254,192,30],[254,29,91],[165,200,31],[199,217,212]])),cps6.push(new P([[228,3,3],[Z,140,0],[Z,237,0],[0,128,38],[0,77,Z],[117,7,135]]))}function chpls(){var e=R.random_int(0,512),n={};if(R.random_int(0,3)?(n.back=[Z,Z,Z],n.line=[0,0,0]):(n.back=[0,0,0],n.line=[Z,Z,Z]),bc=n.back,lc=n.line,e<150){let e=R.random_int(0,cps3.length-1);n.colors=cps3[e].colors}else if(e<245){let e=R.random_int(0,cps4.length-1);n.colors=cps4[e].colors}else if(e<300){let e=R.random_int(0,cps5.length-1);n.colors=cps5[e].colors}else if(e<318){let e=R.random_int(0,cps3c.length-1);n.colors=cps3c[e].colors,lc=cps3c[e].line}else if(e<327){let e=R.random_int(0,cps6.length-1);n.colors=cps6[e].colors}else if(e<337){let e=R.random_int(0,cps3d.length-1);n.colors=cps3d[e].colors,bc=cps3d[e].back,lc=cps3d[e].line}else{(n={}).colors=[];let e,t=R.random_int(0,cps2.length-1);do{e=R.random_int(0,cps2.length-1)}while(t==e);n.colors.push(cps2[t]),n.colors.push(cps2[e])}pal=n.colors,background(bc)}function setup(){size=min(windowWidth,windowHeight),createCanvas(size,size),dim=14,console.log(tokenData.hash),seed=parseInt(tokenData.hash.slice(0,16),16),R=new Random(seed),background(Z)}function drmz(){for(var e=0;e<path.length;e++){var n=toCoord(path[e]);0==e&&ds(w*n[1],w*n[0]-w,1),e==path.length-1&&ds(w*n[1],w*n[0]+w,1),dir=direction(e)[0],ds(w*n[1],w*n[0],dir)}}function chkbs(){for(let e=0;e<path.length;e++){let n=toCoord(path[e])[1];n<minCol&&(minCol=n),n>maxCol&&(maxCol=n)}}function buildWalls(){for(let e=0;e<path.length-1;e++){let n=path[e],t=path[e+1];delete matrix[n][t],delete matrix[t][n]}}function draw(){let e=R.random_int(1,100);minCol=DIM=e<=60?14:e<=90?8:30,maxCol=-1,w=size/(dim=DIM),translate(0,w/2),ldpls(),chpls(),shfi();for(let e=0;e<3&&(e&&chkbs(),dim=DIM-1,sm(!e),dim=DIM,path.length>=dim-1);e++)drmz(),buildWalls(),console.log("Length "+e+": "+path.length);dim=DIM,drawBelow(),noLoop()}function setField(){for(var e=0;e<path.length;e++){var n=toCoord(path[e]);dir=direction(e)[0],field[n[0]][n[1]]=1}}function ds(e,n,t){switch(noFill(),strokeWeight(sywt*size),stroke(lc[0],lc[1],lc[2]),t){case 0:line(e,n+w/2,e+w,n+w/2);break;case 1:line(e+w/2,n,e+w/2,n+w);break;case 2:arc(e+w,n,w,w,HALF_PI,PI);break;case 3:arc(e+w,n+w,w,w,PI,PI+HALF_PI);break;case 4:arc(e,n,w,w,0,HALF_PI);break;case 5:arc(e,n+w,w,w,PI+HALF_PI,2*PI);break;default:point(e+w/2,n+w/2)}}function shfi(){plen=pal.length,bswt=1/(2*dim),sywt=.6*bswt,stroke(Z,0,0),strokeWeight(bswt*size);for(let e=0;e<dim;e++)stroke(pal[e%plen][0],pal[e%plen][1],pal[e%plen][2]),line(0,w*e,size,w*e)}function checkBound(e,n){return n==dim?T:1==field[n][e]?T:n+1<dim&&1==field[n+1][e]?T:e+1<dim&&1==field[n][e+1]?T:n-1>=0&&1==field[n-1][e]?T:e-1>=0&&1==field[n][e-1]?T:F}var N,minCol,maxCol,belows=[];function swbw(e){return(R.random_int(1,100)%3?F:T)||(e=!e),e}function below(){let e=!!R.random_int(0,1);for(let s=0;s<path.length;s++){var n=toCoord(path[s]),t=direction(s)[0],o=direction(s)[1];0!=t&&(1==t&&o==F?(e=swbw(e))&&belows.push([n[1],n[0]]):1==t&&o==T?(e=swbw(e))&&belows.push([n[1],n[0]+1]):2==t&&o==F?(e=swbw(e))&&belows.push([n[1],n[0]]):3==t&&o==T?(e=swbw(e))&&belows.push([n[1],n[0]+1]):4==t&&o==F?(e=swbw(e))&&belows.push([n[1],n[0]]):5==t&&o==T&&(e=swbw(e))&&belows.push([n[1],n[0]+1]))}e=swbw(e);let s=toCoord(path[path.length-1]);e&&belows.push([s[1],s[0]+1])}function drawBelow(){var e=bswt/9;for(let n in belows){let t=belows[n][0],o=belows[n][1];fill(bc),noStroke(),rect(w*t+w/6,w*o-bswt/2*size-e*size,w-w/6,bswt/2*size+bswt*size/2+2*e*size),stroke(pal[o%plen][0],pal[o%plen][1],pal[o%plen][2]),strokeWeight(bswt*size),line(w*t,w*o,w*t+w,w*o)}}function findValidNeig(e,n){for(var t=R.random_int(0,3),o=0;o<4;o++){var s=neig(e,n,(t+o)%4),r=s[0],i=s[1];if(valid(r,i)){var l=toHex(r,i);if(!v[l])return l}}if(0==q.length)return-1;var a=q.shift();N=a;var w=toCoord(a);return findValidNeig(w[0],w[1])}function gmz(){var e=R.random_int(0,dim-1);N=toHex(0,e);for(q=[],v=[];T;){0,q.push(N);var n,t=toCoord(N)[0],o=toCoord(N)[1];if(v[N]=T,-1==(n=findValidNeig(t,o)))return;matrix[N][n]=1,matrix[n][N]=1,N=n}}function neig(e,n,t){switch(t){case 0:return[e-1,n];case 1:return[e+1,n];case 2:return[e,n-1];case 3:return[e,n+1];default:console.log("puppa")}}function valid(e,n){return!(e<0||e>=dim||n<0||n>=dim)}function direction(e){var n=toCoord(path[e]),t=[-1,toCoord(path[0])[1]],o=[1e3,toCoord(path[path.length-1])[1]];return e<path.length-1&&(o=toCoord(path[e+1])),e>0&&(t=toCoord(path[e-1])),getSymbol(t,n,o)}function getSymbol(e,n,t){return e[0]==t[0]?[0,F]:e[1]==t[1]?e[0]<t[0]?[1,F]:[1,T]:e[0]<n[0]&&e[1]==n[1]&&n[0]==t[0]&&n[1]<t[1]?[2,F]:e[0]==n[0]&&e[1]>n[1]&&t[0]<n[0]&&n[1]==t[1]?[2,T]:n[0]<e[0]&&n[1]==e[1]&&n[0]==t[0]&&n[1]<t[1]?[3,T]:n[0]<t[0]&&n[1]==t[1]&&n[0]==e[0]&&n[1]<e[1]?[3,F]:e[0]<n[0]&&e[1]==n[1]&&t[0]==n[0]&&t[1]<n[1]?[4,F]:t[0]<n[0]&&t[1]==n[1]&&e[0]==n[0]&&e[1]<n[1]?[4,T]:e[0]==n[0]&&e[1]<n[1]&&t[0]>n[0]&&t[1]==n[1]?[5,F]:t[0]==n[0]&&t[1]<n[1]&&e[0]>n[0]&&e[1]==n[1]?[5,T]:69}function toCoord(e){return[parseInt(e.split(";")[0]),parseInt(e.split(";")[1])]}function toHex(e,n){return e+";"+n}function gmx(e,n){for(var t=0;t<e;t++)for(var o=0;o<n;o++){var s=toHex(t,o);matrix[s]={}}}let sdn=(e,n)=>{let t=null;for(let o in e){(null===t||e[o]<e[t])&&!n.includes(o)&&(t=o)}return t},fsp=(e,n,t)=>{let o={};o[t]="Infinity",o=Object.assign(o,e[n]);let s={en:null};for(let t in e[n])s[t]=n;let r=[],i=sdn(o,r);for(;i;){let t=o[i],l=e[i];for(let e in l)if(String(e)!==String(n)){let n=t+l[e];(!o[e]||o[e]>n)&&(o[e]=n,s[e]=i)}r.push(i),i=sdn(o,r)}let l=[t],a=s[t];for(;a;)l.push(a),a=s[a];return l.reverse(),{dist:o[t],path:l}};
↓ show full (10,910 bytes)