Compare commits

..

2 Commits

Author SHA1 Message Date
Thomas Hodnemyr 1c4592edf4 day5 2022-12-05 11:29:38 +01:00
Thomas Hodnemyr 3ebcb19749 day4 done 2022-12-04 13:57:58 +01:00
6 changed files with 1684 additions and 0 deletions

1000
day4/input.txt Normal file

File diff suppressed because it is too large Load Diff

31
day4/main1.py Normal file
View File

@ -0,0 +1,31 @@
with open("day4\input.txt") as f:
data = f.readlines()
'''
Some of the pairs have noticed that one of their assignments fully contains the other.
For example, 2-8 fully contains 3-7, and 6-6 is fully contained by 4-6.
In pairs where one assignment fully contains the other, one Elf in the pair would be
exclusively cleaning sections their partner will already be cleaning,
so these seem like the most in need of reconsideration.
In how many assignment pairs does one range fully contain the other?
'''
pair_sum = 0
line:str
for line in data:
elf1 = [int(i) for i in line.split(',')[0].split('-')]
elf2 = [int(i) for i in line.split(',')[1].split('-')]
#Find the smallest
if elf1[1] - elf1[0] > elf2[1] - elf2[0]:
if elf2[0] >= elf1[0] and elf2[1] <= elf1[1]:
pair_sum += 1
else:
if elf1[0] >= elf2[0] and elf1[1] <= elf2[1]:
pair_sum += 1
print(pair_sum) #550

34
day4/main2.py Normal file
View File

@ -0,0 +1,34 @@
with open("day4\input.txt") as f:
data = f.readlines()
'''
It seems like there is still quite a bit of duplicate work planned. Instead, the Elves would like to know the number of pairs that overlap at all.
In how many assignment pairs do the ranges overlap?
'''
pair_sum = 0
line:str
for line in data:
elf1 = [int(i) for i in line.split(',')[0].split('-')]
elf2 = [int(i) for i in line.split(',')[1].split('-')]
#Example 77-88,14-78
# elf1 = 77-88
# elf2 = 14-78
#Find the smallest
if elf1[1] - elf1[0] > elf2[1] - elf2[0]:
if elf2[0] >= elf1[0] and elf2[1] <= elf1[1]:
pair_sum += 1
continue
else:
if elf1[0] >= elf2[0] and elf1[1] <= elf2[1]:
pair_sum += 1
continue
#Look at elf 2's numbers and see if they are in elf 1's range
if elf1[0] <= elf2[0] <= elf1[1] or elf1[0] <= elf2[1] <= elf1[1]:
pair_sum +=1
print(pair_sum) #931

512
day5/input.txt Normal file
View File

