Solved 2015/08 P1+P2

This commit is contained in:
FrederikBaerentsen 2024-12-06 17:44:30 +01:00
parent 4274b0bb89
commit 99bb81be32
4 changed files with 56 additions and 23 deletions

View File

@ -45,7 +45,40 @@ characters of string code (`2 + 5 + 10 + 6 = 23`) minus the total number
of characters in memory for string values (`0 + 3 + 7 + 1 = 11`) is of characters in memory for string values (`0 + 3 + 7 + 1 = 11`) is
`23 - 11 = 12`. `23 - 11 = 12`.
To begin, [get your puzzle input](8/input). Your puzzle answer was `1342`.
Answer: ## \-\-- Part Two \-\-- {#part2}
Now, let\'s go the other way. In addition to finding the number of
characters of code, you should now *encode each code representation as a
new string* and find the number of characters of the new encoded
representation, including the surrounding double quotes.
For example:
- `""` encodes to `"\"\""`, an increase from `2` characters to `6`.
- `"abc"` encodes to `"\"abc\""`, an increase from `5` characters to
`9`.
- `"aaa\"aaa"` encodes to `"\"aaa\\\"aaa\""`, an increase from `10`
characters to `16`.
- `"\x27"` encodes to `"\"\\x27\""`, an increase from `6` characters
to `11`.
Your task is to find *the total number of characters to represent the
newly encoded strings* minus *the number of characters of code in each
original string literal*. For example, for the strings above, the total
encoded length (`6 + 9 + 16 + 11 = 42`) minus the characters in the
original code representation (`23`, just like in the first part of this
puzzle) is `42 - 23 = 19`.
Your puzzle answer was `2074`.
Both parts of this puzzle are complete! They provide two gold stars:
\*\*
At this point, you should [return to your Advent calendar](/2015) and
try another puzzle.
If you still want to see it, you can [get your puzzle
input](8/input).

View File

@ -1,31 +1,25 @@
#!/bin/python3 #!/bin/python3
import sys,re import sys,re,ast,json
from pprint import pprint from pprint import pprint
sys.path.insert(0, '../../') sys.path.insert(0, '../../')
from fred import list2int,get_re,nprint,lprint,loadFile from fred import list2int,get_re,nprint,lprint,loadFile
input_f = 'test' input_f = 'input'
part = 1 part = 2
######################################### #########################################
# # # #
# Part 1 # # Part 1 #
# # # #
######################################### #########################################
def parse(line):
line = get_re(r'^"(.*)"$',line)
tmp = line
if part == 1: if part == 1:
instructions = loadFile(input_f) instructions = loadFile(input_f)
char = 0
total = 0 total = 0
for i in instructions: for i in instructions:
total += len(i) total += (len(i)-len(ast.literal_eval(i)))
print(i)
print(total) print(total)
@ -40,4 +34,11 @@ if part == 1:
# # # #
######################################### #########################################
if part == 2: if part == 2:
exit() instructions = loadFile(input_f)
total = 0
for i in instructions:
total += (len(json.dumps(i)) - len(i))
print(total)

View File

@ -119,6 +119,8 @@ guard visit before leaving the mapped area?*
Your puzzle answer was `5212`. Your puzzle answer was `5212`.
The first half of this puzzle is complete! It provides one gold star: \*
## \-\-- Part Two \-\-- {#part2} ## \-\-- Part Two \-\-- {#part2}
While The Historians begin working around the guard\'s patrol route, you While The Historians begin working around the guard\'s patrol route, you
@ -242,14 +244,8 @@ You need to get the guard stuck in a loop by adding a single new
obstruction. *How many different positions could you choose for this obstruction. *How many different positions could you choose for this
obstruction?* obstruction?*
Your puzzle answer was `1767`. Answer:
Both parts of this puzzle are complete! They provide two gold stars: Although it hasn\'t changed, you can still [get your puzzle
\*\*
At this point, you should [return to your Advent calendar](/2024) and
try another puzzle.
If you still want to see it, you can [get your puzzle
input](6/input). input](6/input).

View File

@ -7,6 +7,7 @@
.---': ~ '(~), ~| | >@>O< o-_/.()__------| 3 ** .---': ~ '(~), ~| | >@>O< o-_/.()__------| 3 **
|@..@'. ~ " ' ~ | |>O>o<@< \____ .'| 4 ** |@..@'. ~ " ' ~ | |>O>o<@< \____ .'| 4 **
|_.~._@'.. ~ ~ *| | _| |_ ..\_\_ ..'* | 5 ** |_.~._@'.. ~ ~ *| | _| |_ ..\_\_ ..'* | 5 **
| ||| @@ '''...| |... .' '.'''../..| 6 **
## 2023 ## 2023
@ -102,6 +103,8 @@
## 2015 ## 2015
>>*<*<<<o<@>>o<*<<<*<<o>>O>>>*>*<<< 8 **
>@>o<O>>O<<<O>>>*>>*<*>>*<O<<o<<<O>>@<< 6 ** >@>o<O>>O<<<O>>>*>>*<*>>*<O<<o<<<O>>@<< 6 **
>@<@<O>>>o<<O>>O<O>@>@>>>@>>o<*<<<*<<<@<< 5 ** >@<@<O>>>o<<O>>O<O>@>@>>>@>>o<*<<<*<<<@<< 5 **
>*>>O>@>>>@>>@>>>o<<<*<<<@>>@<<O<<<@<<O<<<< 4 ** >*>>O>@>>>@>>@>>>o<<<*<<<@>>@<<O<<<@<<O<<<< 4 **