Some of my advent of code solutions for 2018


DAY ONE
function day1part1(data) {
let sum = 0;
for (let i = 0; i < data.length; i++) {
sum += data[i];
}
return sum;
}

function day1part2(data) {
const frequencies = [];
let sum = 0;
while (true) {
for (let i = 0; i < data.length; i++) {
const num = data[i];
sum += num;
if (frequencies.includes(sum)) {
return sum;
}
frequencies.push(sum);
}
}
}

DAY TWO

//Part 1
var count = 0;
var count2 = 0;
function getFrequency(string) {
var freq = {};
for (var i = 0; i < string.length; i++) {
var character = string.charAt(i);
if (freq[character]) {
freq[character]++;
} else {
freq[character] = 1;
}
}
if (Object.keys(freq).some(i => freq[i] === 2)) count++
if (Object.keys(freq).some(j => freq[j] === 3)) count2++
}
for (var i = 0; i < input.length; i++) {
getFrequency(input[i]);
}
console.log(count)
console.log(count2)
console.log(count * count2)
//Part 2
var freq = {};
for (let i = 0; i < input.length; i++) {
for (let j = 0; j < input.length; j++) {
var subChar = input[j].slice(i + 1);
console.log(subChar)
if (freq.includes(subChar)) {
return subChar;
}
freq.push(subChar);
}
}
DAY THREE

//part 1
var c = {};
var o = [];
for (var inp of input) {
var string = inp.split(/(\d+) @ (\d+),(\d+)\: (\d+)x(\d+)/);
var i = parseInt(string[1])
var l = parseInt(string[2])
var t = parseInt(string[3])
var w = parseInt(string[4])
var h = parseInt(string[5])
for (var j = t; j < t + h; j++) {
for (var k = l; k < l + w; k++) {
var key = k + "," + j ;
if (!c[key]) {
c[key] = [];
}
c[key] = c[key].concat(i);
if (c[key].length >= 2) {
o.push(key)
}
}
}
}
console.log(o)
//part 2
var c = {};
var ov = [];
var o = [];
var id = [];
for (var inp of input) {
var string = inp.split(/(\d+) @ (\d+),(\d+)\: (\d+)x(\d+)/);
var i = parseInt(string[1])
var l = parseInt(string[2])
var t = parseInt(string[3])
var w = parseInt(string[4])
var h = parseInt(string[5])
id.push(i)
for (var y = t; y < t + h; y++) {
for (var x = l; x < l + w; x++) {
var key = x + "," + y;
if (!c[key]) {
c[key] = [];
}
c[key] = c[key].concat(i);
if (c[key].length >= 2) {
for (var i of id) {
ov.push(i);
}
}
}
}
}
for (const i of id) {
if (!ov.includes(i)) {
console.log(i);
}
}

Σχόλια