@ -0,0 +1,512 @@
[J] [F] [M]
[Z] [F] [G] [Q] [F]
[G] [P] [H] [Z] [S] [Q]
[V] [W] [Z] [P] [D] [G] [P]
[T] [D] [S] [Z] [N] [W] [B] [N]
[D] [M] [R] [J] [J] [P] [V] [P] [J]
[B] [R] [C] [T] [C] [V] [C] [B] [P]
[N] [S] [V] [R] [T] [N] [G] [Z] [W]
1 2 3 4 5 6 7 8 9
move 2 from 4 to 6
move 1 from 9 to 5
move 3 from 2 to 4
move 8 from 4 to 7
move 2 from 9 to 7
move 3 from 8 to 3
move 2 from 1 to 2
move 5 from 7 to 9
move 1 from 9 to 4
move 1 from 8 to 3
move 1 from 3 to 4
move 2 from 4 to 9
move 7 from 3 to 5
move 6 from 1 to 8
move 11 from 7 to 9
move 12 from 5 to 3
move 6 from 6 to 9
move 3 from 3 to 8
move 4 from 2 to 7
move 3 from 5 to 7
move 1 from 5 to 7
move 2 from 2 to 5
move 1 from 5 to 2
move 5 from 8 to 9
move 7 from 7 to 2
move 3 from 8 to 7
move 1 from 8 to 9
move 4 from 3 to 6
move 1 from 5 to 1
move 9 from 9 to 6
move 7 from 9 to 6
move 20 from 6 to 5
move 12 from 9 to 8
move 5 from 5 to 1
move 3 from 7 to 4
move 6 from 2 to 7
move 2 from 3 to 1
move 4 from 3 to 8
move 1 from 4 to 1
move 7 from 7 to 5
move 4 from 8 to 2
move 3 from 6 to 2
move 3 from 2 to 9
move 4 from 1 to 7
move 2 from 1 to 2
move 3 from 9 to 5
move 11 from 8 to 5
move 1 from 6 to 9
move 1 from 8 to 5
move 1 from 1 to 2
move 24 from 5 to 4
move 2 from 1 to 6
move 11 from 5 to 4
move 2 from 7 to 9
move 1 from 6 to 2
move 4 from 2 to 1
move 28 from 4 to 2
move 1 from 7 to 8
move 9 from 2 to 5
move 2 from 9 to 6
move 4 from 4 to 2
move 1 from 7 to 4
move 3 from 4 to 7
move 1 from 6 to 9
move 21 from 2 to 3
move 3 from 1 to 6
move 5 from 6 to 2
move 7 from 2 to 3
move 1 from 9 to 3
move 1 from 8 to 4
move 1 from 7 to 8
move 3 from 5 to 8
move 1 from 1 to 7
move 2 from 7 to 9
move 2 from 8 to 4
move 1 from 9 to 2
move 1 from 8 to 6
move 11 from 3 to 4
move 1 from 7 to 8
move 6 from 5 to 9
move 2 from 8 to 7
move 1 from 6 to 5
move 7 from 3 to 8
move 9 from 3 to 6
move 1 from 8 to 3
move 1 from 7 to 4
move 2 from 3 to 5
move 4 from 5 to 7
move 4 from 6 to 8
move 2 from 7 to 9
move 11 from 4 to 2
move 1 from 4 to 2
move 6 from 8 to 9
move 1 from 7 to 1
move 1 from 3 to 7
move 3 from 7 to 8
move 6 from 8 to 9
move 6 from 4 to 8
move 18 from 9 to 3
move 1 from 5 to 8
move 5 from 6 to 5
move 6 from 8 to 1
move 3 from 5 to 4
move 1 from 9 to 8
move 3 from 4 to 8
move 15 from 3 to 6
move 2 from 5 to 9
move 3 from 3 to 1
move 9 from 6 to 4
move 2 from 1 to 5
move 2 from 5 to 8
move 6 from 4 to 2
move 6 from 1 to 6
move 3 from 4 to 6
move 6 from 9 to 1
move 4 from 2 to 1
move 7 from 8 to 1
move 1 from 6 to 7
move 17 from 1 to 5
move 1 from 7 to 1
move 5 from 2 to 1
move 1 from 8 to 6
move 11 from 6 to 4
move 2 from 2 to 3
move 3 from 1 to 8
move 7 from 2 to 5
move 4 from 6 to 7
move 4 from 1 to 5
move 15 from 5 to 9
move 2 from 3 to 7
move 2 from 8 to 2
move 1 from 1 to 9
move 6 from 2 to 6
move 7 from 5 to 6
move 5 from 7 to 3
move 1 from 6 to 1
move 2 from 3 to 4
move 1 from 3 to 4
move 5 from 6 to 4
move 14 from 9 to 2
move 1 from 8 to 9
move 1 from 7 to 8
move 1 from 9 to 6
move 2 from 9 to 5
move 1 from 1 to 2
move 7 from 6 to 9
move 1 from 3 to 4
move 8 from 5 to 2
move 1 from 6 to 7
move 1 from 7 to 4
move 1 from 8 to 4
move 1 from 3 to 9
move 7 from 9 to 5
move 1 from 9 to 1
move 6 from 5 to 1
move 8 from 2 to 4
move 1 from 5 to 6
move 1 from 6 to 7
move 1 from 7 to 9
move 7 from 2 to 9
move 1 from 9 to 4
move 3 from 9 to 1
move 1 from 9 to 6
move 11 from 2 to 8
move 9 from 1 to 8
move 1 from 6 to 4
move 1 from 1 to 9
move 12 from 4 to 2
move 4 from 9 to 3
move 3 from 4 to 6
move 9 from 8 to 6
move 12 from 4 to 9
move 8 from 6 to 3
move 8 from 2 to 7
move 11 from 3 to 4
move 2 from 2 to 7
move 2 from 6 to 1
move 1 from 2 to 3
move 2 from 6 to 2
move 3 from 2 to 6
move 2 from 1 to 6
move 1 from 6 to 1
move 1 from 6 to 4
move 2 from 6 to 3
move 1 from 6 to 5
move 4 from 3 to 8
move 12 from 4 to 5
move 5 from 9 to 7
move 3 from 8 to 7
move 1 from 9 to 1
move 3 from 8 to 2
move 13 from 5 to 6
move 1 from 2 to 9
move 13 from 6 to 7
move 7 from 9 to 6
move 2 from 4 to 6
move 1 from 8 to 6
move 1 from 1 to 6
move 1 from 2 to 9
move 1 from 2 to 3
move 12 from 7 to 9
move 7 from 8 to 4
move 1 from 1 to 3
move 2 from 7 to 9
move 15 from 7 to 4
move 8 from 6 to 3
move 1 from 8 to 9
move 1 from 7 to 2
move 10 from 3 to 5
move 6 from 5 to 9
move 1 from 2 to 8
move 1 from 5 to 8
move 2 from 8 to 9
move 10 from 4 to 9
move 20 from 9 to 6
move 1 from 7 to 6
move 4 from 9 to 3
move 1 from 5 to 9
move 4 from 4 to 9
move 8 from 9 to 7
move 2 from 5 to 1
move 7 from 4 to 3
move 8 from 3 to 2
move 6 from 9 to 8
move 1 from 3 to 7
move 1 from 3 to 1
move 7 from 7 to 8
move 13 from 8 to 3
move 2 from 2 to 8
move 1 from 8 to 2
move 1 from 4 to 1
move 1 from 1 to 8
move 2 from 8 to 2
move 24 from 6 to 2
move 2 from 7 to 8
move 5 from 3 to 4
move 25 from 2 to 6
move 5 from 4 to 9
move 2 from 8 to 7
move 2 from 7 to 3
move 4 from 6 to 2
move 2 from 6 to 4
move 9 from 2 to 3
move 11 from 3 to 7
move 10 from 7 to 8
move 1 from 7 to 9
move 3 from 2 to 4
move 8 from 8 to 2
move 1 from 2 to 6
move 2 from 4 to 1
move 1 from 8 to 2
move 1 from 6 to 9
move 1 from 8 to 3
move 6 from 9 to 7
move 2 from 9 to 1
move 9 from 6 to 8
move 7 from 2 to 3
move 7 from 8 to 2
move 10 from 6 to 8
move 7 from 1 to 2
move 9 from 3 to 2
move 5 from 3 to 8
move 4 from 7 to 2
move 2 from 3 to 2
move 12 from 2 to 3
move 6 from 4 to 2
move 1 from 7 to 6
move 5 from 3 to 5
move 16 from 8 to 4
move 12 from 2 to 7
move 5 from 5 to 7
move 1 from 8 to 3
move 1 from 6 to 4
move 17 from 7 to 4
move 1 from 7 to 1
move 1 from 1 to 9
move 1 from 9 to 5
move 11 from 4 to 9
move 10 from 2 to 3
move 1 from 5 to 4
move 1 from 9 to 2
move 2 from 2 to 1
move 1 from 2 to 3
move 23 from 4 to 5
move 7 from 9 to 7
move 3 from 9 to 1
move 20 from 5 to 6
move 3 from 5 to 8
move 1 from 4 to 1
move 2 from 8 to 3
move 4 from 6 to 4
move 7 from 7 to 2
move 1 from 8 to 4
move 19 from 3 to 9
move 5 from 1 to 7
move 7 from 2 to 6
move 3 from 7 to 5
move 2 from 3 to 4
move 1 from 5 to 4
move 1 from 1 to 4
move 1 from 7 to 6
move 13 from 6 to 7
move 6 from 9 to 3
move 1 from 3 to 5
move 2 from 3 to 4
move 2 from 6 to 2
move 3 from 4 to 3
move 8 from 9 to 1
move 2 from 2 to 1
move 8 from 6 to 7
move 2 from 9 to 4
move 20 from 7 to 1
move 2 from 7 to 5
move 2 from 5 to 1
move 8 from 1 to 8
move 8 from 8 to 6
move 1 from 6 to 9
move 8 from 6 to 1
move 1 from 5 to 3
move 7 from 3 to 2
move 1 from 5 to 2
move 2 from 9 to 7
move 1 from 5 to 8
move 18 from 1 to 4
move 1 from 8 to 9
move 3 from 2 to 3
move 2 from 7 to 4
move 5 from 2 to 4
move 3 from 3 to 8
move 8 from 1 to 7
move 2 from 9 to 2
move 32 from 4 to 5
move 1 from 9 to 7
move 1 from 2 to 1
move 6 from 1 to 6
move 1 from 2 to 4
move 3 from 8 to 1
move 3 from 6 to 5
move 1 from 3 to 6
move 2 from 1 to 9
move 4 from 4 to 7
move 31 from 5 to 4
move 4 from 5 to 6
move 1 from 6 to 1
move 7 from 6 to 5
move 1 from 9 to 4
move 19 from 4 to 2
move 1 from 5 to 9
move 5 from 5 to 6
move 3 from 4 to 2
move 2 from 7 to 1
move 4 from 7 to 8
move 3 from 8 to 6
move 2 from 6 to 7
move 6 from 7 to 8
move 3 from 1 to 5
move 4 from 5 to 9
move 15 from 2 to 1
move 4 from 6 to 4
move 2 from 6 to 3
move 1 from 3 to 7
move 4 from 1 to 2
move 1 from 3 to 4
move 2 from 7 to 4
move 5 from 9 to 3
move 2 from 7 to 3
move 16 from 4 to 8
move 8 from 8 to 5
move 2 from 1 to 5
move 1 from 9 to 6
move 1 from 6 to 5
move 7 from 5 to 9
move 3 from 1 to 8
move 1 from 8 to 4
move 8 from 2 to 7
move 3 from 1 to 3
move 1 from 3 to 9
move 2 from 4 to 2
move 7 from 8 to 5
move 7 from 9 to 1
move 6 from 3 to 5
move 6 from 7 to 4
move 3 from 4 to 1
move 3 from 2 to 5
move 1 from 7 to 8
move 1 from 7 to 5
move 1 from 9 to 8
move 2 from 2 to 4
move 15 from 1 to 6
move 8 from 5 to 9
move 3 from 3 to 4
move 4 from 4 to 3
move 1 from 9 to 7
move 6 from 9 to 4
move 1 from 9 to 2
move 6 from 4 to 9
move 2 from 4 to 6
move 5 from 6 to 9
move 1 from 3 to 1
move 8 from 6 to 8
move 12 from 5 to 3
move 1 from 5 to 3
move 1 from 3 to 8
move 4 from 6 to 1
move 11 from 3 to 8
move 1 from 2 to 1
move 23 from 8 to 2
move 3 from 1 to 2
move 1 from 1 to 9
move 2 from 2 to 3
move 6 from 3 to 6
move 1 from 7 to 6
move 1 from 4 to 7
move 1 from 4 to 3
move 1 from 7 to 3
move 4 from 8 to 4
move 2 from 1 to 8
move 3 from 8 to 1
move 4 from 6 to 2
move 7 from 9 to 1
move 1 from 9 to 6
move 2 from 2 to 3
move 3 from 9 to 4
move 1 from 9 to 3
move 10 from 2 to 8
move 16 from 2 to 5
move 2 from 3 to 6
move 6 from 1 to 8
move 1 from 1 to 5
move 8 from 8 to 5
move 11 from 5 to 9
move 2 from 1 to 8
move 1 from 1 to 8
move 4 from 4 to 6
move 3 from 3 to 9
move 14 from 9 to 3
move 15 from 8 to 5
move 9 from 5 to 4
move 7 from 6 to 1
move 1 from 6 to 3
move 4 from 4 to 7
move 2 from 6 to 2
move 4 from 7 to 4
move 4 from 1 to 4
move 10 from 4 to 3
move 14 from 3 to 6
move 5 from 4 to 1
move 6 from 5 to 7
move 1 from 2 to 6
move 3 from 7 to 2
move 2 from 2 to 3
move 3 from 7 to 8
move 2 from 8 to 2
move 2 from 2 to 7
move 6 from 6 to 2
move 1 from 8 to 7
move 8 from 2 to 7
move 1 from 4 to 1
move 5 from 5 to 3
move 3 from 3 to 2
move 5 from 1 to 3
move 7 from 5 to 8
move 6 from 6 to 3
move 1 from 5 to 9
move 10 from 7 to 9
move 26 from 3 to 4
move 1 from 5 to 1
move 6 from 8 to 2
move 9 from 2 to 9
move 1 from 7 to 5
move 1 from 8 to 5
move 2 from 6 to 2
move 20 from 9 to 6
move 1 from 1 to 6
move 1 from 4 to 2
move 1 from 5 to 8
move 1 from 5 to 7
move 3 from 1 to 3
move 1 from 3 to 6
move 12 from 4 to 8
move 11 from 4 to 5
move 1 from 7 to 5
move 1 from 2 to 8
move 1 from 1 to 8
move 2 from 2 to 5
move 8 from 6 to 2
move 5 from 6 to 4
move 2 from 5 to 3
move 12 from 8 to 4
move 5 from 2 to 6
move 3 from 8 to 1
move 11 from 6 to 8
move 10 from 4 to 6
move 5 from 4 to 6
move 12 from 6 to 5
move 22 from 5 to 6
move 3 from 6 to 5
move 3 from 8 to 5
move 1 from 3 to 8
move 4 from 8 to 1
move 6 from 1 to 7
move 5 from 6 to 9

