Compare commits
5 Commits
7b500eca53
...
07ecb2d127
| Author | SHA1 | Date | |
|---|---|---|---|
| 07ecb2d127 | |||
| 152dc04a5b | |||
| fafa2b6550 | |||
| f4ad14a34a | |||
| c36f402874 |
BIN
odin/day01.bin
BIN
odin/day01.bin
Binary file not shown.
@@ -37,13 +37,31 @@ determine_score :: proc(friendly: Move, enemy: Move) -> int {
|
||||
return result + int(friendly)
|
||||
}
|
||||
|
||||
determine_score_alt :: proc(friendly: Move, outcome: Move) -> int {
|
||||
// X = lose round
|
||||
// Y = draw round
|
||||
// Z = win round
|
||||
// 3 defeats 2, 2 defeats 1, 1 defeats 3
|
||||
// If w := enemy input and v := friendly input, then w = (v - 1) % 2 is a defeat
|
||||
return 0
|
||||
/// Scoring for Part 2 of the puzzle
|
||||
determine_score_alt :: proc(outcome: Move, enemy: Move) -> int {
|
||||
// Redefine the outcomes so that
|
||||
// draw = 0, win = 1, lose = 2
|
||||
outcome_ : int;
|
||||
switch outcome {
|
||||
// X = lose
|
||||
case .ROCK:
|
||||
outcome_ = 2
|
||||
// Y = draw
|
||||
case .PAPER:
|
||||
outcome_ = 0
|
||||
// Z = win
|
||||
case .SCISSORS:
|
||||
outcome_ = 1
|
||||
}
|
||||
// Convert enemy from range [1, 3] to range [0, 2]
|
||||
enemy_ := int(enemy) - 1
|
||||
// Assert that (friendly - enemy = outcome) % 3 (see scratch.py)
|
||||
// Thus, (friendly = outcome + enemy) % 3
|
||||
friendly_ := (outcome_ + enemy_) % 3
|
||||
// Add 1 back in because we subtracted it before (going from [0, 2] to [1, 3])
|
||||
friendly_ = friendly_ + 1
|
||||
// Return score as before
|
||||
return determine_score(cast(Move)friendly_, enemy)
|
||||
}
|
||||
|
||||
main :: proc () {
|
||||
@@ -56,7 +74,7 @@ main :: proc () {
|
||||
fh, errno := os.open(os.args[1])
|
||||
if errno != os.ERROR_NONE {
|
||||
fmt.printf("Cannot open %s: %s\n", os.args[1], os.get_last_error_string())
|
||||
os.exit(int(errno))
|
||||
os.exit(-1)
|
||||
}
|
||||
defer os.close(fh)
|
||||
|
||||
@@ -64,6 +82,7 @@ main :: proc () {
|
||||
defer delete(buffer);
|
||||
|
||||
num_read, error := os.read(fh, buffer)
|
||||
score : int = 0;
|
||||
total_score : int = 0;
|
||||
friendly : Move
|
||||
enemy : Move
|
||||
@@ -73,8 +92,9 @@ main :: proc () {
|
||||
chr = buffer[0]
|
||||
switch chr {
|
||||
case '\n':
|
||||
fmt.printf("Score for this line: %d\n", determine_score(friendly, enemy))
|
||||
total_score += determine_score(friendly, enemy)
|
||||
score = determine_score_alt(friendly, enemy)
|
||||
fmt.printf("Score for this line: %d\n", score)
|
||||
total_score += score
|
||||
case 'A':
|
||||
enemy = .ROCK
|
||||
case 'B':
|
||||
@@ -92,7 +112,7 @@ main :: proc () {
|
||||
}
|
||||
}
|
||||
if chr != '\n' {
|
||||
total_score += determine_score(friendly, enemy)
|
||||
total_score += determine_score_alt(friendly, enemy)
|
||||
}
|
||||
/// Handle potential errors
|
||||
if error != os.ERROR_NONE {
|
||||
|
||||
51
odin/day02/scratch.py
Normal file
51
odin/day02/scratch.py
Normal file
@@ -0,0 +1,51 @@
|
||||
rock = 0
|
||||
paper = 1
|
||||
scissors = 2
|
||||
|
||||
print("Friendly first, then enemy")
|
||||
|
||||
result = (rock - paper) % 3
|
||||
print(f"{rock} - {paper} % 3 = {result}")
|
||||
|
||||
result = (paper - scissors) % 3
|
||||
print(f"{paper} - {scissors} % 3 = {result}")
|
||||
|
||||
result = (scissors - rock) % 3
|
||||
print(f"{scissors} - {rock} % 3 = {result}")
|
||||
|
||||
print("lose = 2")
|
||||
lose = 2
|
||||
|
||||
result = (paper - rock) % 3
|
||||
print(f"{paper} - {rock} % 3 = {result}")
|
||||
|
||||
result = (scissors - paper) % 3
|
||||
print(f"{scissors} - {paper} % 3 = {result}")
|
||||
|
||||
result = (rock - scissors) % 3
|
||||
print(f"{rock} - {scissors} % 3 = {result}")
|
||||
|
||||
print("win = 1")
|
||||
win = 1
|
||||
|
||||
result = (paper - paper) % 3
|
||||
print(f"{paper} - {paper} % 3 = {result}")
|
||||
|
||||
result = (scissors - scissors) % 3
|
||||
print(f"{scissors} - {scissors} % 3 = {result}")
|
||||
|
||||
result = (rock - rock) % 3
|
||||
print(f"{rock} - {rock} % 3 = {result}")
|
||||
|
||||
print("draw = 0")
|
||||
draw = 0
|
||||
|
||||
print("(friendly - outcome = enemy) % 3")
|
||||
outcome = (rock - win) % 3
|
||||
print(f"{outcome} = {scissors}")
|
||||
|
||||
outcome = (paper - win) % 3
|
||||
print(f"{outcome} = {rock}")
|
||||
|
||||
outcome = (scissors - win) % 3
|
||||
print(f"{outcome} = {paper}")
|
||||
429
odin/day03/day03.odin
Normal file
429
odin/day03/day03.odin
Normal file
@@ -0,0 +1,429 @@
|
||||
package day03
|
||||
|
||||
import "core:fmt";
|
||||
|
||||
// Lowercase item types a through z have priorities 1 through 26.
|
||||
// Uppercase item types A through Z have priorities 27 through 52.
|
||||
|
||||
BOUND_a := int('a')
|
||||
BOUND_z := int('z')
|
||||
BOUND_A := int('A')
|
||||
BOUND_Z := int('Z')
|
||||
|
||||
priority :: proc(item: rune) -> int {
|
||||
item_ := int(item)
|
||||
n : int;
|
||||
if BOUND_a <= item_ && item_ <= BOUND_z {
|
||||
// Map to range [25, 0]
|
||||
n = BOUND_z - item_
|
||||
// Reverse range to [0, 25]
|
||||
m := 25 - n
|
||||
// Map to range [1, 26]
|
||||
return m + 1
|
||||
} else if BOUND_A <= item_ && item_ <= BOUND_Z {
|
||||
// Map to range [25, 0]
|
||||
n = BOUND_Z - item_
|
||||
// Reverse range to [0, 25]
|
||||
m := 25 - n
|
||||
// Map to range [27, 52]
|
||||
return m + 27
|
||||
} else {
|
||||
return -1
|
||||
}
|
||||
}
|
||||
|
||||
prio_to_rune :: proc(prio: int) -> rune {
|
||||
if 1 <= prio && prio <= 26 {
|
||||
return rune(BOUND_a + prio)
|
||||
}
|
||||
if 27 <= prio && prio <= 52 {
|
||||
return rune(BOUND_A + prio)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
sum_rucksack :: proc(sack: string) -> int {
|
||||
counter := make([]int, 52)
|
||||
defer delete(counter)
|
||||
for idx in 0..<52 {
|
||||
counter[idx] = 0
|
||||
}
|
||||
total := 0
|
||||
midpoint := len(sack) / 2
|
||||
for chr, idx in sack {
|
||||
prio := priority(chr)
|
||||
if prio < 0 {
|
||||
return -1 // TODO handle error better
|
||||
}
|
||||
index := prio - 1
|
||||
if idx < midpoint {
|
||||
counter[index] += 1
|
||||
} else {
|
||||
if counter[index] > 0 {
|
||||
fmt.printf("Adding %c (%d)\n", chr, prio)
|
||||
counter[index] = -1
|
||||
total += prio
|
||||
}
|
||||
}
|
||||
}
|
||||
return total
|
||||
}
|
||||
|
||||
find_common_item :: proc(sacks: []string) -> int {
|
||||
size := 52
|
||||
counter := make([]int, size) // Dynamic array initialized to all 0
|
||||
defer delete(counter) // Clean up memory when it goes out of scope
|
||||
|
||||
// Compute the max value for a counter
|
||||
max_counter := 0
|
||||
idx : u32 = 0
|
||||
for _ in 0..<len(sacks) {
|
||||
max_counter = max_counter & (1 << idx)
|
||||
idx += 1
|
||||
}
|
||||
|
||||
// Check every item in every rucksack
|
||||
for sack, offset_ in sacks {
|
||||
offset := u32(offset_)
|
||||
for chr, _ in sack {
|
||||
prio := priority(chr) - 1
|
||||
counter[prio] = counter[prio] & (1 << offset)
|
||||
// If we hit the max value, we can just quit without checking anything else - this is because per the problem there should only be one item that appears in all three rucksacks
|
||||
if counter[prio] == max_counter {
|
||||
return prio + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
main :: proc() {
|
||||
// input := [6]string{
|
||||
// "vJrwpWtwJgWrhcsFMMfFFhFp",
|
||||
// "jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL",
|
||||
// "PmmdzqPrVvPwwTWBwg",
|
||||
// "wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn",
|
||||
// "ttgJtRGJQctTZtZT",
|
||||
// "CrZsJsPPZsGzwwsLwLmpwMDw",
|
||||
// }
|
||||
input := []string{
|
||||
"lvcNpRHDCnTLCJlL",
|
||||
"RFZggsMrjTFGCJmdmd",
|
||||
"srsBZgBqwBqRZbzqtHpzzDNtHDqV",
|
||||
"CCTPpCvlpzzZQQQflrzbQDttTJcgcggJcHtcddtdhT",
|
||||
"nMLBRnGsFFLznRFRLMMNBnNLDRDdhScJccctdSccJJgDDHhH",
|
||||
"GVBGVBsLjsrrvfzpjpfQ",
|
||||
"dzVRSPVVBVDSPzDBQVSQFFlrclMplpMJMtPJlJvHZCMt",
|
||||
"TjmGmbhjTnTmwhmrvvrHcZvCHZMl",
|
||||
"fnLwwqfwfqjghHwGThwfTGGBFVDFFsszSRVzRBsdBDgFsV",
|
||||
"CCWFCcdDWwcWFpSvggnzRRQszngJwT",
|
||||
"mGtqqLrqfmmLNtNrgTjgJzNQlvJTvznJ",
|
||||
"tnhVbhMLLZZrnWHPSHDBWbWBFd",
|
||||
"nQhvgnCQjSSSTTSMCsLDsfPfDlsPJMWLzL",
|
||||
"qrqBFFBbrVRLszLfsqdqPW",
|
||||
"bNFFRbBcFZNrZRRRbprNpFrHSwznTnvSwgHvzCSSSjnCQwgz",
|
||||
"tnnZZVmwmqtvVdZqnddQQHHTHQLsFTnsPrrgrQ",
|
||||
"MzMflMGpzGzPGPgjLgHrGj",
|
||||
"zPfhMJDDMJfzlhcRJvVwcVtwVcmcbqqtbv",
|
||||
"GVzrBVcPVfGrzVVBcQJlGGRCZSSRtSdRnGLJ",
|
||||
"wbjvHWbLvhFppjZdtwZRNddtJwlR",
|
||||
"pvMmbpFFbqqqvWHMFvzrLDMMrMTTrVTPzVzc",
|
||||
"qPmgpmwpwqWWPHdjdTNStzNLMztSWtMNtz",
|
||||
"lVFfJrFJbbcsvcRVRZzQCzQNSZTZ",
|
||||
"DGbvFSDGbDjnqgjwmGdq",
|
||||
"DMnpnpwwnpmRRmcRBDnDwpbRQHssHqhHCHHSsQddHZQQcqqs",
|
||||
"JlZjjlJgNSddfsgQdf",
|
||||
"GvrWvzNjvPVLDpbPZwBP",
|
||||
"drQDzHsHrdZWqDSSPwmmJDDbvbSJ",
|
||||
"hphBhCMFlBtBtGTJMJsscPwTjMJv",
|
||||
"tlBCGFgVFNpGClFFVGGtFBZrdZQznfdQQrRWVRQdRsVf",
|
||||
"NjdCLdjzzlNdjwBBtZqpqPJQbN",
|
||||
"CsDWcHcGHtcBbJPpbP",
|
||||
"mGHSssSgSsHFSgGrSgmlLzCdldllrCVCLdnfnT",
|
||||
"rDLLzRmbcLJRtRSvSBdZtSTp",
|
||||
"MFswshwgsCsjghgFBsGssjlZpfpvdSHfTdCZTSpHtfddTH",
|
||||
"llwlwGjMPMQQnBMswsFgglPVcWcDcbWqLWbbLJVDzrqnVr",
|
||||
"pqmmcSTLfSSSMFlf",
|
||||
"rHWtPWnHtlrlDntzWwtBFdzCFMRCfjRQFfgMRMjC",
|
||||
"PWWHDVZPDDJVlWHncGGbqqTVvVmpGTmm",
|
||||
"wLBtWhGWJBdMmZMs",
|
||||
"jgvNCFvvGppGnmNJ",
|
||||
"DDRQTgcvjTPFqGHhRVhLRSVL",
|
||||
"tPPwLpBpDpgLSPvgQCvsLPjdjNZrJZsdZjsrsnZNjbZc",
|
||||
"lMWzWMBhmMhRGfVRffHmMjJcJjrNNZnjJcWjNqJnZJ",
|
||||
"mFMzhTmBGfHTwgPgtptFpPgP",
|
||||
"qCcqJQHslgtsQsCZmPWNSRNZTPBBCN",
|
||||
"nnLpjjnvwwvDnrGwFvbFjwPgPWRTPrrPShNhmmNSRRPN",
|
||||
"bnwdDLjnzGgvFqdJQcqVfQVqHt",
|
||||
"DfCzDCCTDLDBCsdjzwdrHjbRgjGH",
|
||||
"MSStMScccJtPptJNJZtJJSrFdwPGjFFHHwsggrwdwRdP",
|
||||
"nStlpVlhhNSshZlcNZnMcctpBChWBQLqCWqmqvmBCBmQBqmL",
|
||||
"RfLHNvfLfLZQBtRZsBfffjVqGvqpGSmJpgrJpjGjrp",
|
||||
"FDbPCMzbTTDDPmzrVzqppJBrBj",
|
||||
"DPcWPWDhlbCcWBsQZZfHtdwf",
|
||||
"fbHfPfHHfPZWgZfSGpqNBqdBBjpjdPBJqv",
|
||||
"rnVNCwwrhhDrmmvcmjdDqcmB",
|
||||
"hFRrslFRNhFzVthllRCRCCwnQtSGfQgZZbbSWQLSSTZWbQTt",
|
||||
"nmVqTFCmTVbnvVCnqwFrffjhZLffhNrNJF",
|
||||
"StBHWDgMBpHMBHDzLjffjWwZJNNfNZjL",
|
||||
"wBBcDcgzdVbbQcnQlq",
|
||||
"MfGCtqGDhjDqHhrjGCcJZZBwHRcspZsBsHRc",
|
||||
"PFFpLFSpzVdSTPgnzzdPPZBRcZBwBJRcWJBmJW",
|
||||
"vdTTzVpNVpfCChMGqMvr",
|
||||
"VtZzBzhtlrhznFlBfgrfZgFrPjGRMGjRTmSjRjRTHjfRHmRv",
|
||||
"DQpnsbJCsNNnpNNJsDQdCDcRmHPGTHTHRSmRmHjvjHSpSS",
|
||||
"cQbnQdNLdJJQJJJDJWnFwzgwBthrgZBwBgFLZV",
|
||||
"VhRRgmhpFjFFBDVPGPWQPzvvMMWfjf",
|
||||
"qcnbnCbfLqJrCnrcdbbLrGSlzWsQvsWWzvWGdMWGQl",
|
||||
"bnfbwrcwCrHqnHcZhFBTBVRDFmpBHB",
|
||||
"lrtqltJJJqSTWJqVHRnsRhphdbfbzBdhsRsd",
|
||||
"vSZCgZMMLSNvCQLPLDPNgZgnznzBfsGGnQnQGdnsfhsfzb",
|
||||
"CMFLgmPgFFNMFDDCgLLcrWrjTTjtmSJqlWTTwWSr",
|
||||
"LdjljBdZMFdZFLLLgPvWzQRzCsCmCVssmFSW",
|
||||
"TJttwDhnnTlWsQzSQQDvWm",
|
||||
"HtcnfctJwtwrHhrwhfHhJpjNLMZBMgZLrBlbbLNPNj",
|
||||
"qqhNchPdpqTTNqpDmmvvGzVfzfmvdH",
|
||||
"cwccjsFwFjnwGwQDfVVVVv",
|
||||
"FbWjcRsLLFngBrjpbJqCJZTbJZNClq",
|
||||
"lhznMTSzSnjhQGtVPQBdGB",
|
||||
"msfNDDJLWslJgfNgCrmLdtGQFVvdGQPZVttBFP",
|
||||
"RCrJJJDrJRsfgmbsrNsrlDMTSMHcjqwzScjMqqTjbbSc",
|
||||
"nNgsvNWDRvgnRNVCFddTNZTNZQCTFZ",
|
||||
"lffHJfHSPmSfvLlbLmpZrCTFTtrTQHqtTrCCrq",
|
||||
"cpzblplpbvMzWnsDDB",
|
||||
"CgtvQvJvMtWttvwftCdWvDQrfsFcrqnlcnqZZFRcRqsnhF",
|
||||
"HzLzVBNLjHqnhzFlWFlr",
|
||||
"NmBjLbVVbmbTLpTjBNVLHNdCtTSWQvCgdwSwJtWQwdSD",
|
||||
"lncHcnlccVSLNSQNslncLcrZJCrgPfJZDrggJCCvZPHC",
|
||||
"jRqqRmmqFwRFppfPPppPBfpWBvZf",
|
||||
"wmMqjtTdjFwGGdtNhQbVfhntcNLVbL",
|
||||
"HFBgMjpbpddMpbHdgHLLRNwhwFLDtNSRDLLD",
|
||||
"zsCnfqZflrlnhhrtwNgggNNL",
|
||||
"CGqnQzlqlWWMWgVBGg",
|
||||
"pQnvzjztpzpCmtzzjzpnBHrJNGlqggMMqgqlNWgfNNqNCP",
|
||||
"sVTSwddRRDVShwRwRTWgPNqMGQMGNqMWslsg",
|
||||
"hDSTQhcQcHrtcBmZHv",
|
||||
"QRmQfvQpWpswfZWWvNbhlMglgFbZDldlbL",
|
||||
"rzHqtcnqqVjqjGcHdLdFdCFdCbLDnMCh",
|
||||
"DGcGGSPDpWTsSfpv",
|
||||
"llfMHTmvHlfZlFZRzgQzsFBLtLzFGF",
|
||||
"wrWNJrdJhRmhGmNh",
|
||||
"DWrrJjwPjCdPDwdmwnrTZnZZcqZfnqbvZfHvql",
|
||||
"mPmVJJmNZJmlVBPPrZpWcFWbGWbjgqNbdqjSjg",
|
||||
"nMhzwRhwvhMDMgWHRdGHgccggd",
|
||||
"sMvnhQshMwwvdvMMCwBtlZtplZpTmPBVZVlC",
|
||||
"ltlRzpncRglplzhFwFwzZZMWLWZBqnDVZLDVZQQQ",
|
||||
"SJcdvJscNSsGcSGCSJmsTQDTVZQTLTQQWCTTMQCW",
|
||||
"sPdJmcvsJvGJmdJmfpwftfrlztrRlPfP",
|
||||
"LdPrWcMCWCfPdMJgdFsbRRHsRSHRHHcFpH",
|
||||
"hVVTQmQTnRFLFsmzps",
|
||||
"qthVVwZqlQLQhNttDDDWrffDJJJDrgNP",
|
||||
"BTjTNjtlPrBjjrljbnMFfhVWFFhlMWMfHdll",
|
||||
"mzcgZvDggDDCJCZLvsLJLcmVqWVSVqFLfdHHMWVWWWffnF",
|
||||
"cmmcmzQDZQJmZCnDRgQCTTwjpTtwRjrbNjpPpwrj",
|
||||
"rMbchQphhCSbGnzSbl",
|
||||
"qFtgvTTqFFFFJGzWJG",
|
||||
"NZjGqGBNjNHQrhpPNHQr",
|
||||
"LnLmbtTtTwtLcVfFFLtPrfPrfqqqsqhSvrhrhh",
|
||||
"BzJWzZRZJzJvlZJCZgZZpJHCqQDhNQPDqDDrjNsjPPNrhSCN",
|
||||
"lpJWZzJpgHWdWMgHlJMZzgpJLGVLGGvwVwtmcGbvGMGVvncn",
|
||||
"WdBgdqRgWqHmNNwsGgcQ",
|
||||
"ptPVbPbSbMJrmsVzRzhwmcGQ",
|
||||
"SSbvrJbJtCDZfTqdRfCdBZ",
|
||||
"WDNNWvPpvNJRRbGLsGMnnbmG",
|
||||
"qgFdBwgVdjwdtjjdBgMgGmLQsnZrnZssGswsmLrw",
|
||||
"FqTCTtqjdjVqgCqSMJMTvPThTJMNDh",
|
||||
"brSSSpZjVVWdfVrHPhRBggNNGwHr",
|
||||
"fDlLzFCLMvnMMJLNHNCBQwNhRgwRPP",
|
||||
"MJqMmfzDvFtLDtmsVsZZTsSScWcsbq",
|
||||
"CSZlllhSdnDrrDdJjqjzbSGzGvwbfHMb",
|
||||
"gTNvVNLQtsFpQHqfwfBfVMfHzf",
|
||||
"QgNmWTtmTcmmdmrZRvnlPl",
|
||||
"SmzfvfjvjbjLNJjD",
|
||||
"cFhWMhGHTPhccMQQGBTFGwbVVwdbddJDvVJLvDDHvd",
|
||||
"GFMBGcWTWhcGrhFZTTchQsSfgtmnnRvnmnnRgRCrRS",
|
||||
"ZTQHVZsZSQpQQGBMGqfBRbRB",
|
||||
"CwtLDtNFcPnllwnqvMgbvGVfVfBG",
|
||||
"VClLWWFPPhlhctsTrrSpWpmszjZj",
|
||||
"HChzPltNnnHtnpqSpHpFpSfSvS",
|
||||
"mJmQssZJLdTQLcbjlGLGfSgMbqwwSFSMSFMMqMwS",
|
||||
"JdBLlGTjLjjjjdmmBPnRzCBRNPhPtPWPtr",
|
||||
"FPLHMHqqPMgFLLggsMghTJhwtDSSJDltJvtwdvST",
|
||||
"WQfmjQZsjfZNQCrZCNZQQWQBCSClvdwTSClwSwlTJvtwJdbT",
|
||||
"BpmzrWcpBrfmpsGPGFqPRgzqVPLM",
|
||||
"bHjccpHwGHJTfPlffPwr",
|
||||
"VtChMZVhhStZdfTCfJvcPRCTJn",
|
||||
"sLNLZcdNZZqZqqVqSNWtjQDGHssHGHgQHDBgmsDg",
|
||||
"CdWgCpddwgClFlmmVTBbRtRtbntBVVds",
|
||||
"vcJGhPLPhJvChLhMLfccrvfvsVVbsGBTTBnVbRzBVstsGnbz",
|
||||
"vJJHhjcCLPPjQPHLrSZmpgmqwlWZZgZZQm",
|
||||
"VpTFCFtrjCdJdjHVFnSjszSllDjsDzgvzl",
|
||||
"fhmhZBMtfZfGBNfNcmsbZnzSlRsRggslsbnv",
|
||||
"qPLPhMcLhPfNWPpFrdFdFTtJ",
|
||||
"nlgQJhJFlncMzMWZMFvw",
|
||||
"mDdsDfHjHsjHdjTLfpDsbDcNzzwcRbZNZPMcCPWMRPMc",
|
||||
"sqqdwffHjTmdmpffmLddTTGDnSJtJBShVVhrGVJtShrlBBnJ",
|
||||
"CrcMcMDBCmLlZdSd",
|
||||
"qPjGjnQPqWjgZmTdlFwTmqLJ",
|
||||
"bnPnnzHjbPznzVpdpVDcvprr",
|
||||
"TCScMQcQCrssJPQhQs",
|
||||
"VpfnqqfdVVwpqvqwGbDPPsjgPShDSsJhlnSl",
|
||||
"qffdmGpfwfbfvVqpfwwfbdqRMTSTWNMWTmZLTzTCZTMLWC",
|
||||
"QQPpPbPbDNplSJrCCj",
|
||||
"VdMzffgnRmVdfVWRvlrCTjRlNBvrrlrr",
|
||||
"mGgNdthhGgMWWtsFcHcHwqLqtH",
|
||||
"HrPFVqVppVpDjFDrVbCpDFJSLsmwjhjGLLmthJLJLmZs",
|
||||
"WWgRdMdRMnQnRzWvPSssPWssJmhsshtG",
|
||||
"MnfvMlnQccvfMlcTRMQdRfpHPDDDpPrDTbTBNbHbHDCq",
|
||||
"GWWRsSwLhWsRsSbsPttThZqrNBJJBgPNCJCCqNMNgP",
|
||||
"HpVDTHzfFDpFfzHzFVcrBZCggMJBvNrNgcNNrM",
|
||||
"jlVpVpVVQDHdFVlmmmQTlzpjjGstWLsSbsnnnStWLRhnht",
|
||||
"prLMDDjNCLZbdFLGngdLBv",
|
||||
"VQHmhWSSzhWHmPJRJhSmVHJPFvgTbtnTbBtGqbQnbdqgTFqG",
|
||||
"RzwzzhwhwNCvvfpc",
|
||||
"wQgmZnhmWVtwQmnnnQbQhzwsFcRPrFPvRJhPlPPBBBFvJv",
|
||||
"DdjqMMGLLMMGqTGdMqdMLdBBJsJPJBJJrrBFcqRlPlqr",
|
||||
"DsddsfMsWgfzftZb",
|
||||
"lcqlFSFwBBPlNwPlvSlQfWsVLTQjzjWVfLsWVq",
|
||||
"HMMbMHMtJHgFzzFrVVtfFQ",
|
||||
"RMFpCDDFcCNBcZvP",
|
||||
"gwDrClhppDDPwPhnmPlwDrlDjMFfMTjMTjJmRHHJBJRMJHGj",
|
||||
"LbbZBSvSLVRHffHJHJGZ",
|
||||
"WztdtLsSvNQStbbtzdStthWhnwnPBDclgwwnrwllCC",
|
||||
"MnMMBppMBDWMhpnCDBgCBmRbstvPvvbGltSPVGlVPWVv",
|
||||
"TrrddJHjNcTqrrqdFcqZwSvLSlGGPbtFRbLvFVSRPG",
|
||||
"JTccqTcwNQcTJrZwNJcJqHwJBQDfhCBCpCQpmpDfMRfCfBpn",
|
||||
"njVcjHfGjVjpTCpMWprW",
|
||||
"tsSsQDvSqQshDhtmWpnQnmMmbrpdzM",
|
||||
"FNhsDDLNLnNllBqfRJGBVHBPHRRBZZ",
|
||||
"hFVdlFSFlfZdRhgWgdWnnnfGpMNfnLMQzQQjMD",
|
||||
"RsrJRHsvBcvHBHjDMMpDQDjjzDHj",
|
||||
"BcCmBqvrbbqJgmFZtWdRVSVV",
|
||||
"FzzdDJrJCFSFRqLlwsgspsBCpL",
|
||||
"HQdWhMZMVwqLMllw",
|
||||
"bbQtcvZcmHtNPZcWthWRvrdrRzrSDfRSrzjJjR",
|
||||
"bTFZzHjZNJHzLggsJgbdsWcdcShWCwsSSdvGvv",
|
||||
"VDBmntntfCBGGGGhRc",
|
||||
"fMnnPDfmDlmnMPmtmttnVlHzZzNLbFbLbhzJJjMgJFbb",
|
||||
"GzgJGPRrMSgTgpgH",
|
||||
"hcvWhBdhcfPFvmFQvwfbHMsMMbpDpTDSSHsHpd",
|
||||
"LmcvFFlcWQlFlfPnRZPVCJzJClCz",
|
||||
"DdCHCHrmHRgghTHH",
|
||||
"pFVZFwfssMsgghML",
|
||||
"tSnphvhtctSSQNDqNdmrWGvq",
|
||||
"rqmtRmGmcWrRRQprRRnfbGMMlPGGPblwMbTP",
|
||||
"BHHhVZSvDNdhvBVhshbzfPbTmDfnwPwzPgbl",
|
||||
"ddvBsSSdsLdshLsLpmWqcWrCCrtFpQ",
|
||||
"wZPCwdPCHrnLQCGZDcPRqllzqqBzjlqc",
|
||||
"gMmgnJspsvTmWNVWNpTNWNcDcqVjqDcclhSzllRSDzqR",
|
||||
"JnWsgMnngmttFWWMdrwCZwHfZfdfGdFd",
|
||||
"wwgNgrsWvbfBrqqsWbjDCDDDCDCmFbSmLDLlSC",
|
||||
"QdpdzQTVdzRMTVVzcHTQLnlFmZHPSChCmlDPPHnP",
|
||||
"dRMLVttzzVtTVQVqrrrgBtsvWWwtNw",
|
||||
"vtBvntlqMvfnTfPDPhdRNbhdTFzF",
|
||||
"QLWcmrrcgmCgCcsgcQWlWWrrDjjzzjsdFDdRhPNDhhhzDzPF",
|
||||
"GGWHcCQcCCSlmmBVMGVBfMqwJtqv",
|
||||
"cfqfhDRwhqZgRgRzRvcfhBSrsBnrDBBJWrnrWrSmmr",
|
||||
"VCTVjGCTCjFddQntmrsVsJvrtrrW",
|
||||
"PFQGpFbvPRMNqgRq",
|
||||
"MmDgZZGMjZGfZRFztzCtCjzSrF",
|
||||
"cBNpPJpBdNntcBHBccJlsSVVzzSwlCRrCnzsFw",
|
||||
"PPBJLPPBBLPHBNQgqfMQtmTftGGvhq",
|
||||
"bbZnbnVVgVSnbgZtntZrltsprpMCJvpqdJmsCMMmvvCq",
|
||||
"BjDcjLLDzNjLDcjDzhcDNLLLHdpmpHJsqsMMNfCHfJpspqvp",
|
||||
"dFLTFBcBzjFLgTbQtRgTVTlZ",
|
||||
"nqNnrBRjLnjLZCqGGlqSGWlWDS",
|
||||
"mTJTTcTJJfJfhhhwMbQDPWCQFCRlbDCSDDPl",
|
||||
"dhMcRgJmgRrBrrrNgrLZ",
|
||||
"GvJvJSGZFrGmmbmCrWnhjncLctcWttVqjLBB",
|
||||
"wDlTzwlHTncRTqnRBt",
|
||||
"gspglgzDzdPDfpgfdDzsgMPGvZJBrrbZGJNFmCFvmFvFvM",
|
||||
"RLjMZZzfvNLBdjQfBfQdhRfSTVlcVqGbGcLGlbmqLVccmm",
|
||||
"FggHCwsggrWWtCHJDDHtWrTNNlqSnlTlnGVTmWGcbcbm",
|
||||
"PtpttrwsJssPsdRQvphZNzdMBh",
|
||||
"NqqpZBHqTBpPNpPpGwwMPGTJjjLjQljGmtLfftllbJQfGf",
|
||||
"nHczcrSFnVWSlrltrgJmjLLQ",
|
||||
"SvzcDDVVFzdzhndCFSvnhcDspRDRDMPpMHRNPPZqppwM",
|
||||
"FRSbVCSFFCDMFjRMjSSVFSWggMmWtWngJWttWmmJctnt",
|
||||
"BPwcQQcQqQmWHfgrfwrh",
|
||||
"PPlBQdNQvdLzzvclczdNRSbpLSbRbDjFZFFZVsFs",
|
||||
"wtrrVhBbpcZSSjBfSfmm",
|
||||
"MDWTvTMGMRCDCTQWsvfrRjjFfHlFmjlmLlHl",
|
||||
"gQrTQvQDssdNWGsTstcbptwVPqcbpNqttP",
|
||||
"jtGSwGQczrzjtGzrcsJwMRqMVMwRVMWFvVTWFV",
|
||||
"DhLgnDLndDHmLvWqpTHqHHVNqF",
|
||||
"LhdmPhfgZnZDlPCPmDfljQtGsJtBsWjGJzJSWBjC",
|
||||
"zHDjcjBjTfjjfGpf",
|
||||
"NNFTnNwPNNdqnJdFnqqTgmgftfftrWCZGbmrpWttmW",
|
||||
"FLJqVNVNhnwnTRsRQBlQzShs",
|
||||
"HJGJGJzzHHQHfJHsnNsGMbccMrTgbr",
|
||||
"vddSCCjdmVvDDmvmBVbbBchcrrcscMTTnscn",
|
||||
"VjWdFCVVMWWmjdSVFSVpqwwZttfJJltJZqltppLw",
|
||||
"SnmPBPBnMLnPBsSgSDqRNRRccDfNcNQQRg",
|
||||
"lZVWtWVzCjvZzCCGzDwbwRwtqJwJNTtDfD",
|
||||
"zCzHZFFFfdLnBfFf",
|
||||
"NRBFpNNJgNbWbJLRpRbWNtNpZllCZdjjZfjPVljTVCZQltlV",
|
||||
"sDqHmsHcDrwHhMDlfCQfVBjDPCTd",
|
||||
"MnGGcqwhhsrchcmGpzRJSSGGJWJzbJBR",
|
||||
"LBzjQQzcjWvHWLnVDdnHRffHDCVR",
|
||||
"rmJSrPJJsbNZssGSPrFpddfGwDRRpVjVpCGdCp",
|
||||
"mPsrmsNTrPNLTjQlWQhqLc",
|
||||
"MSDFszbhbRRTRdwhtw",
|
||||
"PWmCZCmZVvGqMcjmJRpdTTtdLpqwdlll",
|
||||
"MWGmmCVHvMSBDSNbbHHS",
|
||||
"mBwSBSfSPHZCLPZSWwfPppTndVpdVncFgcgPpP",
|
||||
"rhQJjzQjrltJzGqCrGJTvgqRpnTgFgcFTVFqFR",
|
||||
"QbhGMJrhzrhQGQCsjwMDNWBDSZBZwSBLmM",
|
||||
"bQfDPgDQbQNGPgflWfvMZcRMMFmcvMfZ",
|
||||
"BLqSssjnzpBwszqwzFCNMvzWvRvzCCZFvc",
|
||||
"BpNpjnNHnSpssqLqrBLLHjdhTPPDgbggllldhTPdrrQh",
|
||||
"CvCMqNWVVqqPvNvvChhhdSnFHwBdWwhfdS",
|
||||
"gqTZGGjlmclrZjlmSndSDwfFhhDBHm",
|
||||
"tRrZpgrcctbbltRpgtqCVJCvPsRvsvPCQPCLPz",
|
||||
"dTjRdWDBRzvjfzTfvTJPtJttsSLqHsSQJw",
|
||||
"hrJNmbnFNZrbhlCsqltqcQcQSQqwPL",
|
||||
"pVNhFgZphZmjzvjGDJWzVJ",
|
||||
"gWzQhCWbQnCCFgCJnFQnWCzwjrHjjHGTwHGrhLwjjjtStL",
|
||||
"splcpqDNDqqcZqRlspwHbjVrjjHTrwSbtVNV",
|
||||
"BpMslDqDmRDRsBRBJPPnbzCfvQgmCWJb",
|
||||
"tRtgRQWCwlTglHZHTglCtTdbbfvhWpbSBbhWzzbfGpfhbb",
|
||||
"cqZVMJmLqmNrsJMDbzGrGSvzGBhvvG",
|
||||
"mmnJPMZcclFRdnQtCQ",
|
||||
"QVQVqfFzVVQQrQwZsCTrBtTrccTtctcJRRjT",
|
||||
"vNNPnvGbBtWBLvBf",
|
||||
"mMHbfDfHdHGmnhDDqZFDzVSQzF",
|
||||
"NNlTNFCRTrfllTZsPWSsFPfzJdVQVpDQVszQVtpbzJMVbJ",
|
||||
"LNHjNHjmLLjNqvGgvVQJQDVLbDVDpdQQzQ",
|
||||
"nqmqGHjwgHvgwGHjGgccNTSWrrlCZrFfPSFFCP",
|
||||
"qWzCQqhPCHjHmqJhqvqmjRgSFMTFggMFTFVRVVTgTm",
|
||||
"SptGsDlnGfnDLgTMTwgRFFFs",
|
||||
"bBcntZdpGZZcctlGtDfnDnBCSWqJvQhqjqzjhJqJQCQWPd",
|
||||
"SjZJrSSDShddqLvPqzzdwq",
|
||||
"nTssfRpQQmQCHlPBBgGmwVGzwm",
|
||||
"TWQsbCRQFHFWQRTpzRHRsRrMtDrjhjbtMbccrttJjJht",
|
||||
"cCChVMwPPMHCPCCPrvJnntdTJSvTtdrSRt",
|
||||
"FGfFDBhGGlfGGfWJWdbSRSnRNbTvdn",
|
||||
"fGpGlDmBhflgfDFmmfFpcVzMzqZZzcCPQVZzqP",
|
||||
"SmgtSjGPjppBjbqqWTCZDQTHHHTg",
|
||||
"VsFfCzLvsMfzNfNRhVMslzlHqrWrQDQcqDqTrLWHcrWJJW",
|
||||
"dsRdsNCvNMVpwPdnnGbbPb",
|
||||
}
|
||||
total := 0
|
||||
|
||||
// for str, idx in input {
|
||||
// sm := sum_rucksack(str)
|
||||
// fmt.printf("Line %d: %d\n", idx, sm)
|
||||
// total += sm
|
||||
// }
|
||||
|
||||
idx := 0
|
||||
step := 3
|
||||
for idx < len(input) {
|
||||
upper_bound := idx + step
|
||||
offset := min(len(input), upper_bound)
|
||||
prio := find_common_item(input[idx:offset])
|
||||
total += prio
|
||||
idx = upper_bound
|
||||
}
|
||||
fmt.printf("Total: %d\n", total)
|
||||
}
|
||||
9
odin/day03/scratch.py
Normal file
9
odin/day03/scratch.py
Normal file
@@ -0,0 +1,9 @@
|
||||
BOUND_a = ord('a')
|
||||
BOUND_z = ord('z')
|
||||
|
||||
BOUND_Z = ord('Z')
|
||||
BOUND_A = ord('A')
|
||||
|
||||
print(BOUND_z - ord('v'))
|
||||
print(25 - (BOUND_z - ord('v')))
|
||||
print((25 - (BOUND_z - ord('v'))) + 27)
|
||||
1070
odin/day04/day04.odin
Normal file
1070
odin/day04/day04.odin
Normal file
File diff suppressed because it is too large
Load Diff
1035
odin/day04/scratch.py
Normal file
1035
odin/day04/scratch.py
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user