Advent of code 2017 - Day 1
Update - If you want to follow along but don't know how to run the python code in order to get the answer so you can read the part 2 of the challenge (which reveals itself only after you successfully complete part 1), I wrote a quick log that you can check out
Alright. Day 1 challenge. Begin!
Day 1 challenge description - http://adventofcode.com/2017/day/1
December 14th 2017
15:07 So the first thing I do is to read the puzzle given and kind of draw up a flowchart of what the solution might look like
15:15 Once that's done I like to start writing tests. In a case like this where most of the work is iterating over the numbers and doing some fairly simple equal checking I can't see anything complex to test. Therefore I'll start by writing tests for each of the given examples in the puzzle.
(Pausing for a bit here. This was basically my lunch break for the day :D. Gotta get back to work).
December 15th 2017
11:00 Picking up where I left off. Starting the tests.
11:11 And we have our first working test for the value of 1122 where the sum is 3. Again, I won't be pasting the description of the problem here. It's all in the link above (respecting the author's requirements)
- Overall I feel like the current solution is pretty verbose. But I'm not going to be spending too much time on it. The harder problems are up ahead.
def solve_captcha(captcha_string): length_of_captcha_string = len(captcha_string) values_to_add= i = 0 while i<len(captcha_string): if i==(len(captcha_string)-1): current_value = captcha_string[i] next_value = captcha_string else: current_value = captcha_string[i] next_value = captcha_string[i+1] if current_value == next_value: values_to_add.append(int(current_value)) i+=1 return sum(values_to_add)
11:13 Time to test the rest of the test cases!
11:16 Confirmed! All tests are go :). Time to run it on my input. I'll need to write some extra code to read the input but nothing else needs to change.
11:23 Christmas begins! My first star has been registered :)
11:25 Commit is up
11:27 Solving part 2
- As is standard for Advent of Code, part 2 is a variant of part 1 and in this case, the input is the same. I'll be writing a new method called
solve_captcha_part_twoto work this out.
- Wrote a log to help people run code so they can get their answer to part 1 to follow along with part 2.
12:00 Drew up a quick flow for me to work with
12:07 And the first test worked for 1212 giving an output of 6! This is still all fairly straightforward so I expect the tests for the next values should work just as well.
def solve_captcha_part_two(captcha_string): halfway_length = len(captcha_string)//2 input_length = len(captcha_string) values_to_add =  i = 0 while i<input_length: current_value = captcha_string[i] if i+halfway_length>=input_length: next_value = captcha_string[i + halfway_length - input_length] else: next_value = captcha_string[i + halfway_length] if current_value == next_value: values_to_add.append(int(current_value)) i+=1 return sum(values_to_add)
12:12 Done deal
- Time to run against the final output!
➜ advent-of-code-2017 git:(master) ✗ python3 -m python.day1solution === Part 1 === 1150 === Part 2 === 1064
12:16: Completed and pushed to Github
Posted on December 14 2017 by Adnan Issadeen