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