day 9 part one finally done
This commit is contained in:
		
							
								
								
									
										44
									
								
								09/index.ts
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								09/index.ts
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
				
			|||||||
import fs from "node:fs";
 | 
					import fs from "node:fs";
 | 
				
			||||||
import { printTime, now, toNum } from "../util";
 | 
					import { printTime, now, toNum } from "../util";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const test = true;
 | 
					const test = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const data = fs.readFileSync(
 | 
					const data = fs.readFileSync(
 | 
				
			||||||
  test ? "./inputs/testinput" : "./inputs/input",
 | 
					  test ? "./inputs/testinput" : "./inputs/input",
 | 
				
			||||||
@@ -9,9 +9,8 @@ const data = fs.readFileSync(
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let timer = now.instant();
 | 
					let timer = now.instant();
 | 
				
			||||||
console.log(
 | 
					
 | 
				
			||||||
  "part one:",
 | 
					let sparceArray = data
 | 
				
			||||||
  data
 | 
					 | 
				
			||||||
  .split("\n")
 | 
					  .split("\n")
 | 
				
			||||||
  .slice(0, -1)[0]
 | 
					  .slice(0, -1)[0]
 | 
				
			||||||
  .split("")
 | 
					  .split("")
 | 
				
			||||||
@@ -19,25 +18,32 @@ console.log(
 | 
				
			|||||||
  .reduce((disk, curr, index) => {
 | 
					  .reduce((disk, curr, index) => {
 | 
				
			||||||
    const fill = index % 2 === 0 ? index / 2 : -1; // -1 represents free space
 | 
					    const fill = index % 2 === 0 ? index / 2 : -1; // -1 represents free space
 | 
				
			||||||
    return [...disk, ...Array.from({ length: curr }, () => fill)];
 | 
					    return [...disk, ...Array.from({ length: curr }, () => fill)];
 | 
				
			||||||
    }, [] as Array<number>)
 | 
					  }, [] as Array<number>);
 | 
				
			||||||
    .reduce((disk, current, i, a) => {
 | 
					
 | 
				
			||||||
      console.log(disk, current, i, a);
 | 
					let rightCursor = sparceArray.length - 1;
 | 
				
			||||||
      if (current === -1) {
 | 
					let leftCursor = 0;
 | 
				
			||||||
        while (true) {
 | 
					while (leftCursor < rightCursor) {
 | 
				
			||||||
          let tail = a.pop();
 | 
					  if (sparceArray[leftCursor] === -1) {
 | 
				
			||||||
          if (tail === -1 || tail === undefined) {
 | 
					    while (sparceArray[rightCursor] === -1) {
 | 
				
			||||||
            continue;
 | 
					      rightCursor--;
 | 
				
			||||||
          } else {
 | 
					 | 
				
			||||||
            return [...disk, tail];
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if (leftCursor > rightCursor) {
 | 
				
			||||||
 | 
					      // don't let them overrun each other
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
      } else {
 | 
					    sparceArray[leftCursor] = sparceArray[rightCursor];
 | 
				
			||||||
        return [...disk, current];
 | 
					    sparceArray[rightCursor] = -1;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
    }, [] as Array<number>)
 | 
					  leftCursor++;
 | 
				
			||||||
    .reduce((checksum, curr, i) => {
 | 
					}
 | 
				
			||||||
      console.log(curr, i);
 | 
					
 | 
				
			||||||
 | 
					console.log(
 | 
				
			||||||
 | 
					  "part one:",
 | 
				
			||||||
 | 
					  sparceArray.reduce((checksum, curr, i) => {
 | 
				
			||||||
 | 
					    if (curr !== -1) {
 | 
				
			||||||
      return checksum + curr * i;
 | 
					      return checksum + curr * i;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return checksum;
 | 
				
			||||||
  }, 0),
 | 
					  }, 0),
 | 
				
			||||||
  printTime(now.instant().since(timer))
 | 
					  printTime(now.instant().since(timer))
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user