53
day5/main1.py Normal file
View File

@ -0,0 +1,53 @@
with open("day5\input.txt") as f:
data = f.readlines()
'''
[J] [F] [M]
[Z] [F] [G] [Q] [F]
[G] [P] [H] [Z] [S] [Q]
[V] [W] [Z] [P] [D] [G] [P]
[T] [D] [S] [Z] [N] [W] [B] [N]
[D] [M] [R] [J] [J] [P] [V] [P] [J]
[B] [R] [C] [T] [C] [V] [C] [B] [P]
[N] [S] [V] [R] [T] [N] [G] [Z] [W]
1 2 3 4 5 6 7 8 9
move 2 from 4 to 6
Move amount from target to destination, one at the time, (pop,append)
Give [-1] of each stack at the end.
'''
#Create lists
cargo_processed = False
cargo_hold = []
for line in data:
if line == "\n":
continue
if not len(cargo_hold):
for cargo_spot in line[1:-2:4]:
cargo_hold.append([])
if not cargo_processed:
for position,char in enumerate(line[1:-2:4]):
if char == '1':
#Done parsing. switch to stacking
for stack in cargo_hold:
stack.reverse()
print(cargo_hold)
cargo_processed = True
break
if char == ' ':
continue
cargo_hold[position].append(char)
else:
#Start reading instructions
# Example move 2 from 4 to 6
move_command = [int(s) for s in line.split() if s.isdigit()]
for i in range(0,move_command[0]):
cargo_hold[move_command[2]-1].append(cargo_hold[move_command[1]-1].pop())
for cargo in cargo_hold:
print(cargo[-1])
#GFTNRBZPF

