From 492bdb29fd0eb2cbb661e197f164ba1a8045c24c Mon Sep 17 00:00:00 2001 From: TimStallard Date: Sun, 10 Dec 2017 12:18:49 +0000 Subject: [PATCH] day 10 --- day10/part1.js | 18 ++++++++++++++++++ day10/part2.js | 27 +++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 day10/part1.js create mode 100644 day10/part2.js diff --git a/day10/part1.js b/day10/part1.js new file mode 100644 index 0000000..79c0a3d --- /dev/null +++ b/day10/part1.js @@ -0,0 +1,18 @@ +var list = []; +for(var i = 0; i < 256; i++){ + list.push(i); +} +var pos = 0; +var lengths = [97,167,54,178,2,11,209,174,119,248,254,0,255,1,64,190]; +var skip = 0; +for(var length of lengths){ + for(var i = 0; i < (length/2); i++){ + var a = list[(pos+i)%list.length]; + var b = list[(pos+length-1-i)%list.length]; + list[(pos+i)%list.length] = b; + list[(pos+length-1-i)%list.length] = a; + } + pos += length + skip; + skip += 1; +} +console.log(list[0] * list[1]); diff --git a/day10/part2.js b/day10/part2.js new file mode 100644 index 0000000..98af73a --- /dev/null +++ b/day10/part2.js @@ -0,0 +1,27 @@ +function hash(input){ + var list = []; + for(var i = 0; i < 256; i++){ + list.push(i); + } + var pos = 0; + var lengths = input.split("").filter((a)=>(a)).map((a)=>(a.charCodeAt(0))).concat([17, 31, 73, 47, 23]); + var skip = 0; + for(var x = 0; x < 64; x++){ + for(var length of lengths){ + for(var i = 0; i < (length/2); i++){ + var a = list[(pos+i)%list.length]; + var b = list[(pos+length-1-i)%list.length]; + list[(pos+i)%list.length] = b; + list[(pos+length-1-i)%list.length] = a; + } + pos += length + skip; + pos = pos % list.length; + skip += 1; + } + } + + var hash = list.reduce((arr, a, i)=>{arr[Math.floor(i/16)] = arr[Math.floor(i/16)] ^ a; return arr;}, []); + return hash.map((a)=>(a.toString(16))).map((a)=>((a.length == 1) ? ("0" + a) : (a))).join(""); +} + +console.log(hash("97,167,54,178,2,11,209,174,119,248,254,0,255,1,64,190"));