Switching to Rust; Removed all Python Code
Wanted to practice Rust skills more, so I shall let it take over this advent of codmain
parent
47c6e0c941
commit
13a817e463
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,48 +0,0 @@
|
|||||||
import os
|
|
||||||
|
|
||||||
from entities.items.food import Food
|
|
||||||
from entities.elf import Elf
|
|
||||||
|
|
||||||
|
|
||||||
class CalorieList:
|
|
||||||
"""
|
|
||||||
Day 1 - Calorie List
|
|
||||||
|
|
||||||
The Elves take turns writing down the number of Calories contained by the various meals, snacks, rations, etc. that they've brought with them, one item per line.
|
|
||||||
Each Elf separates their own inventory from the previous Elf's inventory (if any) by a blank line.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, path: str):
|
|
||||||
if not os.path.isfile(path):
|
|
||||||
raise FileNotFoundError(f"File was not found or isn't a file: {path}")
|
|
||||||
|
|
||||||
self.file_path = path
|
|
||||||
|
|
||||||
def parse_file(self):
|
|
||||||
"""
|
|
||||||
read the file and parse its contents
|
|
||||||
:return:
|
|
||||||
"""
|
|
||||||
elf_invs = []
|
|
||||||
with open(self.file_path, "r") as file:
|
|
||||||
curr_elf_inventory = []
|
|
||||||
for line in file:
|
|
||||||
line = line.replace("\n", "")
|
|
||||||
if line.isnumeric():
|
|
||||||
curr_elf_inventory.append(int(line))
|
|
||||||
elif len(line) == 0: # line is empty, next inventory
|
|
||||||
elf_invs.append(curr_elf_inventory)
|
|
||||||
curr_elf_inventory = list()
|
|
||||||
else:
|
|
||||||
raise ValueError(f"Unexpected line encountered in calorie list file: {line}")
|
|
||||||
elf_invs.append(curr_elf_inventory)
|
|
||||||
|
|
||||||
elves = []
|
|
||||||
for inv in elf_invs:
|
|
||||||
elf = Elf()
|
|
||||||
for calories in inv:
|
|
||||||
elf.add_to_inventory(Food(calories))
|
|
||||||
elves.append(elf)
|
|
||||||
|
|
||||||
return elves
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
@ -1,108 +0,0 @@
|
|||||||
from typing import Tuple, List
|
|
||||||
|
|
||||||
from entities.items.item import Item
|
|
||||||
from entities.items.food import Food
|
|
||||||
from rockpaperscissor.file.guide_list import RPS
|
|
||||||
|
|
||||||
|
|
||||||
class Elf:
|
|
||||||
"""
|
|
||||||
The absolute overkill, because I can.
|
|
||||||
"""
|
|
||||||
ELF_COUNT = 0
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self.__number = Elf.ELF_COUNT
|
|
||||||
Elf.ELF_COUNT += 1
|
|
||||||
self.__name = Elf.fetch_elf_name(self.__number)
|
|
||||||
self.__inventory = []
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def fetch_elf_name(i: int) -> str:
|
|
||||||
name_list = ["Dash", "Evergreen", "Sugarplum", "Pixie", "Pudding", "Perky", "Candycane", "Glitter-toes",
|
|
||||||
"Happy", "Angel-Eyes", "Sugar-Socks", "McJingles", "Frost", "Tinsel", "Twinkle", "Jingle", "Ginger",
|
|
||||||
"Joy", "Merry", "Pepper", "Sparkle", "Tinsel", "Winter", "Trinket", "Buddy", "Noel", "Snowball",
|
|
||||||
"Tiny", "Elfin", "Candy", "Carol", "Angel", "Nick", "Plum", "Holly", "Snow", "Pine", "Garland",
|
|
||||||
"Joseph", "Gabriel", "Hope", "Cedar"]
|
|
||||||
return name_list[i % len(name_list)]
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return f"#{self.__number} {self.__name}"
|
|
||||||
|
|
||||||
def get_inventory(self) -> list:
|
|
||||||
return self.__inventory
|
|
||||||
|
|
||||||
def add_to_inventory(self, item: Item):
|
|
||||||
self.__inventory.append(item)
|
|
||||||
|
|
||||||
def remove_from_inventory(self, slot: int):
|
|
||||||
"""
|
|
||||||
Removes item of the given slot number from the inventory using pop().
|
|
||||||
That means there are no empty spaces.
|
|
||||||
|
|
||||||
Starts with 0.
|
|
||||||
:param slot:
|
|
||||||
:return:
|
|
||||||
"""
|
|
||||||
self.__inventory.pop(slot)
|
|
||||||
|
|
||||||
def get_inventory_calories(self) -> int:
|
|
||||||
return sum([x.calorie_value for x in list(filter(lambda x: isinstance(x, Food), self.get_inventory()))])
|
|
||||||
|
|
||||||
def evaluate_RPS_round(self, other: str, own: str) -> Tuple[bool, int]:
|
|
||||||
"""
|
|
||||||
Evaluates a rock paper scissor round according to day 2 puzzle 1.
|
|
||||||
:param other: What the opponent played
|
|
||||||
:param own: what you played
|
|
||||||
:return:
|
|
||||||
"""
|
|
||||||
round_score = None
|
|
||||||
was_win = None
|
|
||||||
if other == own:
|
|
||||||
round_score = RPS.DRAW_SCORE
|
|
||||||
else:
|
|
||||||
if (other == RPS.PAPER and own == RPS.ROCK) or \
|
|
||||||
(other == RPS.SCISSOR and own == RPS.PAPER) or \
|
|
||||||
(other == RPS.ROCK and own == RPS.SCISSOR):
|
|
||||||
round_score = RPS.LOSS_SCORE
|
|
||||||
was_win = False
|
|
||||||
elif (other == RPS.PAPER and own == RPS.SCISSOR) or \
|
|
||||||
(other == RPS.SCISSOR and own == RPS.ROCK) or \
|
|
||||||
(other == RPS.ROCK and own == RPS.PAPER):
|
|
||||||
round_score = RPS.WIN_SCORE
|
|
||||||
was_win = True
|
|
||||||
else:
|
|
||||||
raise Exception(f"Something went terribly wrong! Other: {other} Own: {own}")
|
|
||||||
|
|
||||||
return was_win, round_score + RPS.RPS_SHAPE_TO_SCORE[own]
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def check_rucksacks_for_duplicates(rucksack1: Tuple[List[str], List[str]], rucksack2: Tuple[List[str], List[str]]) -> List[str]:
|
|
||||||
"""
|
|
||||||
Check if rucksack1 and rucksack2 have an item in common. This will merge the compartments in each rucksack.
|
|
||||||
|
|
||||||
:param rucksack1:
|
|
||||||
:param rucksack2:
|
|
||||||
:return: list of the duplicate item (as a character) or None if there is no duplicate
|
|
||||||
"""
|
|
||||||
r1 = list(set(rucksack1[0] + rucksack1[1]))
|
|
||||||
r2 = list(set(rucksack2[0] + rucksack2[1]))
|
|
||||||
|
|
||||||
dups = []
|
|
||||||
for a in r1:
|
|
||||||
if a in r2:
|
|
||||||
dups.append(a)
|
|
||||||
|
|
||||||
return dups
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def check_compartments_for_duplicates(compartment_1: List[str], compartment_2: List[str]) -> str:
|
|
||||||
"""
|
|
||||||
Check two given compartment for the duplicate item according to day 3 puzzle 1
|
|
||||||
:return: the duplicate item (as a character) or None if there is no duplicate
|
|
||||||
"""
|
|
||||||
for a in compartment_1:
|
|
||||||
if a in compartment_2:
|
|
||||||
return a
|
|
||||||
|
|
||||||
return False
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,8 +0,0 @@
|
|||||||
from entities.items.item import Item
|
|
||||||
|
|
||||||
|
|
||||||
class Food(Item):
|
|
||||||
|
|
||||||
def __init__(self, calorie: int):
|
|
||||||
super().__init__(name="")
|
|
||||||
self.calorie_value = calorie
|
|
@ -1,5 +0,0 @@
|
|||||||
|
|
||||||
class Item:
|
|
||||||
|
|
||||||
def __init__(self, name: str):
|
|
||||||
self.name = name
|
|
@ -1,14 +0,0 @@
|
|||||||
1000
|
|
||||||
2000
|
|
||||||
3000
|
|
||||||
|
|
||||||
4000
|
|
||||||
|
|
||||||
5000
|
|
||||||
6000
|
|
||||||
|
|
||||||
7000
|
|
||||||
8000
|
|
||||||
9000
|
|
||||||
|
|
||||||
10000
|
|
File diff suppressed because it is too large
Load Diff
@ -1,3 +0,0 @@
|
|||||||
A Y
|
|
||||||
B X
|
|
||||||
C Z
|
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +0,0 @@
|
|||||||
vJrwpWtwJgWrhcsFMMfFFhFp
|
|
||||||
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
|
||||||
PmmdzqPrVvPwwTWBwg
|
|
||||||
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
|
||||||
ttgJtRGJQctTZtZT
|
|
||||||
CrZsJsPPZsGzwwsLwLmpwMDw
|
|
@ -1,300 +0,0 @@
|
|||||||
DMwrszrfMzSSCpLpfCCn
|
|
||||||
RMvhZhQqlvhMvRtbvbcPclPlncddppLTdppd
|
|
||||||
tVMQhFtjjWmsFJsmsW
|
|
||||||
trRtvNhfJhSzzSTFVhQQZQhHGphP
|
|
||||||
CnLMBWLwDMgMcwwdngdHGPVTQGpTHZdGPGpd
|
|
||||||
LLDqcDgwqCMnLWqtvzrzbbtJqPjJ
|
|
||||||
wQQwHNQLmbWQbQRHwHNFBbwqPfjqlzRMGRqzpSfvPlzplM
|
|
||||||
nCtGCZZtsGsrtDMZpfMpSlMlvlZq
|
|
||||||
cJctJCgVJsCJnDTsCthGhGLwBWBbbQmLbgQLQQdWbbbQ
|
|
||||||
ZWnNlTNTnhhQQlDNdmmpwrrrqBwjwjZd
|
|
||||||
GzvlVRSfvMVMvGlSpdCCdjmfpmBCdsqB
|
|
||||||
bzlFlLzJWLHHttLL
|
|
||||||
SmzFhVDzrmSrszVDVhSVbhZcCZdfZNcnMfMbZnNN
|
|
||||||
PTTRGqwqTqWRwLgTLTZGnCbZbNddZCCtMcNs
|
|
||||||
sgPqPqgJgWWqjjwgwLLVFBFSVmvmBBrmJJDSvp
|
|
||||||
CBccfSBhcSBddfgtlJmmmwmPRwmh
|
|
||||||
FpTzzGWHWprgDtJlDZDPFR
|
|
||||||
HbbTzWnTrnWtCbQBbQqQbSjf
|
|
||||||
fPHspCjgwZggSvZQ
|
|
||||||
RrNhzFZFcNzFLNLNwQlSlLnv
|
|
||||||
TRFrcDVrrRmrhFRZzVrczqhRpjqjsssCpfHjsCdpsPfpjCMC
|
|
||||||
ZBnBTMVTSbGbTVTGbCPgqsgPtHtgCcPtBB
|
|
||||||
ldDrmnnNrzhdhfgcsHqcsfCcsCHg
|
|
||||||
zFdrzNdzQNDDhFdWldDrJTbZTbLZJVVVpMVWVnLS
|
|
||||||
pLnpQNhBbnWvbsWm
|
|
||||||
FrFwjlTPTdTqqrDZWbvmZbpSgmJWvbgS
|
|
||||||
RqDqRrdGFpGRFrFFdTNzCcHcHLHBzQCcNNGN
|
|
||||||
bvRCtbtCPfSGtCcvCbPNlglqgqlGZMzTgnlZnq
|
|
||||||
hrmWWFspsHWrzNwTnFlTMTwFFn
|
|
||||||
HpjJDWBQmmQdRffbPtSzdJ
|
|
||||||
GpHjFsjMFpCpMWjMGCqWmmqrWQtmthdbDbbD
|
|
||||||
fzgLTJwJPSgJgzSzPfhmqmQhQHzQtbQDrrmq
|
|
||||||
RNlBRwHfRJHLLfHTwLSBppNGvjNMFFCVpVFcvcFC
|
|
||||||
SfQnfSFHfnvMtQQSnHJtMffsdTlZtdZmtllmTlmlRRbBRLDb
|
|
||||||
hrwhWWwqzPrcCzwwzmPlRbdmlQDTPPBLDl
|
|
||||||
CpwCzrwGzNCWrJnMvpMvfJVFvQ
|
|
||||||
rCRPpgSggcpqrhPrCDDTLsMLDSDGLTMGVs
|
|
||||||
HdvzmRWmlHzwvWHvRHRvHJbDFsdMssQQVGMDTMDLVLLFLT
|
|
||||||
JBlBnnWBJlCqZRRqRBpr
|
|
||||||
GtZllZDlfDpGHZtZBGBZpDmzQzzCSVVFHmmmsPCQWWSS
|
|
||||||
JvFJJrwvNNcJTnbrTRNRSCzqwSsVPCPQqmCQszVm
|
|
||||||
JLMnTbLnMgBhDFDf
|
|
||||||
lffDhtgDJzCJNGGTzWTRRnRvBv
|
|
||||||
qpbpdwqZwqZSwMPSqdQcQmTRnWvnBnRBQBtVnTvWmB
|
|
||||||
SccbbwSbZbFPswpSZtgFlClLhgChhhNfJlFj
|
|
||||||
ClmCjCJBjwBVwJGjlGNFJlVMHSrfpDpTfrHMcHTppQVrHp
|
|
||||||
dRLZWLvWSHmTccWW
|
|
||||||
ggtqzmRZnmhghZhZghntdqsvBbjlbNFFBPwNNJNNCBlwPGBz
|
|
||||||
HZmsFZQpvZsWCZQvWrghGrhtgNzdHddHGh
|
|
||||||
fWSbqWDJVwcSccNzrNhcBtGcgG
|
|
||||||
VqVfTJnbWjqTSqbwDRfRvQvFpFLRpZsssQsCQZ
|
|
||||||
FpFZNfplSTJmbZzddGzhDrWh
|
|
||||||
LqLPPQjLLRMPqvjLLHQrLqrRWdzHnGhdthttGGbbDWhDDdWz
|
|
||||||
sMLMgvRLgscrLrRQvwmTNNfpNplglplfmp
|
|
||||||
MPVBmCmWGWRPPqRhLcnjcvjjcpjMvp
|
|
||||||
tzwrwsJlrldJsrsrTtrzrTtSNnLJSShnjcncvnvqnSFnqN
|
|
||||||
rswrzsbdwDHHbWZqVfWV
|
|
||||||
dVmmMTmBPTrCBRMCqFHSWFFHWzCvCz
|
|
||||||
jNqfGsDqtsjGjQjDlcJFFFznFtzznvtFpFFp
|
|
||||||
fNNhgsDcfNflqchVRdgVrRPRdVTRRb
|
|
||||||
HJPLwgLvjttmgHJFjwHgtlsBbNbbNsPpblspTllThT
|
|
||||||
MzmcRRrdDMVTzbhNNSszhl
|
|
||||||
mCDDVqdVcdDrqfcCnrFwtGwvngwvtWJtFjWW
|
|
||||||
dFDpmttBlvNNgWlglNDBFttmTGHTcSSJJHHnMsJsGGSdqcJj
|
|
||||||
zLbwMLVQbQRwVsJsSHSsHcJqbj
|
|
||||||
wfVZLPzfZZmpMZZMBl
|
|
||||||
PZHZMJSTBWHNWSHzVnhhfnhThhpnpC
|
|
||||||
jFdBBtrFjpfnjfnf
|
|
||||||
ccGrbblbGRDQMlvmQBvmBl
|
|
||||||
PCCTsnbPbHDnlDfDNB
|
|
||||||
rMjQltgSqtvMjScQggjfVVzBzFHzGfVGDLGBqB
|
|
||||||
vdtrMSttcdwcpSQSdglMrtWRRPJZCpsRZJmWRRWChWPh
|
|
||||||
pWzbsPCCPPpbptSMCJJwBQQGQt
|
|
||||||
cDDmcTTRRqzFRddVTSJwMShMtBwhwQMDwv
|
|
||||||
HldqVmVlZdLTcmRFdrngNNzrffjWpPLggP
|
|
||||||
JPqvjJmmqvSLmPtpZdcftdmtfdCC
|
|
||||||
swwhDRwBBHjFFBtBfZ
|
|
||||||
RRzNQDwznDsDwWJjLNlrSPLSTr
|
|
||||||
VQmdRLvDlmqZdFrBBJdW
|
|
||||||
CMstGsnHnHGGMrMZwMpwBSbW
|
|
||||||
GnsshssNfjtsnggnHCGhjtmfLQQczllvDRVTTQllQWlQ
|
|
||||||
dhbNbswbwVdNtVdstBtgbNQTBCCSFTmfmMFmfRqQmmQM
|
|
||||||
HFljLrvZfMQQQPvm
|
|
||||||
WrpznLZZrnplpWbgdFcFsNzszgst
|
|
||||||
LjddfTlMccnBfDQBtBQb
|
|
||||||
ZRSNchHwhNNCHNSWPQFFFHDBBtnQDH
|
|
||||||
CNpZshSZgpwJmpdLMlplMc
|
|
||||||
bTmTFmqzgbBntRVsFvVwcv
|
|
||||||
CZfMrlZLLLMlfPZRLRHGstnjGwtvGcsSVwtcSGvn
|
|
||||||
ClZpMLCRMZMrHMLmWpqQBpzpgQzmbg
|
|
||||||
jDmSSGWDDdWdSqqDDqCqpJzqRRqpJnRsMRcMzM
|
|
||||||
lPgNPvPrrgNrPhNszFggnRzccbMJgz
|
|
||||||
ZQTHQvQTZPrrQlBBrNvQZZGtTtGdsVCGsCTLLGDmLsjt
|
|
||||||
rbCfBrbsvQqRFZRNZC
|
|
||||||
HLSTcwqwZSQFFgRZ
|
|
||||||
wdDwjpMHqJDTMTdqjlfBvGBhsbfhbsnb
|
|
||||||
ZhZcHHHlhgchHhlCZZhLCCbGdrsBBGPNBjGbsjNNjnJnPn
|
|
||||||
wtJqqwDqQQMQFqSqTzwzVTBnGdsjBdnMdPGBBsBdnrjr
|
|
||||||
RVzJzmSVZmLLWpCc
|
|
||||||
gdqjQQrlhhQlQrhsnjjhLgmmvmHBBmTmZRsHJzTBHRJv
|
|
||||||
NwNnGNbGPbmTGpJzppBG
|
|
||||||
nDnVDfMDrQqQStgM
|
|
||||||
MLbgbppMMgLmHgQttGQJgJrBShwNShWBBSNNrwNqNN
|
|
||||||
GnTFlzCVVwPRrVWhSw
|
|
||||||
GnDDdvdnZDTdnGMsHbbttZgttLbc
|
|
||||||
mdmPmjClrTzqttfm
|
|
||||||
cpFnSbcQQsqNNtqWJzHS
|
|
||||||
QFpcMMBcZtLpQBjVjZhlPjjVlwvw
|
|
||||||
spVsPjTZZMpZMVLDjmdSQJCLJSmLzdJQdl
|
|
||||||
HhRnNrqwMhNhnqnHwGNRFBNBrzSCSdQmQCdddbrQSSclSSbQ
|
|
||||||
nFNqGRvqBfjMvTssfZ
|
|
||||||
FjjzjnpFqqzFFqgFSZjBhHfHhnHRDDwfdTdLfD
|
|
||||||
MmCMGCsMWbtJrtCWCbmsmWWhdLGGwRBwdfdLhdTLhHHTBd
|
|
||||||
bJmtrRvRjgzFFvVq
|
|
||||||
RWwWmVQGMFGmMGVCVWRRZSBgDdSdJGlSJpcBGGSlpJ
|
|
||||||
HHhQThnjBDHfSBlS
|
|
||||||
bPhNjbsssQzFNQqWmz
|
|
||||||
FTDtrjqwwqGtDbGnfBlcnLcWBZwlWn
|
|
||||||
mMhRMvJsJvJnMHCvHmhLZLQlhWQBBfPfLPBZ
|
|
||||||
HRCCsdNdvNmCvggFStbzjbGSSjjn
|
|
||||||
sLGddsvvcZmLvrLMGcMsVnTTlqlHCsTHHVVgVt
|
|
||||||
wRbfJPbpNRffRJMBhpDntTCHFNVgqllFlqggHC
|
|
||||||
DpfbPhRDJPMJppJwzfpbbDGSjrGZvdccQdjGvQZdvrLz
|
|
||||||
wTwLNLVTqnLMsBwfMsJmCj
|
|
||||||
JhlGvcdJhSFvFvvvMfgBpCzjzdCfsMMs
|
|
||||||
DSlPPJSGWrDcFPhtFhWJZHQZLTQVnRWRbHbZHQQT
|
|
||||||
TmTgTrPDNLNVlDrmlbgNmrSSGbzjZGMvjpZjvvphWMzW
|
|
||||||
QtBfdfQcdfHtZcnZnGZzchnp
|
|
||||||
HQHwRBGfBCGBtsrCNPDTmTlNLr
|
|
||||||
bfNhjhNJDWhlWhlRRR
|
|
||||||
SsscnHgnSnZnltqqfWRWrzZv
|
|
||||||
cnfTMfmMnTnmFGsnTVLLLpQJbpbbjpdTdN
|
|
||||||
BqwZzqRQQRRPSlFRQDDwdfWwhJphnfgfnpMdJfdM
|
|
||||||
rcTLrcrvDDChWJhfpTgTJh
|
|
||||||
DHGbGNVCZStGqSqS
|
|
||||||
dlfdRNNfVdLwrRnwdwRmhLFsbsJJgLqbgCBWBCsW
|
|
||||||
PHDppMPMHHDPzmBBCmWJqCmbJD
|
|
||||||
HzzZHmZzQcNdRRdZwddr
|
|
||||||
wrlshslPsSRfvrQvwbrslCDghtDgCVhDhBVJCFHddt
|
|
||||||
mZnGpWpWzGTMqnFqDqJNDNFJVJqH
|
|
||||||
LjpzGcjMGcTzcmmznWSRsfRPfcrbFQcfrwcv
|
|
||||||
rWBmmmtNmmtBbtlwnhJJVZbw
|
|
||||||
FsRcjGdLdvFslZbQJZwQps
|
|
||||||
GHFGvMccFPjgDNbmWWBTTHNz
|
|
||||||
GhHzmhmwlpbltGBmBmsZsBZsfCWC
|
|
||||||
rgrcCCPdsWBgNVBD
|
|
||||||
RnRMdQPMCqndSdQdcQhblpLLwhJbbpzGzwpS
|
|
||||||
NNQtStFPpJwhRbRzRbqpZZ
|
|
||||||
jLnmdJrrdDTdbgWbTbRW
|
|
||||||
JHvnMCmDnMnMljLCDmMLjHNFGGNBPVtQQFtSNFQtPQBv
|
|
||||||
BFbBRllFZJnPVJbV
|
|
||||||
GpGHwgzcLhDcwttwthzzhHcPTjZjMgMVZjgZTMmTnMZWJVJm
|
|
||||||
GccwhqcDtlrPqQrRNQ
|
|
||||||
gWHWLgHBHQdFhjGGThTQhR
|
|
||||||
pZsSMpZMJJSzMszzzqclpfjvrvvcRGGTcTVhbVvRbTGTRG
|
|
||||||
lnMwsqZqsslpjlSMSsffZqqJBgHNNPNDWdLLgdDgdLHPWwCw
|
|
||||||
qfNvBCBfBqfNMBqCZZfcnmnvtwScpwFSpSsSwt
|
|
||||||
HzdVzLWPPGGDdnsswnztsRsnmn
|
|
||||||
QddWVQgJPPHJTJbjBtNTTq
|
|
||||||
DdRDDPRGGPGccfcbJwsbJWzsnznlLLWzWTLWhVVVVS
|
|
||||||
CvCrNCqgFqvmqNZFZqqZvpWlVrlVhlhnTLShlDWnzVBD
|
|
||||||
jvqpvpvpQNCQQCZZmmNgZfdGddRjJDPRMHcHJDHPJf
|
|
||||||
ttdtBtPPMqWMdgPPBbVGWfTGTTzSVLfVrzCS
|
|
||||||
ZpDpvRpZDDcmmjmZfLSrwzRnSVSnwTTR
|
|
||||||
ZvQmjFVHJFDcQjDlZcDVHdqMNtqNBPtPJtbhhbdbts
|
|
||||||
dGdwwLLpgwgssJpgssNhpJlnbfjnzFfcbfttGjzjlntf
|
|
||||||
VQvDvHVVQHrQHDCZVBChrHFtzffnfltFFtncnvFtllMl
|
|
||||||
VBShSqDVRVSTmppPwwsP
|
|
||||||
fTFDTLNNzlcNrmDcrMDTFPwCSsbCbPPsnCPwLSPvbs
|
|
||||||
ttQqhJtBRRGnvgHGnlSnbl
|
|
||||||
hZBJlQBRjVRBRjhtRRMNFVmFmfDNrfWcFVmD
|
|
||||||
mcTZFBFmqBjmBgPtCtPprmssStCP
|
|
||||||
LWDQNqDJfQNJddnWfzhfsPRVppVVsSptftpVMS
|
|
||||||
NDGnJDDDbzddWdNbGNQQLQbqqFBBFcjlZBlHjlZHGBTvZB
|
|
||||||
PwDzvphPwVwWBqLLwnJWTq
|
|
||||||
jdCGCgjmllCrmmlmjrbgmRdgJSSJJFLSSqJfLnqLLLbWffLB
|
|
||||||
mRdjcMHgDpZhDqMZ
|
|
||||||
cqLjhhrwZwJbBqZhMwbZZdGWdGSllWFvLFGQdnGFQG
|
|
||||||
gHHVzzppRVggcgpcGWRQRSvdSvvGWvll
|
|
||||||
HmNNHtVggHsHPtrhJsbjbwCrCqJc
|
|
||||||
zqPvzLVvzFFQZzWpRLlmHRDHmRCHDH
|
|
||||||
dNjnJGGrGdqqMprRlpqB
|
|
||||||
GsgtjhSsSvvSFqvP
|
|
||||||
pVrfzzjrjWVWTWjrNZvnJSJZqnnqnpSZZS
|
|
||||||
bdQVQPRPDdcbRGPFddRVMVlZlMlBqSBBZSvSZwnwvJBS
|
|
||||||
bFbcFbCPPCbbVHCCdVgWfrzjmWfrWrNWgHfT
|
|
||||||
JgJqLjjjVGgdqGDZGzlGRStStT
|
|
||||||
PHrHccmrMrTSMVStRtRR
|
|
||||||
HWPWffNsrppfPWNsVFsmPNCJwwjdJdvdvnJwghBLJLpdLJ
|
|
||||||
HtHvcnDSDgDcDHtpLrvwjwjfZMjffw
|
|
||||||
CPWzdJdqVdWZpnLdwnrfdn
|
|
||||||
GNCNmTQnPVRRglSlHsSG
|
|
||||||
FJdhjTPbdPJjTPjTjPtSLsSBWWRcCvCvsBWztc
|
|
||||||
MfGgrHMDDpMnZGDLCRLScCsBlgWvzB
|
|
||||||
HnmpmNNHGZZpZZrnMPFFbNCNbFdTPVFFFN
|
|
||||||
TJrrrJQTqJqmTltfRrgfgtgFFg
|
|
||||||
jLRzBvBjjcnFBNwWlgBZFt
|
|
||||||
RMjMCGpGzGznzhRmmPPDPsmMmPQmJs
|
|
||||||
BZqwQCQZGZcVBczqBHtfbbbWfTqNWfMfPNqW
|
|
||||||
LLpmFjpvpHrvRFSRDRMWbdbtfPWPbjtMgMtW
|
|
||||||
SDnrpDprDFnQhZCVnhcH
|
|
||||||
WTsBBQTfQQTTbJBbZbnfTsRFwFrjwjFlrRqvrrlqvWRV
|
|
||||||
pGcShcGSLNJNHCLttlpllRFgpRFlRpgRrg
|
|
||||||
GzcMLScSGJGtCbsbQfbZbMBnBn
|
|
||||||
NGCLGjVjZjQwTGJRQdWM
|
|
||||||
cFTcvSrFmnnpSmndMswsRMJWRwMHps
|
|
||||||
rrrhhcTznqvzmcccvvmhgzqDgbgttlDtjjjlfVCfZCjZZV
|
|
||||||
ccDMHddWNDnnNWMMzdHJJmSQhfQZfvQZflrZQfdVfLLZ
|
|
||||||
bgBFRTwFtgqCgpRGFpvpVllZlhjrrlVlvj
|
|
||||||
wtbBGPTPtRTgbCTBqFgGRwFnsWJnmDMsWMJJMzHPhDmJzP
|
|
||||||
zsbsMtMMdnffBbzNsBtCCWLpLrCrcNLVDWVVcD
|
|
||||||
TmPhJRvwmjmhFJwjjRPFPTvJGVCcCGBrDpccpDrCrWCVDVFZ
|
|
||||||
QvSTvBhqwjPmwddHgtqMnllzMl
|
|
||||||
gftDtqnpqzGZsFcthbtZ
|
|
||||||
VlNPrBrRNrLBmdRVFCcGCZTFCsTCsbLL
|
|
||||||
VdldlljlSNHBsSlqfgqMDDvzpHJHWg
|
|
||||||
tQDLvFLcDrWrcnsHffCGgGHG
|
|
||||||
ZRPTPJqhMZJZVllRZJPVZPRHnhCnfdssnCznzGhdgfwCHn
|
|
||||||
qPqlPVlTlSqbZZVJplqlPDmrjWFtmLtFWgQvtmtFvp
|
|
||||||
zlZzdNRPgGGzsLGCDBBtCDCtSncScP
|
|
||||||
vWvHWbqjrFMbvrTWcVnQBBBSjLDcQJcL
|
|
||||||
wfLHwfFqLFbhHvWhMWqwbwwRspssmzgpzGgmmNfmzmRGRz
|
|
||||||
rPvLrQBvBLsLLdtrgssgZjwFwlnCFMtMFnlllnnb
|
|
||||||
mNmmzpWHlzjlJMJb
|
|
||||||
TVSVTWpqRWpSTqNbTVRBPDfLLPrSLrsfQrrvsf
|
|
||||||
nRjpQWnQnRQzMjRdrtvvPCfmvGtPfMcCtG
|
|
||||||
TDbrbhNZVbbbbwhDZDhbTTGfcftqcGVvmmcqcJCcCPmJ
|
|
||||||
NLhrSwgwgnsLsQWljW
|
|
||||||
JWqVSpGNPdNNzdZJJpMzHzwLgsMwzwQwMBgL
|
|
||||||
clrlcvrRfccCtFbHrBWLgwLHmMHsHg
|
|
||||||
DbfDFjcvRcvchWZVWdNpGZNqdh
|
|
||||||
sdfvFLfmtszQwLfddRpmtDDBjVNWGMNQVQNMJGWJMj
|
|
||||||
lccrncTZhqqcqhWggvrjMNMGrJMG
|
|
||||||
SblShnZCqSbPhhbcbTTSZFdFsFpmdRwPwzvmswLtmm
|
|
||||||
PGwwHpfnFSvVpWqWCQNNjCbbnW
|
|
||||||
lmddlhcDRBlLRchdmzbNjqqWTcbNPNWTzz
|
|
||||||
RBMrRdRhlDtPrJtfwFHpsvrHpFSrFw
|
|
||||||
hhwlglFFSQndLRFbmCbTTz
|
|
||||||
NczHMMqzpzPcpfBffcmTrdfGbbRbGrdGrLCL
|
|
||||||
qNzNPqMjcqNBWWccBHsZPDhJnllwnwvJvQnJhQsgvD
|
|
||||||
mbmvmvbbprZmlFmZbFgLffgQtFNHNhfqQtNQ
|
|
||||||
SJcdzjSJBzdBdJDzQhhLQfqzNQQHggRL
|
|
||||||
jwDwcTTDThvTZPPW
|
|
||||||
FSVBBBvHvCpVVDDGcGwNNhhctwMvMc
|
|
||||||
fLLZsZVQmjfTfqQRmQhhtgbbJbGJRghtcGct
|
|
||||||
qTsTQdqjVfqdVdZZqVLpCpzSpdppBlSpCFdHSC
|
|
||||||
sQQhWsMmQshlhmMQZFDHDJFjgjzHZgcHdH
|
|
||||||
LnwnpNRrnrbCqqLpwnqfnLcvFHJFzNcHzJcgJJHgdDgN
|
|
||||||
wCbnpCfPCVqwwnrrbbPRGMMlSllmlTTmsThVMlsd
|
|
||||||
pzrprfwgbwtwqzrCWbqCwqSMvddHdDSvtHRlDnRRDddD
|
|
||||||
zQLzQQjPBPFcLcQFTFsmNQzcMNdDdvnldHHvdvnDnRnlvRnJ
|
|
||||||
cTZGzzscLcPrqrfrZqqbVV
|
|
||||||
DcSdcTwDLmcwDwvWssGfJfcJQZPGnfcs
|
|
||||||
FlHFMgtgNggpsztMHMqpjgBBnCfPflfQnZCQBBCnRPZC
|
|
||||||
gpVjqNVrHFtjqqzSLDTSmTDwwrmhbs
|
|
||||||
MLMzJTsZzZMgMLgHMmVmdCVhCBlQwDwwhChD
|
|
||||||
vtPRQpbqCldwdtBC
|
|
||||||
bQqFbnQbcFfjPRFPQnTrMMgcJgJrssrzgrgS
|
|
||||||
mtdGJmQRFmdtQvdvtRtdHzHzqZqpHFzZnCzhZjjH
|
|
||||||
fPwVlllswMVNPfBDDlNVsMsfcBjchHncqzjZbpzjcqCnpHHn
|
|
||||||
rlsNPWNlhWTPMMNPfwNWTLQRvQLLmgvSJvRJgTRG
|
|
||||||
TwnqhqqgvQnGBGmBDp
|
|
||||||
SMjclJSjjVJgCzCzNgpmdBpmBGspRBmpDDVB
|
|
||||||
JjMCgMMHMMZNStllZSNHhPqFhFWfqPPqTqhLFqtL
|
|
||||||
lRQPtjPRlDdStDSlPmvllvLsCphFfCHLHggspgFmsFLH
|
|
||||||
qwpTNprcbNWVHLrfFssBgFCM
|
|
||||||
NTWTnzTTWGZZZVRSRRQGpdDtSQRp
|
|
||||||
gpwTPNPBPTdLLLLVGl
|
|
||||||
jSHdjzZHMcDVtDvFjtCF
|
|
||||||
HqfZMHzbcqRRRWgdqPmBBBNmwW
|
|
||||||
PvSBtdFgvSmBPngFBTBjbSjwwpGjsppMjNpMjj
|
|
||||||
VZLfVQLzQQQhllpcNcwbssvwwwZj
|
|
||||||
vHWLVVqWTmTgttgq
|
|
||||||
CNRmNRFNRCWbWNCrlmfGlWqFLsDZQZBZzgwQZsBsDZZCzczB
|
|
||||||
MSjdVHvHnDDhHvdwBwssZVzwcgLcQg
|
|
||||||
HnMMTdttHSHSpHvDddpSHTjWlNWFlmRtRmRbqGfqGGNNfR
|
|
||||||
fBLTDppznrfTndfnfTzTLPvZvvHVbRbggjvzVbzvbV
|
|
||||||
mwmDGGlqDhMqthGqhJMWmlNVRZPHjgwjjRZbbHRgRHvv
|
|
||||||
DmhsJsshWGhSGlmlmrdcLLsTBBfcfnBppc
|
|
||||||
mbCGFFmGmcdTrCTQdh
|
|
||||||
MJHfJNLllJffPLRTdBqTRQNcqQGB
|
|
||||||
fPJHfSSSWfSLDMLWGHDMLDFmznmsjmvZwzvjZjbvbZ
|
|
||||||
pPvpJSfZTTvCzNZczzQZchcj
|
|
||||||
svbHWsqsvbsMFtVHgVtcRQcDlQRRRQLjlqjczj
|
|
||||||
tBsgvHVMFggbgFrgWnwSndfBmmBJfPSfpn
|
|
||||||
jwbwfjSbwjVSjvZPzWSvhvhQlCsBFgLRLLgBLRClLLFQQw
|
|
||||||
GdNJHpmHTDnTNJqnFCgBLFLFzFtsQRCd
|
|
||||||
NpMJHpnMrDpJGTHqTTmJHTPjfcvbWfrffVzvZfVWSbjz
|
|
||||||
wFwpqWwwpqwtqqrbCFtptDmCcfNhNRzRBZRRJRChVNBZBJ
|
|
||||||
svlvjHsQlvdlvMLdlvPSSLtzzczcNhJthfNtRcNMJNMc
|
|
||||||
HvvPLSHjgltjsvqwbbnmWmDpgwTT
|
|
||||||
zhCmPVwwChdCBtsWnNWswBWr
|
|
||||||
GJJSfSgFpjJjGgpfpgrcNNstvnBHNnHLtFHr
|
|
||||||
jgDTfjpMgZMGMGJTMMJRhzZPCzbhVlPqdNCbhd
|
|
||||||
bDbQQmVDRpDNbRQlfQQZnfwTlllfsT
|
|
||||||
FChzzBWhVzrgMwffJwlnngnTlJ
|
|
||||||
MCvqvhFzcHCChjtpNNVLppGmbq
|
|
||||||
bZZzJnccqdzcLhrcQDLrDs
|
|
||||||
FfCfWVfjWTFClClfwjWCfGGwhZSDhSLsSSRpZprLph
|
|
||||||
mFmTMmFjMMWFfZtttflWjmWTngNHJHggJJHtzgnJvBtBgHdv
|
|
@ -1,38 +0,0 @@
|
|||||||
from rucksack.file.rucksack_loader import RucksackLoader
|
|
||||||
from rucksack.ItemPriorities import item_priority
|
|
||||||
from entities.elf import Elf
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
rs = RucksackLoader("./input/day3/input.lst").parse_file()
|
|
||||||
i = item_priority
|
|
||||||
|
|
||||||
groups = []
|
|
||||||
curr_group = []
|
|
||||||
for rucksack in rs: # creating groups of 3
|
|
||||||
elf = Elf()
|
|
||||||
curr_group.append((elf, rucksack))
|
|
||||||
if len(curr_group) >= 3:
|
|
||||||
groups.append(curr_group)
|
|
||||||
curr_group = []
|
|
||||||
|
|
||||||
group_badges = []
|
|
||||||
for i in range(len(groups)):
|
|
||||||
group = groups[i]
|
|
||||||
dup1 = Elf.check_rucksacks_for_duplicates(group[0][1], group[1][1])
|
|
||||||
dup2 = Elf.check_rucksacks_for_duplicates(group[0][1], group[2][1])
|
|
||||||
|
|
||||||
r = Elf.check_compartments_for_duplicates(dup1, dup2)
|
|
||||||
if r:
|
|
||||||
final_dup = r
|
|
||||||
print(f"Group #{i} has the badge item {final_dup} ({item_priority[final_dup]})")
|
|
||||||
else:
|
|
||||||
final_dup = None
|
|
||||||
raise ValueError(f"Found no badge item for Group #{i}")
|
|
||||||
|
|
||||||
group_badges.append(final_dup)
|
|
||||||
|
|
||||||
print("")
|
|
||||||
print(f"The priority sum is: {sum([item_priority[c] for c in group_badges])}")
|
|
||||||
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
|||||||
from calories.file.calorie_list import CalorieList
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
elves = CalorieList("./input/day1/input.lst").parse_file()
|
|
||||||
for elf in elves:
|
|
||||||
print(f"Elf {elf} has calories: {elf.get_inventory_calories()}")
|
|
||||||
elves.sort(key=lambda x: x.get_inventory_calories(), reverse=True)
|
|
||||||
print(f"Most calories has: {elves[0]} with {elves[0].get_inventory_calories()} calories in their inventory!")
|
|
||||||
|
|
||||||
print(f"The top 3 calorie elves are: {elves[0]} ({elves[0].get_inventory_calories()}), "
|
|
||||||
f"{elves[1]} ({elves[1].get_inventory_calories()}) and "
|
|
||||||
f"{elves[2]} ({elves[2].get_inventory_calories()})")
|
|
||||||
print(f"Their total is: {sum([x.get_inventory_calories() for x in elves[:3]])}")
|
|
@ -1,21 +0,0 @@
|
|||||||
from entities.elf import Elf
|
|
||||||
from rockpaperscissor.file.guide_list import RockPaperScissorGuide
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
my_elf = Elf()
|
|
||||||
other_elf = Elf()
|
|
||||||
rounds = RockPaperScissorGuide("./input/day2/input.lst").parse_file()
|
|
||||||
scores = []
|
|
||||||
for other, own in rounds:
|
|
||||||
result, score = my_elf.evaluate_RPS_round(other, own)
|
|
||||||
scores.append(score)
|
|
||||||
if result:
|
|
||||||
r = "won"
|
|
||||||
else:
|
|
||||||
r = "lost"
|
|
||||||
print(f"Elf {my_elf} played {own} against {other} and {r} with {score} points!")
|
|
||||||
|
|
||||||
print()
|
|
||||||
print(f"I've got a total of {sum(scores)} points!")
|
|
||||||
|
|
||||||
|
|
@ -1,109 +0,0 @@
|
|||||||
import os
|
|
||||||
from typing import List, Tuple
|
|
||||||
|
|
||||||
|
|
||||||
class RPS:
|
|
||||||
WIN_SYM = "Z"
|
|
||||||
DRAW_SYM = "Y"
|
|
||||||
LOSS_SYM = "X"
|
|
||||||
|
|
||||||
ROCK = "R"
|
|
||||||
PAPER = "P"
|
|
||||||
SCISSOR = "S"
|
|
||||||
|
|
||||||
ROCK_SCORE = 1
|
|
||||||
PAPER_SCORE = 2
|
|
||||||
SCISSOR_SCORE = 3
|
|
||||||
|
|
||||||
WIN_SCORE = 6
|
|
||||||
DRAW_SCORE = 3
|
|
||||||
LOSS_SCORE = 0
|
|
||||||
|
|
||||||
RPS_SYM_TO_SHAPE = {
|
|
||||||
"A": ROCK,
|
|
||||||
"X": ROCK,
|
|
||||||
|
|
||||||
"B": PAPER,
|
|
||||||
"Y": PAPER,
|
|
||||||
|
|
||||||
"C": SCISSOR,
|
|
||||||
"Z": SCISSOR
|
|
||||||
}
|
|
||||||
|
|
||||||
RPS_SHAPE_TO_SCORE = {
|
|
||||||
ROCK: ROCK_SCORE,
|
|
||||||
PAPER: PAPER_SCORE,
|
|
||||||
SCISSOR: SCISSOR_SCORE
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class RockPaperScissorGuide:
|
|
||||||
"""
|
|
||||||
Day 2 - Rock Paper Scissors
|
|
||||||
|
|
||||||
The Elves begin to set up camp on the beach. To decide whose tent gets to be closest to the snack storage,
|
|
||||||
a giant Rock Paper Scissors tournament is already in progress.
|
|
||||||
|
|
||||||
One Elf gives you an encrypted strategy guide (your puzzle input) that they say will be sure to help you win.
|
|
||||||
The first column is what your opponent is going to play: A for Rock, B for Paper, and C for Scissors.
|
|
||||||
The second column, you reason, must be what you should play in response: X for Rock, Y for Paper,
|
|
||||||
and Z for Scissors. Winning every time would be suspicious, so the responses must have been carefully chosen.
|
|
||||||
|
|
||||||
The score for a single round is the score for the shape you selected (1 for Rock, 2 for Paper, and 3 for Scissors)
|
|
||||||
plus the score for the outcome of the round (0 if you lost, 3 if the round was a draw, and 6 if you won).
|
|
||||||
|
|
||||||
(Part 2 only)
|
|
||||||
The second column says how the round needs to end: X means you need to lose,
|
|
||||||
Y means you need to end the round in a draw, and Z means you need to win.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, path: str):
|
|
||||||
if not os.path.isfile(path):
|
|
||||||
raise FileNotFoundError(f"File was not found or isn't a file: {path}")
|
|
||||||
|
|
||||||
self.file_path = path
|
|
||||||
|
|
||||||
def parse_file_v1(self) -> List[Tuple[str, str]]:
|
|
||||||
strategy_guide = []
|
|
||||||
with open(self.file_path, "r") as file:
|
|
||||||
for line in file:
|
|
||||||
line = line.replace("\n", "")
|
|
||||||
a, b = line.split(" ")
|
|
||||||
strategy_guide.append((RPS.RPS_SYM_TO_SHAPE[a], RPS.RPS_SYM_TO_SHAPE[b]))
|
|
||||||
|
|
||||||
return strategy_guide
|
|
||||||
|
|
||||||
def parse_file(self) -> List[Tuple[str, str]]:
|
|
||||||
strategy_guide = []
|
|
||||||
with open(self.file_path, "r") as file:
|
|
||||||
for line in file:
|
|
||||||
line = line.replace("\n", "")
|
|
||||||
a, b = line.split(" ")
|
|
||||||
|
|
||||||
a = RPS.RPS_SYM_TO_SHAPE[a]
|
|
||||||
|
|
||||||
answer = None
|
|
||||||
|
|
||||||
if b == RPS.WIN_SYM:
|
|
||||||
if a == RPS.ROCK:
|
|
||||||
answer = RPS.PAPER
|
|
||||||
elif a == RPS.PAPER:
|
|
||||||
answer = RPS.SCISSOR
|
|
||||||
elif a == RPS.SCISSOR:
|
|
||||||
answer = RPS.ROCK
|
|
||||||
elif b == RPS.DRAW_SYM:
|
|
||||||
answer = a
|
|
||||||
elif b == RPS.LOSS_SYM:
|
|
||||||
if a == RPS.ROCK:
|
|
||||||
answer = RPS.SCISSOR
|
|
||||||
elif a == RPS.PAPER:
|
|
||||||
answer = RPS.ROCK
|
|
||||||
elif a == RPS.SCISSOR:
|
|
||||||
answer = RPS.PAPER
|
|
||||||
|
|
||||||
if answer is None:
|
|
||||||
raise ValueError("Something went wrong with answer determination!")
|
|
||||||
|
|
||||||
strategy_guide.append((a, answer))
|
|
||||||
|
|
||||||
return strategy_guide
|
|
@ -1,3 +0,0 @@
|
|||||||
alphabet = "abcdefghijklmnopqrstuvwxyz"
|
|
||||||
|
|
||||||
item_priority = dict(zip(alphabet+alphabet.upper(), range(1, len(alphabet)+27+1)))
|
|
@ -1,21 +0,0 @@
|
|||||||
from typing import List, Tuple
|
|
||||||
|
|
||||||
|
|
||||||
class RucksackLoader:
|
|
||||||
|
|
||||||
def __init__(self, path: str):
|
|
||||||
self.path = path
|
|
||||||
|
|
||||||
def parse_file(self) -> List[Tuple[List[str], List[str]]]:
|
|
||||||
rucksacks = []
|
|
||||||
with open(self.path, "r") as file:
|
|
||||||
for line in file:
|
|
||||||
line = line.strip()
|
|
||||||
if len(line) == 0:
|
|
||||||
continue
|
|
||||||
comp_1 = list(line[:len(line)//2])
|
|
||||||
comp_2 = list(line[len(line)//2:])
|
|
||||||
rucksacks.append((comp_1, comp_2))
|
|
||||||
|
|
||||||
return rucksacks
|
|
||||||
|
|
Loading…
Reference in New Issue