Files
AdventOfCode2024/09/09-1.py
2024-12-09 20:31:13 +01:00

70 lines
1.8 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
file = "./input.txt"
#file = "./ex2.txt"
#file = "./ex1.txt"
from time import time
start_time = time()
def extend_input_to_list(input_str:str) -> list[int]:
out = []
free = False
idn = 0
for element in input_str:
for e in range(int(element)):
if free:
out.append(-1)
else:
out.append(idn)
if not free:
idn += 1
free = not free
return out
def de_frag(input_list:list[int]) -> list[int]:
out = []
i_less_than_j = True
for i in range(len(input_list)):
if input_list[i] != -1:
out.append(input_list[i])
elif not i_less_than_j:
break
else:
for j in range(len(input_list)-1, 0, -1):
if j <= i:
i_less_than_j = False
break
elif input_list[j] == -1:
continue
else:
out.append(input_list[j])
input_list[j] = -1
break
return out
def checksum(input_list:list[int]) -> int:
result = 0
for i in range(len(input_list)):
result += i * input_list[i]
return result
if __name__ == "__main__":
input_string = ""
input_file = open(file, "r")
for line in input_file:
line = line.strip()
if line == "":
continue
input_string += line
input_file.close()
#print(extend_input_to_list(input_string))
ex = extend_input_to_list(input_string)
#print(de_frag(extend_input_to_list(input_string)))
print(len(ex))
de = de_frag(ex)
print(len(de))
sol = checksum(de)
print(f'Solution: {sol}')
print(f'Runtime: {time()-start_time:.2f} s')