Skip to content

Instantly share code, notes, and snippets.

View devNoiseConsulting's full-sized avatar

Michael Flynn devNoiseConsulting

View GitHub Profile
@devNoiseConsulting
devNoiseConsulting / ac20171218.js
Created January 3, 2018 03:27
Duet - Advent of Code - 20171218
let duet = function(instructions) {
let offset = 'a'.charCodeAt();
let registers = new Array(26).fill(0);
let played = 0;
let recovered = 0;
let index = 0;
let executeInstruction = function(instruction) {
let [operation, a, b] = instruction.split(' ');
@devNoiseConsulting
devNoiseConsulting / ac20171217.js
Created January 3, 2018 03:26
Spinlock - Advent of Code - 20171217
let spinLock_1 = function(step, target) {
let buffer = [0];
let position = 0;
for (let i = 1; i <= target; i++) {
position = (position + step) % buffer.length;
buffer.splice(++position, 0, i);
}
return buffer[position + 1];
};
@devNoiseConsulting
devNoiseConsulting / ac20171216.js
Created January 3, 2018 03:26
Permutation Promenade - Advent of Code - 20171216
let dance = function(letters, moves) {
let swap = function(arr, i1, i2) {
arr = arr.slice();
let hold = arr[i2];
arr[i2] = arr[i1];
arr[i1] = hold;
return arr;
};
@devNoiseConsulting
devNoiseConsulting / ac20171215.js
Created January 3, 2018 03:25
Dueling Generators - Advent of Code - 20171215
let generator = function(value, factor) {
return (value * factor) % 2147483647;
};
let generatorA1 = function(value) {
return generator(value, 16807);
};
let generatorA2 = function(value) {
let found = false;
@devNoiseConsulting
devNoiseConsulting / ac20171214.js
Created January 3, 2018 03:25
Disk Defragmentation - Advent of Code - 20171214
let knotHashRounds = function(lengths) {
let salt = [17, 31, 73, 47, 23];
let skip = 0;
let currentPosition = 0;
let numbers = new Array(256).fill(0).map((v, i) => i);
let knotHash = function(input, lengths) {
let numbers = input.slice();
lengths.forEach((v, i) => {
@devNoiseConsulting
devNoiseConsulting / ac20171213.js
Created January 3, 2018 03:25
Packet Scanners - Advent of Code - 20171213
let test_1 = `0: 3
1: 2
2: 4
4: 4
6: 5
8: 8
10: 6
12: 6
14: 6
16: 6
@devNoiseConsulting
devNoiseConsulting / ac20171212.js
Created January 3, 2018 03:24
Digital Plumber - Advent of Code - 20171212
let populateTree = function(nodesList) {
let tree = nodesList
.split('\n')
.map(p => {
let [node, children] = p.split(' <-> ');
if (children) {
children = children.split(', ');
}
return {
id: parseInt(node.trim()),
@devNoiseConsulting
devNoiseConsulting / ac20171211.js
Created January 3, 2018 03:24
Hex Ed - Advent of Code - 20171211
// https://www.redblobgames.com/grids/hexagons/implementation.html#code
function Hex(q, r, s) {
return { q: q, r: r, s: s };
}
function hex_add(a, b) {
return Hex(a.q + b.q, a.r + b.r, a.s + b.s);
}
function hex_subtract(a, b) {
@devNoiseConsulting
devNoiseConsulting / ac20171210.js
Created January 3, 2018 03:23
Knot Hash - Advent of Code - 20171210
let knotHash = function(size, lengths) {
let numbers = new Array(size).fill(0).map((v, i) => i);
let skip = 0;
let currentPosition = 0;
lengths.forEach((v, i) => {
let length = [...numbers, ...numbers]
.slice(currentPosition, currentPosition + v)
.reverse();
length.forEach((v, i) => {
@devNoiseConsulting
devNoiseConsulting / ac20171209.js
Created January 3, 2018 03:22
Stream Processing - Advent of Code - 20171209
let scoreStream = function(stream) {
let increment = 0;
let inGarbage = false;
let lastChar = '';
let garbageCount = 0;
let score = stream.reduce((acc, v, i) => {
switch (v) {
case '{':
//acc += ++increment;
//acc = !inGarbage && !ignore ? acc + ++increment : acc;