Day 6 done
This commit is contained in:
parent
75d5cb8943
commit
8b1cda63b1
|
@ -18,40 +18,35 @@ const times = rtimes.filter((o) => o !== "").map((o) => Number(o));
|
||||||
const [d, ...rdist] = input[1].split(" ");
|
const [d, ...rdist] = input[1].split(" ");
|
||||||
const dist = rdist.filter((o) => o !== "").map((o) => Number(o));
|
const dist = rdist.filter((o) => o !== "").map((o) => Number(o));
|
||||||
|
|
||||||
|
let mul = 1;
|
||||||
|
|
||||||
for (let i = 0; i < times.length; i++) {
|
for (let i = 0; i < times.length; i++) {
|
||||||
races.push({ time: times[i], distance: dist[i] });
|
races.push({ time: times[i], distance: dist[i] });
|
||||||
}
|
}
|
||||||
console.log(races);
|
console.log(races);
|
||||||
|
|
||||||
function getSpeed(race: Race, holdTime: number): number {
|
function getDistance(race: Race, holdTime: number): number {
|
||||||
return (race.time - holdTime) * holdTime;
|
return (race.time - holdTime) * holdTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
const counts: number[] = [];
|
|
||||||
|
|
||||||
for (const race of races) {
|
for (const race of races) {
|
||||||
let from = 1;
|
let from = 1;
|
||||||
let to = 1;
|
let to = 1;
|
||||||
for (let i = 0; i < race.time; i++) {
|
for (let i = 0; i < race.time; i++) {
|
||||||
if (getSpeed(race, i) > race.distance) {
|
if (getDistance(race, i) > race.distance) {
|
||||||
from = i;
|
from = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (let i = race.time; i >= 0; i--) {
|
for (let i = race.time; i >= 0; i--) {
|
||||||
if (getSpeed(race, i) > race.distance) {
|
if (getDistance(race, i) > race.distance) {
|
||||||
to = i;
|
to = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
counts.push(to - from + 1);
|
mul *= to - from + 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let mul = 1;
|
|
||||||
for (const count of counts) {
|
|
||||||
mul *= count;
|
|
||||||
}
|
|
||||||
console.log(mul);
|
console.log(mul);
|
||||||
|
|
||||||
const timeTotal = new Date().getTime() - timeFrom;
|
const timeTotal = new Date().getTime() - timeFrom;
|
62
day6_plot.p8
Normal file
62
day6_plot.p8
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
pico-8 cartridge // http://www.pico-8.com
|
||||||
|
version 41
|
||||||
|
__lua__
|
||||||
|
|
||||||
|
local races = {
|
||||||
|
{ 7, 9 },
|
||||||
|
{ 15, 40 },
|
||||||
|
{ 30, 200 }
|
||||||
|
}
|
||||||
|
|
||||||
|
printh("")
|
||||||
|
printh("aoc 2023 6")
|
||||||
|
printh("")
|
||||||
|
|
||||||
|
function get_dist(race, t)
|
||||||
|
return (race[1] - t) * t
|
||||||
|
end
|
||||||
|
|
||||||
|
function trace()
|
||||||
|
line(1, 126, 127, 126, 13)
|
||||||
|
line(1, 126, 1, 1, 13)
|
||||||
|
print("distance", 3, 1, 8)
|
||||||
|
local x, y
|
||||||
|
for race in all(races) do
|
||||||
|
local md = 0 ym = 0 xm = 0 bt = 0 pd = 0
|
||||||
|
line(2, 126 - race[2] / 2, 127, 126 - race[2] / 2, 2)
|
||||||
|
print("time", 80, 114, 15)
|
||||||
|
print("pressed", 80, 121, 15)
|
||||||
|
line()
|
||||||
|
for i = 0, race[1] do
|
||||||
|
local dist = get_dist(race, i)
|
||||||
|
x = 1 + i * 4
|
||||||
|
y = 126 - dist / 2
|
||||||
|
if dist > md then
|
||||||
|
md = dist xm = x ym = y
|
||||||
|
end
|
||||||
|
line(x, y, 7)
|
||||||
|
yield()
|
||||||
|
if pd > dist and bt == 0 then bt = i - 1 end
|
||||||
|
pd = dist
|
||||||
|
end
|
||||||
|
print(md .. "MM", xm - 2, ym - 6, 8)
|
||||||
|
print(bt .. "MS", xm + 20, ym - 6, 15)
|
||||||
|
-- print(race[2],50,126-race[2]/2-6,2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local co = cocreate(trace)
|
||||||
|
|
||||||
|
cls()
|
||||||
|
|
||||||
|
function _update()
|
||||||
|
coresume(co)
|
||||||
|
end
|
||||||
|
|
||||||
|
__gfx__
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
Loading…
Reference in New Issue
Block a user