memoscan
← all memos

Memo 0xb7a5fc47…023c0e on Ethereum

class Random{constructor(){this.useA=!1;let i=function(i){let t=parseInt(i.substring(0,8),16),s=parseInt(i.substring(8,16),16),e=parseInt(i.substring(16,24),16),r=parseInt(i.substring(24,32),16);return function(){e|=0;let i=((t|=0)+(s|=0)|0)+(r|=0)|0;return r=r+1|0,t=s^s>>>9,s=e+(e<<3)|0,e=(e=e<<21|e>>>11)+i|0,(i>>>0)/4294967296}};this.prngA=new i(tokenData.hash.substring(2,34)),this.prngB=new i(tokenData.hash.substring(34,66));for(let t=0;t<1e6;t+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(i,t){return i+(t-i)*this.random_dec()}random_int(i,t){return Math.floor(this.random_num(i,t+1))}random_bool(i){return this.random_dec()<i}random_choice(i){return i[this.random_int(0,i.length-1)]}}const R=new Random,backgroundCol=[0,0,94],palettes=[{name:"noir",backgroundCol,colors:[[300,7,3]]},{name:"refresher",backgroundCol,colors:[[63,100,42],[120,26,7],[354,91,64],]},{name:"rouge et blue",backgroundCol,colors:[[235,21,21],[218,17,62],[353,86,54],[350,96,43],]},{name:"mondrian",backgroundCol,colors:[[300,7,3],[222,100,61],[356,74,52],[44,98,62],]},{name:"kamerun",backgroundCol,colors:[[353,93,42],[49,93,51],[166,100,24],[150,50,2],]},{name:"ice",backgroundCol,colors:[[239,94,19],[201,100,36],[190,100,42],[189,75,75],[190,77,88],]},],palette=R.random_choice(palettes),gridSizeX=R.random_int(3,20),gridSizeY=R.random_int(3,gridSizeX),minX=6,minY=6,isGridMin=gridSizeX>=6&&gridSizeY>=6,traits={palette,isLined:!!isGridMin&&palette.name==palettes[0].name&&R.random_bool(.1),isFilled:R.random_bool(.85)},canvas={width:2480,height:3224},cfg={traits,canvas,grid:{width:canvas.width,height:canvas.height,margin:{x:150,y:150},cascade:R.random_bool(.75),isEvenSplit:R.random_bool(.25),x:gridSizeX,y:gridSizeY}};class Grid{constructor({width:i=0,height:t=0,x:s=0,y:e=0,margin:r={x:0,y:0},cascade:h=!1,isEvenSplit:n=!0}){return this.width=i-2*r.x,this.height=t-2*r.y,this.x=s,this.y=e,this.cascade=h,this.margin=r,this.isEvenSplit=n,this.cascade&&(this.width=t-2*r.y,this.height=i-2*r.x,this.y=s,this.x=e,this.margin={x:r.y,y:r.x}),this.blocks=this.generate(),this}generate=()=>{let i=[],t=R.random_bool(.5),s=this.y,e=this.height/(4*this.y),r=this.height/(this.y/1),h=this.splitNumber(this.height,e,r,s,!0,t),n=this.x,o=this.width/(4*this.x),a=this.width/(this.x/1),d=this.margin.y,c=1,l=1;for(let g=0;g<s;g++){let $=this.margin.x,p=!1,u=!1,_=this.splitNumber(this.width,o,a,n,this.isEvenSplit,!1);for(let m=0;m<n;m++){let w=!1,b=!1,f=!1,k=!1;0==g&&(p=!0),g==s-1&&(u=!0),0==m&&(f=!0),m==n-1&&(k=!0),0==m&&(w=!0),m==n-1&&(b=!0);let C=m+1;i.push({id:c,colId:this.cascade?l:C,rowId:this.cascade?C:l,isFirstBlock:w,isLastBlock:b,isFirstCol:this.cascade?p:f,isFirstRow:this.cascade?f:p,isLastCol:this.cascade?u:k,isLastRow:this.cascade?k:u,width:this.cascade?h[g]:_[m],height:this.cascade?_[m]:h[g],x:this.cascade?d:$,y:this.cascade?$:d}),$+=_[m],c++}d+=h[g],l++}return i};splitNumber=(i,t,s,e,r=!1,h=!1)=>{if(i<=0||t<=0||s<=0||t>s||e<=0)throw Error("Invalid input values. Ensure all inputs are positive and minSize is less than or equal to maxSize.");let n=e,o=[],a=i;for(let d=0;d<n;d++){let c;c=r?Math.min(s,a/(n-d)):Math.min(s,R.random_dec()*(a-t*(n-d))+t);let l=Math.max(t,c);o.push(l),a-=l}return(o[o.length-1]+=Math.max(0,a),h)?o.sort(()=>R.random_dec()-.5):o}}class Block{constructor(i={id,colId,rowId,isFirstBlock,isLastBlock,isFirstCol,isFirstRow,isLastCol,isLastRow,width,height,x,y},t={}){this.props=i,this.traits=t,this.id=i.id,this.width=Math.round(i.width),this.height=Math.round(i.height)}colourPick=()=>R.random_choice(this.traits.palette.colors)}class Box extends Block{generate(){this.col=this.colourPick(),this.isBorder=this.props.isLastCol||this.props.isFirstCol||this.props.isLastRow||this.props.isFirstRow,this.pos1=this.props.rowId/10,this.pos2=this.props.colId/100,this.points=[],this.points.push({x:0,y:0}),this.points.push({x:this.width,y:0}),this.points.push({x:this.width,y:this.height}),this.points.push({x:0,y:this.height})}show(i){noFill(),noStroke(),push(),this.traits.isLined?(stroke(this.col),strokeWeight(8*i)):fill(this.col);let t=(t,s)=>{vertex(t*i,s*i)};this.traits.isLined?beginShape(LINES):beginShape();for(let s=0;s<this.points.length;s++){let e=this.points[s%this.points.length],r=this.points[(s+1)%this.points.length],h=this.points[(s+2)%this.points.length],n=lerp(e.x,r.x,this.pos1),o=lerp(e.y,r.y,this.pos2),a=lerp(r.x,r.x,this.pos1),d=lerp(h.x,h.y,this.pos2);this.isBorder?t(a,d):this.traits.isFilled&&t(n,o)}endShape(CLOSE),pop()}}let isDebugView=!1;const scaleFactor=cfg.canvas.width/cfg.canvas.height,bgCol=cfg.traits.palette.backgroundCol;window.setup=()=>{let i=window.innerHeight*scaleFactor,t=window.innerWidth/scaleFactor;window.innerHeight>window.innerWidth?createCanvas(window.innerWidth,t):createCanvas(i,window.innerHeight),noLoop(),noStroke(),noFill(),angleMode(DEGREES),colorMode(HSL)};const grid=new Grid(cfg.grid);let innerGridBlocks=[];grid.blocks.forEach((i,t)=>{let s=cfg.grid.x>3?cfg.grid.x:2*cfg.grid.x,e=cfg.grid.y>3?cfg.grid.y:2*cfg.grid.y,r=new Grid({width:i.width,height:i.height,cascade:R.random_bool(.5),isEvenSplit:R.random_bool(.25),x:R.random_int(2,s),y:R.random_int(2,e)});innerGridBlocks.push([]),r.blocks.forEach((i,s)=>{i.style=new Box(i,cfg.traits),i.style.generate(),innerGridBlocks[t].push(i)})}),window.draw=()=>{let i=width/cfg.canvas.width;background(bgCol),grid.blocks.forEach((t,s)=>{push(),translate(t.x*i,t.y*i),innerGridBlocks[s].forEach(t=>{push(),translate(t.x*i,t.y*i),t.style.show(i),pop()}),isDebugView&&(stroke([0,0,34]),strokeWeight(8*i),rect(0,0,t.width*i,t.height*i)),pop()})};const redrawArtwork=()=>{let i=window.innerHeight*scaleFactor,t=window.innerWidth/scaleFactor;window.innerHeight>window.innerWidth?resizeCanvas(window.innerWidth,t):resizeCanvas(i,window.innerHeight)};window.windowResized=()=>{redrawArtwork()},window.keyPressed=i=>{("d"==i.key||68==i.keyCode)&&(isDebugView=!isDebugView,redrawArtwork())},console.log(tokenData),console.log(cfg),console.warn("fingacode woz ere 2k23 i.d.s.t");