mid-kid
5 years ago
2 changed files with 76 additions and 0 deletions
@ -0,0 +1,75 @@ |
|||||
|
signal = {} |
||||
|
file = io.open(arg[1]) |
||||
|
for num in file:read("a"):gmatch("%d") do |
||||
|
table.insert(signal, tonumber(num)) |
||||
|
end |
||||
|
file:close() |
||||
|
|
||||
|
function calc(signal, num) |
||||
|
local fin = #signal |
||||
|
local cur = num |
||||
|
local val = 0 |
||||
|
while cur <= fin do |
||||
|
for _, x in ipairs({1, 0, -1, 0}) do |
||||
|
if x == 0 then |
||||
|
cur = cur + num |
||||
|
else |
||||
|
local cur_val = 0 |
||||
|
for i = 1, num do |
||||
|
cur_val = cur_val + signal[cur] |
||||
|
cur = cur + 1 |
||||
|
if cur > fin then |
||||
|
break |
||||
|
end |
||||
|
end |
||||
|
val = val + cur_val * x |
||||
|
end |
||||
|
if cur > fin then |
||||
|
break |
||||
|
end |
||||
|
end |
||||
|
end |
||||
|
|
||||
|
return math.abs(val) % 10 |
||||
|
end |
||||
|
|
||||
|
function calc_dumb_p2(signal, offset) |
||||
|
local val = 0 |
||||
|
for i = #signal, offset, -1 do |
||||
|
val = (val + signal[i]) % 10 |
||||
|
signal[i] = val |
||||
|
end |
||||
|
end |
||||
|
|
||||
|
function signal_tostring(signal, start, len) |
||||
|
local str = "" |
||||
|
for i = start, len do |
||||
|
str = str .. string.format("%d", signal[i]) |
||||
|
end |
||||
|
return str |
||||
|
end |
||||
|
|
||||
|
offset = signal[1] * (10 ^ 6) + signal[2] * (10 ^ 5) + signal[3] * (10 ^ 4) + signal[4] * (10 ^ 3) + signal[5] * (10 ^ 2) + signal[6] * (10 ^ 1) + signal[7] |
||||
|
signal_p2 = {} |
||||
|
for i = 1, 10000 do |
||||
|
for i = 1, #signal do |
||||
|
table.insert(signal_p2, signal[i]) |
||||
|
end |
||||
|
end |
||||
|
print(offset) |
||||
|
offset = offset % #signal_p2 |
||||
|
print(offset) |
||||
|
|
||||
|
for i = 1, 100 do |
||||
|
for i = 1, #signal do |
||||
|
signal[i] = calc(signal, i) |
||||
|
end |
||||
|
end |
||||
|
|
||||
|
print("Part 1:", signal_tostring(signal, 1, 8)) |
||||
|
|
||||
|
for i = 1, 100 do |
||||
|
calc_dumb_p2(signal_p2, offset) |
||||
|
end |
||||
|
|
||||
|
print("Part 2:", signal_tostring(signal_p2, offset + 1, offset + 8)) |
@ -0,0 +1 @@ |
|||||
|
59717513948900379305109702352254961099291386881456676203556183151524797037683068791860532352118123252250974130706958763348105389034831381607519427872819735052750376719383812473081415096360867340158428371353702640632449827967163188043812193288449328058464005995046093112575926165337330100634707115160053682715014464686531460025493602539343245166620098362467196933484413717749680188294435582266877493265037758875197256932099061961217414581388227153472347319505899534413848174322474743198535953826086266146686256066319093589456135923631361106367290236939056758783671975582829257390514211329195992209734175732361974503874578275698611819911236908050184158 |
Loading…
Reference in new issue