Add 2020 day 1,2,3

This commit is contained in:
Alice Gaudon 2020-12-05 01:43:42 +01:00
parent 243a4800d6
commit 8780290662
3 changed files with 87 additions and 0 deletions

24
2020/day1/day1.js Executable file
View File

@ -0,0 +1,24 @@
#!/bin/node
const fs = require('fs');
fs.readFile('input.txt', (err, data) => {
const numbers = data.toString().split('\n').map(n => parseInt(n));
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
if (numbers[i] + numbers[j] === 2020) {
console.log(numbers[i] * numbers[j]);
}
}
}
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
for (let k = j + 1; k < numbers.length; k++) {
if (numbers[i] + numbers[j] + numbers[k] === 2020) {
console.log(numbers[i] * numbers[j] * numbers[k]);
}
}
}
}
});

29
2020/day2/day2.js Executable file
View File

@ -0,0 +1,29 @@
#!/bin/node
const fs = require('fs');
fs.readFile('input.txt', (err, data) => {
const passwords = data.toString().split('\n').filter(l => l.length > 0);
let q1 = 0, q2 = 0;
for (const [format, password] of passwords.map(line => line.split(':'))) {
const [occurrences, letter] = format.split(' ');
const [min, max] = occurrences.split('-').map(n => parseInt(n));
console.log(min, max, letter, password);
// q1
let count = 0;
for (let j = 0; j < password.length; j++) {
if (password[j] === letter) {
count++;
}
}
if (count >= min && count <= max) q1++;
// q2
if (password[min] === letter && password[max] !== letter || password[min] !== letter && password[max] === letter) q2++;
}
console.log(q1, q2);
});

34
2020/day3/day3.js Executable file
View File

@ -0,0 +1,34 @@
#!/bin/node
const fs = require('fs');
fs.readFile('input.txt', (err, data) => {
const lines = data.toString().split('\n').filter(l => l.length > 0);
width = lines[0].length;
const slopes = [
[1, 1],
[3, 1],
[5, 1],
[7, 1],
[1, 2],
];
const positions = slopes.map(_ => 0);
const results = slopes.map(_ => 0);
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
for (let j = 0; j < slopes.length; j++) {
const [right, down] = slopes[j];
if (i % down === 0) {
if (line[positions[j]] === '#') results[j]++;
positions[j] = (positions[j] + right) % width;
}
}
}
console.log(results, results.reduce((a, n) => a * n, 1));
});