In an effort to learn python I am working my way through the Advent of Code challenges. Advent of Code is a coding challenge done during the holiday season every year, its a fun way to keep your skills sharp. It is also a great way to try and learn a new language because it gives you some focused challenges to figure out how the new language works to solve the problem. Check it out here https://adventofcode.com/2018
My full solution is on github here https://github.com/JustLogic/AdventOfCode2018_Python/tree/master/Day1
Part 1 Solution
import os
#Get File Path
script_dir = os.path.dirname(__file__)
rel_path = "Day1_Input.txt"
abs_file_path = os.path.join(script_dir, rel_path)
def is_int(value):
try:
int(value)
return True
except:
print(value)
return False
def do_frequency_calibration():
finalFrequency = 0
with open(abs_file_path) as fp:
for cnt, frequency in enumerate(fp):
if is_int(frequency):
finalFrequency += int(frequency)
print(finalFrequency)
return
do_frequency_calibration()
Part 2 Solution
import os
#Get File Path
script_dir = os.path.dirname(__file__)
rel_path = "Day1_Input.txt"
abs_file_path = os.path.join(script_dir, rel_path)
def is_int(value):
try:
int(value)
return True
except:
print(value)
return False
def main():
intialFrequency = 0
calculatedFrequencies = []
calculatedFrequencies.append(intialFrequency)
with open(abs_file_path) as f:
inputData = f.readlines()
inputData = [x.strip() for x in inputData]
inputFrequenciesChanges = inputData
do_calc(inputFrequenciesChanges, intialFrequency, calculatedFrequencies)
def do_calc(frequencyChanges, currentFrequency, calculatedFrequencies):
iFoundTheSecondFrequency = False
for frequency in frequencyChanges:
if is_int(frequency):
currentFrequency += int(frequency)
if currentFrequency in calculatedFrequencies:
iFoundTheSecondFrequency = True
print("Found second frequency: ", currentFrequency)
break
else:
calculatedFrequencies.append(currentFrequency)
if iFoundTheSecondFrequency == False:
print("checking list again")
print("Current Frequency: ", currentFrequency)
print("Num items in CalculatedFrequencies: ", len(calculatedFrequencies))
do_calc(frequencyChanges, currentFrequency, calculatedFrequencies)
else:
return
main()
