Day 4 visualization

This commit is contained in:
Simon Cambier 2023-12-04 20:14:28 +01:00
parent f889ccffc0
commit e8f4923de1

80
day4.p8
View File

@ -2,7 +2,8 @@ pico-8 cartridge // http://www.pico-8.com
version 41
__lua__
local input = split([[Card 1: 47 10 77 75 94 50 93 43 27 18|73 75 32 65 98 76 71 13 50 78 54 94 18 83 77 6 79 93 45 27 87 57 51 55 43
local input = split(
[[Card 1: 47 10 77 75 94 50 93 43 27 18|73 75 32 65 98 76 71 13 50 78 54 94 18 83 77 6 79 93 45 27 87 57 51 55 43
Card 2: 17 9 7 91 32 97 76 39 83 88|88 25 46 50 91 18 39 76 17 22 28 82 44 66 52 7 11 56 77 9 40 83 97 32 47
Card 3: 32 2 10 96 30 37 60 86 88 50|64 96 58 41 24 37 86 84 80 49 30 53 83 50 42 33 2 52 88 46 19 89 32 51 5
Card 4: 62 21 85 90 64 44 29 2 86 84|98 21 82 55 62 14 3 33 7 90 85 57 94 44 64 5 43 91 96 67 84 78 69 81 29
@ -199,7 +200,8 @@ Card 194: 86 2 31 64 69 39 24 61 59 37|46 85 40 90 73 92 8 71 24 97 35 70 19 57
Card 195: 82 32 90 59 51 6 27 24 36 98|74 79 95 91 14 87 39 57 1 20 37 93 68 4 54 66 86 35 36 28 38 49 65 98 67
Card 196: 54 71 23 38 79 55 78 67 44 10|71 17 85 93 55 72 68 14 8 11 75 86 52 41 47 61 29 53 3 59 30 21 76 92 32
Card 197: 7 65 66 60 52 23 15 27 32 3|59 4 79 97 91 41 83 36 22 89 19 38 96 81 8 29 49 86 46 12 25 6 24 16 78
Card 198: 89 99 29 80 68 39 38 10 2 63|88 8 92 81 23 54 1 12 45 96 67 86 37 98 47 34 71 4 58 3 27 41 75 93 66]], "\n")
Card 198: 89 99 29 80 68 39 38 10 2 63|88 8 92 81 23 54 1 12 45 96 67 86 37 98 47 34 71 4 58 3 27 41 75 93 66]], "\n"
)
printh("")
printh("Advent of Code 2013 - Day 4")
@ -233,38 +235,60 @@ for i = 1, #input do
copies[i] = "1"
end
for i, line in ipairs(input) do
printh("Card " .. i .. " - " .. copies[i] .. " copies")
local numbers = split(line, ":")[2]
local winning = split(split(numbers, "|")[1], " ")
local mine = split(split(numbers, "|")[2], " ")
local iter = cocreate(function()
for i, lne in ipairs(input) do
printh("Card " .. i .. " - " .. copies[i] .. " copies")
local numbers = split(lne, ":")[2]
local winning = split(split(numbers, "|")[1], " ")
local mine = split(split(numbers, "|")[2], " ")
local count = 0
for j, v in ipairs(mine) do
if contains(winning, v) then
count = count + 1
copies[i + count] = strdsum(copies[i + count], tostr(copies[i]))
local count = 0
for j, v in ipairs(mine) do
if contains(winning, v) then
count = count + 1
-- yay exponential growth
copies[i + count] = strdsum(copies[i + count], tostr(copies[i]))
-- lne(1, 0, 1, 10, 7)
-- pset(i, count, 7)
-- print(count)
-- circ(i%128, count*10, 1, 7)
line(i % 128, 0, i % 128, count * 10 + 10, 11)
yield()
end
end
printh(" " .. count .. " winning cards")
if count > 0 then
count = count - 1
-- printh(2 ^ count)
sum = strdsum(sum, tostr(2 ^ count))
end
end
printh(" " .. count .. " winning cards")
if count > 0 then
count = count - 1
-- printh(2 ^ count)
sum = strdsum(sum, tostr(2 ^ count))
printh("Part 1 " .. sum)
-- Part 2
local part2 = "0"
for i = 1, #copies do
-- printh("Card " .. i .. " - " .. copies[i] .. " copies")
part2 = strdsum(part2, tostr(copies[i]))
end
printh("Part 2 " .. part2)
end)
cls()
function _update()
coresume(iter)
for i = 1, 100 do
local x, y = rnd(128), rnd(128)
if pget(x, y) == 11 then
pset(x, y, 8)
elseif pget(x, y) == 8 then
pset(x, y, 0)
end
end
end
printh("Part 1 " .. sum)
-- Part 2
local part2 = "0"
for i = 1, #copies do
-- printh("Card " .. i .. " - " .. copies[i] .. " copies")
part2 = strdsum(part2, tostr(copies[i]))
end
printh("Part 2 " .. part2)
__gfx__
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000