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)
|
return result + int(friendly)
|
||||||
}
|
}
|
||||||
|
|
||||||
determine_score_alt :: proc(friendly: Move, outcome: Move) -> int {
|
/// Scoring for Part 2 of the puzzle
|
||||||
// X = lose round
|
determine_score_alt :: proc(outcome: Move, enemy: Move) -> int {
|
||||||
// Y = draw round
|
// Redefine the outcomes so that
|
||||||
// Z = win round
|
// draw = 0, win = 1, lose = 2
|
||||||
// 3 defeats 2, 2 defeats 1, 1 defeats 3
|
outcome_ : int;
|
||||||
// If w := enemy input and v := friendly input, then w = (v - 1) % 2 is a defeat
|
switch outcome {
|
||||||
return 0
|
// 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 () {
|
main :: proc () {
|
||||||
@@ -56,7 +74,7 @@ main :: proc () {
|
|||||||
fh, errno := os.open(os.args[1])
|
fh, errno := os.open(os.args[1])
|
||||||
if errno != os.ERROR_NONE {
|
if errno != os.ERROR_NONE {
|
||||||
fmt.printf("Cannot open %s: %s\n", os.args[1], os.get_last_error_string())
|
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)
|
defer os.close(fh)
|
||||||
|
|
||||||
@@ -64,6 +82,7 @@ main :: proc () {
|
|||||||
defer delete(buffer);
|
defer delete(buffer);
|
||||||
|
|
||||||
num_read, error := os.read(fh, buffer)
|
num_read, error := os.read(fh, buffer)
|
||||||
|
score : int = 0;
|
||||||
total_score : int = 0;
|
total_score : int = 0;
|
||||||
friendly : Move
|
friendly : Move
|
||||||
enemy : Move
|
enemy : Move
|
||||||
@@ -73,8 +92,9 @@ main :: proc () {
|
|||||||
chr = buffer[0]
|
chr = buffer[0]
|
||||||
switch chr {
|
switch chr {
|
||||||
case '\n':
|
case '\n':
|
||||||
fmt.printf("Score for this line: %d\n", determine_score(friendly, enemy))
|
score = determine_score_alt(friendly, enemy)
|
||||||
total_score += determine_score(friendly, enemy)
|
fmt.printf("Score for this line: %d\n", score)
|
||||||
|
total_score += score
|
||||||
case 'A':
|
case 'A':
|
||||||
enemy = .ROCK
|
enemy = .ROCK
|
||||||
case 'B':
|
case 'B':
|
||||||
@@ -92,7 +112,7 @@ main :: proc () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if chr != '\n' {
|
if chr != '\n' {
|
||||||
total_score += determine_score(friendly, enemy)
|
total_score += determine_score_alt(friendly, enemy)
|
||||||
}
|
}
|
||||||
/// Handle potential errors
|
/// Handle potential errors
|
||||||
if error != os.ERROR_NONE {
|
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