54
day5/main2.py Normal file
View File

@ -0,0 +1,54 @@
with open("day5\input.txt") as f:
data = f.readlines()
'''
[J] [F] [M]
[Z] [F] [G] [Q] [F]
[G] [P] [H] [Z] [S] [Q]
[V] [W] [Z] [P] [D] [G] [P]
[T] [D] [S] [Z] [N] [W] [B] [N]
[D] [M] [R] [J] [J] [P] [V] [P] [J]
[B] [R] [C] [T] [C] [V] [C] [B] [P]
[N] [S] [V] [R] [T] [N] [G] [Z] [W]
1 2 3 4 5 6 7 8 9
move 2 from 4 to 6
Move amount from target to destination, In one go, (pop(amount),append)
Give [-1] of each stack at the end.
'''
#Create lists
cargo_processed = False
cargo_hold = []
for line in data:
if line == "\n":
continue
if not len(cargo_hold):
for cargo_spot in line[1:-2:4]:
cargo_hold.append([])
if not cargo_processed:
for position,char in enumerate(line[1:-2:4]):
if char == '1':
#Done parsing. switch to stacking
for stack in cargo_hold:
stack.reverse()
print(cargo_hold)
cargo_processed = True
break
if char == ' ':
continue
cargo_hold[position].append(char)
else:
#Start reading instructions
# Example move 2 from 4 to 6
move_command = [int(s) for s in line.split() if s.isdigit()]
reverselist = [cargo_hold[move_command[1]-1].pop() for idx in range(move_command[0])]
reverselist.reverse()
cargo_hold[move_command[2]-1] = cargo_hold[move_command[2]-1] + reverselist
for cargo in cargo_hold:
print(cargo[-1])
#VRQWPDSGP