Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- printcave=()=>console.log('|' + cave.match(/.{7}/g).reverse().join('|\n|') + '|');
- R=[' oooo ',' o ooo o ',' ooo o o ',' o o o o ',' oo oo '];
- space = ''.padStart(21, ' ');
- wind = document.body.innerText.trim();
- len = wind.length;
- c=len*R.length;
- trimcave=()=>cave.replace(/([ ]{7})*$/,'');
- addRock=()=>cave=trimcave()+space+R[N++%R.length];
- fallers=()=>[...cave.matchAll(/o/g)];
- canMoveLeft=()=>fallers().every(r=>r.index%7&&cave[r.index-1] !== 'X');
- canMoveRight=()=>fallers().every(r=>(1+r.index)%7&&cave[r.index+1] !== 'X');
- canMoveDown=()=>fallers().every(r=>r.index>6&&cave[r.index-7] !== 'X');
- moveLeft=()=>{if(canMoveLeft())cave=cave.replace(/ (o+)/g,'$1 ')};
- moveRight=()=>{if(canMoveRight())cave=cave.replace(/(o+) /g,' $1')};
- moveDown=()=>{cave=[...cave].map((l,i,a)=>{
- if(l==' '&&a[i+7]=='o') return 'o';
- if(l=='o'&&(((i+7)>a.length)||(a[i+7]!='o'))) return ' ';
- return l;
- }).join('')};
- height=()=>(truncs*200)+(trimcave().length/7);
- results=[];
- dropRocks = (loops=c,k) => {
- cave = '';
- truncs=0;
- N=0;
- addRock();
- for(loopnum=0; loopnum < loops;loopnum++){
- if(cave.length>2100) {
- cave=cave.slice(1400);
- truncs++;
- }
- if(wind[loopnum%len]=='>') moveRight();
- else moveLeft();
- if(canMoveDown()){
- moveDown();
- }
- else{
- cave=cave.replace(/o/g,'X');
- if(N==k)return height();
- addRock();
- }
- }
- return([N, height()]);
- };
- [s,S]=dropRocks(c);
- [t,T]=dropRocks(c*2);
- dropRocks(c*2,s+(1e12-s)%(t-s))+Math.floor((1e12-s)/(t-s))*(T-S);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement