This commit is contained in:
Joshua Seigler 2021-12-07 00:55:10 -05:00
parent a771143991
commit 64bea87901
4 changed files with 66 additions and 13 deletions

View file

@ -95,16 +95,18 @@
}, },
{ {
"part1": { "part1": {
"solved": false, "solved": true,
"result": null, "result": "345035",
"attempts": [], "attempts": [],
"time": null "time": 0.71
}, },
"part2": { "part2": {
"solved": false, "solved": true,
"result": null, "result": "97038163",
"attempts": [], "attempts": [
"time": null "97038219"
],
"time": 46.18
} }
}, },
{ {

View file

@ -17,7 +17,7 @@
[![Day](https://badgen.net/badge/04/%E2%98%85%E2%98%85/green)](src/day04) [![Day](https://badgen.net/badge/04/%E2%98%85%E2%98%85/green)](src/day04)
[![Day](https://badgen.net/badge/05/%E2%98%85%E2%98%85/green)](src/day05) [![Day](https://badgen.net/badge/05/%E2%98%85%E2%98%85/green)](src/day05)
[![Day](https://badgen.net/badge/06/%E2%98%85%E2%98%85/green)](src/day06) [![Day](https://badgen.net/badge/06/%E2%98%85%E2%98%85/green)](src/day06)
![Day](https://badgen.net/badge/07/%E2%98%86%E2%98%86/gray) [![Day](https://badgen.net/badge/07/%E2%98%85%E2%98%85/green)](src/day07)
![Day](https://badgen.net/badge/08/%E2%98%86%E2%98%86/gray) ![Day](https://badgen.net/badge/08/%E2%98%86%E2%98%86/gray)
![Day](https://badgen.net/badge/09/%E2%98%86%E2%98%86/gray) ![Day](https://badgen.net/badge/09/%E2%98%86%E2%98%86/gray)
![Day](https://badgen.net/badge/10/%E2%98%86%E2%98%86/gray) ![Day](https://badgen.net/badge/10/%E2%98%86%E2%98%86/gray)
@ -111,9 +111,9 @@ Both parts: 25.08ms
``` ```
Day 07 Day 07
Time part 1: - Time part 1: 0.71ms
Time part 2: - Time part 2: 46.18ms
Both parts: - Both parts: 46.89ms
``` ```
``` ```
@ -243,8 +243,8 @@ Both parts: -
``` ```
``` ```
Total stars: 12/50 Total stars: 14/50
Total time: 331.78999999999996ms Total time: 378.67999999999995ms
``` ```
<!--/RESULTS--> <!--/RESULTS-->

9
src/day07/README.md Normal file
View file

@ -0,0 +1,9 @@
# 🎄 Advent of Code 2021 - day 7 🎄
## Info
Task description: [link](https://adventofcode.com/2021/day/7)
## Notes
...

42
src/day07/index.js Normal file
View file

@ -0,0 +1,42 @@
import run from "aocrunner"
const parseInput = (rawInput) =>
rawInput.trim().split`,`.map((x) => +x).sort((a, b) => a - b)
const part1 = (rawInput) => {
const input = parseInput(rawInput)
const median = input[Math.floor(input.length / 2)]
return input.reduce((acc, cur) => acc + Math.abs(cur - median), 0)
}
const part2 = (rawInput) => {
const input = parseInput(rawInput)
const min = input[0],
max = input[input.length - 1]
const gas = (position) =>
input.reduce(
(acc, cur) =>
acc + ((1 + Math.abs(cur - position)) * Math.abs(cur - position)) / 2,
0,
)
let bestGas = Infinity
for (let pos = min; pos <= max; pos++) {
const thisGas = gas(pos)
if (thisGas < bestGas) {
bestGas = thisGas
}
}
return bestGas
}
run({
part1: {
tests: [{ input: `16,1,2,0,4,2,7,1,2,14`, expected: 37 }],
solution: part1,
},
part2: {
tests: [{ input: `16,1,2,0,4,2,7,1,2,14`, expected: 168 }],
solution: part2,
},
trimTestInputs: true,
})