diff options
author | Christian Segundo | 2024-12-02 09:30:01 +0100 |
---|---|---|
committer | Christian Segundo | 2024-12-02 09:30:01 +0100 |
commit | 973ca9090337d17207e341b70119963022e2ddc9 (patch) | |
tree | d5c8eb20cc15fc124a3abcc3f859bc09b77879c1 /2.lua | |
parent | 241b0b80875a1428b3d0c98ab83405fd2667f23d (diff) | |
download | advent-of-code-2024-973ca9090337d17207e341b70119963022e2ddc9.tar.gz |
add day 2
Diffstat (limited to '2.lua')
-rw-r--r-- | 2.lua | 72 |
1 files changed, 72 insertions, 0 deletions
@@ -0,0 +1,72 @@ +local function is_safe(a) + local up = false + local down = false + local prev = nil + + for i, number in ipairs(a) do + number = tonumber(number) + + if prev == nil then + prev = number + goto continue + end + + if down==false and up==false then + if number < prev then down = true + elseif number > prev then up = true + else return false end + end + + if up then + if prev > number then return false end + local r=number-prev + if r~=1 and r~=2 and r~= 3 then return false end + prev = number + end + + if down then + if number > prev then return false end + local r=prev-number + if r~=1 and r~=2 and r~= 3 then return false end + prev = number + end + + ::continue:: + end + return true +end + +local file = io.open("2-input.txt", "r") + +local safe = 0 +local safe_one_skip = 0 + +for line in file:lines() do + local numbers = line:gmatch("[^%s]+") + local numbers_arr = {} + for i in numbers do + table.insert(numbers_arr, i) + end + + if is_safe(numbers_arr) then + safe = safe + 1 + safe_one_skip = safe_one_skip + 1 + else + for i=1, #numbers_arr do + local n = table.remove(numbers_arr, i) + if is_safe(numbers_arr) then + safe_one_skip = safe_one_skip + 1 + break + end + table.insert(numbers_arr, i, n) + end + end + +end + +file:close() +print("puzzle 1:", safe) +print("puzzle 2:", safe_one_skip) + +-- 490 +-- 536 |