Advent of code

From miki
Revision as of 17:34, 7 December 2024 by Mip (talk | contribs)
Jump to navigation Jump to search

Some tips to solve https://adventofcode.com/.

Get input.txt

A Makefile rule:

YEAR=2024

input.txt: ../cookie.txt
	DAY=$$(basename $$(pwd)); wget -O $@ --header="Cookie: $$(cat ../cookie.txt)" https://adventofcode.com/$(YEAR)/day/$${DAY##day}/input

Get content of ../cookie.txt (collect using Firefox developers / storage panel):

session=aaaaaaaaaaaaaabbbbbbbbbbbbbbcccccccccccccddddddddddde1111111222222222333333333444444444555555555555

I/O

Read a list of numbers

Code Output
print("Input:")
for line in open(INPUT):
    print(line.strip())
Input:
3   4
4   3
2   5
1   3
3   9
3   3
F=[] # Flat
for line in open(INPUT):
    numbers = list(map(int,line.split()))
    F.extend(numbers)
print(f"{F}")
[3, 4, 4, 3, 2, 5, 1, 3, 3, 9, 3, 3]
L=[] # List
for line in open(INPUT):
    numbers = list(map(int,line.split()))
    L.append(numbers)
print(f"{L}")
[[3, 4], 
 [4, 3], 
 [2, 5], 
 [1, 3], 
 [3, 9],
 [3, 3]]

Read a list of miscellaneous data

See also:

Code Output
print("Input:")
for line in open(INPUT):
    print(line.strip())
Input:
ABC  3  FGH  4 
IZP  4  XYZ  3 
KIJ  2  FGH  5 
ABC  1  TYE  3 
FIS  3  FGH  9 
ABC  3  FGH  3
INPUT2='small2.txt'
L = []
for line in open(INPUT2):
    matches = re.findall(r'([A-Z]+|\d+)',line)
    L.append(matches)
print(f"{L}")
['ABC', '3', 'FGH', '4'], 
 ['IZP', '4', 'XYZ', '3'], 
 ['KIJ', '2', 'FGH', '5'], 
 ['ABC', '1', 'TYE', '3'], 
 ['FIS', '3', 'FGH', '9'], 
 ['ABC', '3', 'FGH', '3']]