Advertisement
Guest User

Advent of Code - Day 2 Puzzle #1

a guest
Dec 2nd, 2015
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function howMuchPaper(arr) {
  2.   var newArr = [];
  3.   var sum = 0;
  4.  
  5.   // turn each string into array value, remove the x and turn string into int.
  6.   // turn each array item into an object with keys for l, w, and h
  7.   function createObj(item) {
  8.     var w = item.replace(/x/g, ' ').split(' ');
  9.     for(var i = 0; i < w.length; i++) {
  10.       w[i] = parseInt(w[i]);
  11.     }
  12.     newArr.push({length: w[0], width: w[1], height: w[2]});
  13.   }
  14.   var objects = arr.map(createObj);
  15.  
  16.   // iterate over each object
  17.   // make new array of sq ft of l, w, h
  18.   // sort the array to find the smallest and divide that by half to find area
  19.   // add smallest area and sq ft of packages to sum
  20.   function findSq(item) {
  21.     var ref = newArr[newArr.indexOf(item)];
  22.     var tArr = [];
  23.     tArr.push((ref.length * ref.width) * 2, (ref.width * ref.height) * 2, (ref.height * ref.length) * 2);
  24.     var smallest = tArr.reduce(function(a, b) {
  25.     return a <= b ? a : b;
  26.   });
  27.     smallest = smallest / 2;
  28.     sum += smallest;
  29.     for(var i = 0; i < tArr.length; i++) {
  30.       sum += tArr[i];
  31.     };    
  32.   }
  33.  
  34.   var sq = newArr.map(findSq);
  35.  
  36.   return sum;
  37. }
  38.  
  39. howMuchPaper(['29x13x26','11x11x14','27x2x5','6x10x13','15x19x10','26x29x15','8x23x6','17x8x26','20x28x3','23x12x24','11x17x3','19x23x28','25x2x25','1x15x3','25x14x4','23x10x23','29x19x7','17x10x13','26x30x4','16x7x16','7x5x27','8x23x6','2x20x2','18x4x24','30x2x26','6x14x23','10x23x9','29x29x22','1x21x14','22x10x13','10x12x10','20x13x11','12x2x14','2x16x29','27x18x26','6x12x20','18x17x8','14x25x1','30x15x22','17x18x7','28x23x24','15x12x25','14x7x20','29x23x8','24x5x22','6x22x8','1x15x26','14x5x1','24x28x28','17x23x23','4x15x7','23x8x11','6x15x1','23x18x13','17x1x26','23x13x17','2x18x8','22x22x1','10x22x6','28x29x20','22x21x25','14x8x23','12x30x14','8x7x5','3x30x15','4x3x29','25x18x3','16x7x16','4x3x8','9x16x30','20x28x3','28x24x6','4x18x2','23x18x5','22x4x30','15x30x9','7x12x12','3x22x29','12x1x9','9x2x25','17x11x10','25x24x7','7x27x26','26x4x12','29x2x26','19x24x12','23x23x3','26x28x16','18x4x16','25x30x18','29x19x19','16x3x27','29x25x29','18x19x5','14x21x30','19x13x26','19x10x15','9x4x7','18x6x6','24x25x29','9x12x27','15x3x22','30x17x21','18x19x28','9x11x12','8x28x22','11x3x4','28x17x20','24x18x15','11x12x13','6x19x24','28x4x5','28x22x23','13x29x2','9x16x15','29x28x1','10x18x30','19x11x12','26x28x25','23x17x13','25x1x21','17x1x27','17x27x28','28x13x15','14x13x25','11x29x7','22x29x5','13x6x14','23x18x13','25x7x17','18x9x20','21x11x2','28x11x13','13x25x1','19x29x25','16x29x4','10x21x10','7x25x17','5x9x3','1x15x6','8x27x29','23x6x30','22x22x29','6x20x30','26x25x29','10x19x19','20x30x9','5x30x24','17x10x27','30x14x30','8x17x4','7x18x6','3x5x4','24x17x15','14x20x17','22x27x15','18x14x15','23x9x11','21x16x29','7x18x21','9x3x29','10x13x4','2x30x4','23x20x4','8x22x21','29x28x4','13x16x25','21x9x11','7x26x26','13x23x30','19x7x10','9x23x21','21x9x17','9x21x15','20x29x22','23x13x15','19x25x2','12x11x30','20x21x6','21x6x17','24x26x9','29x21x29','29x26x16','6x16x1','2x12x6','6x7x20','7x2x22','6x22x4','13x11x27','25x27x14','11x8x6','26x11x14','30x3x29','27x21x20','15x16x26','6x22x10','11x9x25','23x13x6','13x9x3','30x22x13','29x23x14','25x19x6','7x29x11','19x18x5','29x25x13','25x24x27','1x9x12','22x9x17','14x12x28','19x21x17','13x25x17','14x25x12','4x14x30','7x15x28','3x6x25','6x2x16','15x19x11','17x30x20','20x23x7','26x21x6','26x29x24','2x4x30','4x22x18','13x3x28','27x6x21','5x3x27','12x7x11','28x11x9','12x9x2','1x22x20','15x13x28','14x19x16','28x20x3','20x4x9','26x7x26','18x19x25','7x1x13','20x23x29','27x26x8','11x15x15','10x21x23','29x2x11','21x28x20','3x18x23','26x17x17','14x26x17','20x7x17','18x12x8','4x8x8','8x15x23','24x29x5','1x25x8','1x28x17','16x18x13','29x24x22','13x16x10','14x7x16','15x11x29','12x15x19','17x6x28','4x3x9','15x16x8','29x27x11','2x24x20','4x21x3','29x24x27','18x22x22','7x8x18','20x7x8','19x9x2','20x17x2','2x29x10','19x25x1','28x9x3','29x27x20','7x21x7','10x4x22','26x8x5','26x14x1','5x27x9','2x18x3','3x27x17','30x17x23','30x11x20','4x6x7','6x29x27','30x16x20','24x30x28','19x20x26','18x1x25','26x12x12','19x15x29','16x21x24','23x13x26','25x16x10','8x9x18','24x14x1','24x15x21','19x9x14','8x23x11','22x2x16','29x9x26','3x16x25','15x20x30','3x11x12','15x2x3','13x7x4','2x7x27','9x26x11','30x24x19','28x17x21','10x8x2','11x15x26','10x12x20','24x24x27','25x26x16','13x4x20','25x13x11','12x22x3','20x7x1','12x18x6','26x8x20','14x2x7','23x12x1','26x24x24','27x26x23','26x17x5','17x24x2','26x5x6','23x5x1','5x18x30','24x21x19','5x28x11','21x20x14','25x4x22','26x24x11','7x5x8','13x1x30','5x1x6','14x5x2','8x11x7','13x20x1','17x30x14','29x22x10','12x26x3','27x17x3','26x27x4','5x26x17','22x11x19','8x26x3','24x19x22','7x1x4','6x27x30','4x28x14','16x14x18','4x5x20','19x25x4','15x15x1','10x14x14','16x18x24','21x27x15','5x5x10','1x7x13','16x2x8','13x15x11','3x25x10','20x29x8','12x3x2','10x13x12','25x27x1','11x30x19','7x19x13','27x6x18','16x21x19','21x29x5','16x23x12','29x19x15','5x5x10','27x15x1','13x16x22','29x19x5','8x12x9','3x18x5','13x25x3','5x9x21','10x20x16','9x9x11','23x21x1','22x2x15','27x8x13','23x7x3','26x30x15','29x15x16','16x27x13','2x18x9','10x27x8','20x9x25','10x2x17','16x13x13','21x26x1','27x26x24','9x30x16','19x17x28','25x15x1','10x26x6','10x11x11','5x26x25','30x4x15','9x8x23','14x25x7','8x28x8','28x18x24','4x4x25','16x25x11','17x27x8','15x16x9','24x13x21','17x3x27','27x5x26','8x27x12','29x2x8','24x23x30','1x30x21','6x18x20','13x14x12','25x30x23','24x6x24','12x7x21','11x6x8','8x30x30','26x3x12','28x6x5','18x7x1','7x6x20','14x16x18','11x22x15','4x20x10','19x24x19','8x24x11','4x9x10','6x6x22','10x9x29','1x5x28','19x25x29','20x30x3','15x13x13','9x9x24','20x14x29','26x24x13','2x25x8','10x26x2','12x19x12','18x6x20','4x5x14','26x27x10','16x26x20','3x21x15','2x26x18','14x11x17','26x26x25','10x1x11','17x19x19','27x28x26','9x2x10','19x30x15','23x30x14','15x3x20','2x14x22','21x18x8','22x4x29','19x6x29','9x26x29','16x10x9','22x12x22','13x28x14','25x14x28','28x3x30','10x17x1','10x27x22','10x23x19','14x25x9','11x24x8','30x25x10','22x13x28','2x7x6','11x20x8','9x22x14','19x16x9','11x24x4','11x17x2','6x4x10','26x10x10','12x14x5','27x10x3','15x3x6','11x7x19','22x10x12','21x26x10','13x20x3','27x8x8','1x24x23','24x9x22','23x17x23','3x28x19','2x20x28','23x17x24','26x1x4','4x1x12','5x6x16','13x22x13','25x21x21','20x21x12','9x24x25','17x16x12','12x28x9','18x16x27','29x12x2','30x12x15','24x11x10','4x9x22','4x24x5','19x11x5','6x25x6','1x20x17','22x8x21','11x26x4','16x19x3','8x12x8','13x2x18','10x5x11','8x12x17','21x2x5','26x17x26','23x18x17','28x11x14','1x4x27','29x5x28','5x9x10','5x7x25','20x15x27','15x11x17','12x14x1','29x14x4','18x14x18','14x25x24','26x14x18','13x8x11','30x1x23','3x4x12','12x24x9','8x6x16','14x15x30','12x30x8','22x11x18','16x30x28','17x18x4','13x14x23','2x28x8','3x28x30','29x30x8','4x6x26','6x30x17','11x30x30','19x4x3','12x15x20','22x28x4','26x30x2','6x12x7','1x10x5','25x29x7','17x9x18','16x21x29','21x14x7','15x16x11','26x6x15','8x24x7','2x20x4','2x9x3','19x8x13','18x7x22','27x14x17','2x13x8','18x15x26','15x27x27','18x11x15','1x29x20','21x12x11','20x2x15','28x23x9','1x1x17','7x23x9','30x9x27','9x16x18','15x24x28','30x11x18','29x26x10','9x5x25','2x1x19','14x3x14','6x3x6','30x15x20','20x17x27','28x10x9','14x24x28','17x11x6','12x3x6','8x8x15','23x14x21','11x21x7','5x13x30','4x29x25','30x28x24','18x4x9','3x15x6','13x9x19','30x14x7','7x9x9','17x11x26','24x26x13','16x21x16','27x17x25','2x21x11','9x11x27','3x3x7','13x8x14','20x20x26','13x29x22','30x11x1','7x10x19','27x5x9','23x17x15','21x6x13','24x15x16','18x4x14','18x16x6','22x11x18','14x2x5','15x3x7','10x20x29','16x1x10','30x23x1','10x15x11','17x14x5','22x8x13','7x11x28','26x17x3','2x23x2','28x13x19','18x12x28','22x23x16','14x12x1','20x8x19','17x19x13','29x2x12','2x26x27','29x16x4','13x8x18','16x15x30','23x16x2','28x8x27','21x8x23','13x20x26','19x6x17','17x30x15','7x4x30','2x13x30','18x7x19','4x13x27','8x6x5','18x20x25','2x3x30','23x27x13','22x30x4','23x25x25','23x16x19','25x3x1','5x6x15','11x29x12','25x24x7','16x7x20','20x3x2','12x27x15','16x10x12','1x3x14','22x1x26','2x24x18','11x29x16','15x2x9','10x1x24','21x8x11','30x11x23','6x30x21','13x27x29','14x6x5','18x29x19','12x4x28','29x3x14','10x30x28','5x7x15','14x1x10','9x25x14','7x24x18','28x17x21','18x13x25','26x15x1','21x1x19','12x16x21','4x6x13','7x15x26','17x19x5','12x28x2','1x20x19','27x7x5','17x26x8','12x15x19','5x23x10','8x2x8','16x13x12','14x27x1','26x29x3','24x16x14','14x13x13','7x22x23','2x9x30','4x27x8','26x27x15','23x1x6','25x29x18','5x18x1','20x8x20','5x10x25','30x25x15','7x22x25','28x26x17','29x4x1','21x11x27','20x9x8','25x22x12','2x11x11','23x2x16','23x27x20','2x13x28','27x2x24','11x1x17','12x4x27','16x20x22','30x12x10','5x15x4','5x2x27','12x4x25','1x16x4','27x4x4','21x16x3','27x26x3','24x6x6','24x12x12','20x20x25','8x29x2','21x4x5','2x4x8','4x13x19','3x20x10','12x15x16','6x5x4','12x16x20','22x19x17','8x17x22','25x16x15','7x1x19','10x1x7','23x23x5','28x6x12','2x25x12','10x27x12','24x27x19','14x14x20','4x1x5','16x27x29','20x20x24','28x24x30','6x15x15','9x15x30','23x26x3','17x24x21','22x25x25','18x29x10','20x25x1','24x11x16','20x7x21','20x7x9','7x26x2','5x18x1','16x26x28','4x10x18','27x30x21','26x9x9','8x16x14','6x27x8','28x9x20','13x13x4','9x18x16','18x15x18','22x19x14','14x10x17','25x29x11','1x18x19','8x11x26','18x6x14','30x24x13','27x1x27','15x9x3','2x29x17','2x26x21','22x9x9','20x20x20','22x28x2','26x5x16','11x3x14','21x16x16','18x26x7','18x30x6','7x11x12','15x10x2','27x2x16','27x30x24','28x14x24','7x4x8','6x28x15','13x19x1','22x26x30','7x30x24','2x17x21','19x26x2','19x24x15','14x23x2','21x27x15','30x15x14','21x29x5','23x30x2','4x1x2','15x5x13','21x2x30','20x7x16','1x21x25','2x25x1','12x29x5','28x13x16','26x3x12','29x20x23','28x12x20','4x30x8','16x15x16','6x16x29','2x28x13','24x25x2','26x15x22','17x20x11','18x12x7','19x1x18','8x27x13','22x16x8','19x26x17','13x11x10','22x12x3','13x12x14','29x17x9','6x14x10','14x20x10','8x26x9','25x13x22','3x30x25','14x28x1','30x29x12','3x17x15','3x24x14','28x24x22','16x6x1','20x25x14','17x17x13','6x19x27','10x15x20','8x23x20','7x29x21','18x9x25','10x5x22','2x27x27','16x18x30','15x5x12','26x29x29','28x11x10','9x29x28','24x15x23','26x9x10','5x1x25','22x27x16','7x29x3','1x3x5','8x7x29','19x21x11','28x13x30','17x16x20','5x10x25','9x14x15','15x14x23','16x4x17','21x8x2','9x9x8','22x22x4','10x2x27','12x19x10','15x29x4','22x14x7','29x18x5','1x7x27','24x1x15','23x23x26','12x17x23','26x10x24','8x22x2','8x1x10','22x19x12','2x23x13','11x27x25','26x15x27','27x7x21','18x9x6','22x21x22','7x12x26','23x21x13','14x3x8','5x9x28','29x29x15','27x25x23','12x2x24','8x2x20','29x19x4','12x24x29','2x27x28','14x20x9','28x6x25','18x29x8','19x11x30','15x11x23','18x7x7','14x20x14','26x18x22','27x25x13','12x10x30','30x2x7','28x10x1','18x10x30','22x11x5','22x16x3','25x15x9','5x10x24','4x28x8','19x24x18','3x4x25','14x4x30','11x26x3','12x12x12','26x7x24','3x2x14','1x27x7','2x2x13','3x26x26','12x4x11','12x17x20','4x19x30','5x18x10','17x6x18','19x30x20','11x2x17','30x13x19','22x23x7','17x28x2','5x17x30','7x11x4','21x26x18','15x28x4','5x6x27','12x6x16','9x17x12','27x20x5','14x5x20','27x14x6','2x14x21','4x28x30','24x5x1','19x29x29','11x23x1','8x16x21','3x17x19','10x13x5','20x21x16','23x3x6','27x26x11','3x2x22','14x3x5',
  40. '10x9x8']);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement