diff --git a/day5/day4.go b/day5/day4.go deleted file mode 100644 index 62423e3..0000000 --- a/day5/day4.go +++ /dev/null @@ -1,19 +0,0 @@ -package day5 - -type Solver struct { -} - -func (s *Solver) ParseInput(input []string) { -} - -func (s *Solver) SolvePart1() any { - var total int - - return total -} - -func (s *Solver) SolvePart2() any { - var total int - - return total -} diff --git a/day5/day5.go b/day5/day5.go new file mode 100644 index 0000000..57b8069 --- /dev/null +++ b/day5/day5.go @@ -0,0 +1,112 @@ +package day5 + +import ( + "strconv" + "strings" +) + +type Solver struct { + instructions []Instruction + stacks []Stack +} + +type Instruction struct { + count, from, to int +} + +type Stack struct { + containers []string +} + +func (s *Stack) putAtBottom(container string) { + s.containers = append([]string{container}, s.containers...) +} + +func (s *Stack) putAtTop(container string) { + s.containers = append(s.containers, container) +} + +func (s *Stack) putNAtTop(containers []string) { + s.containers = append(s.containers, containers...) +} + +func (s *Stack) popFromTop() string { + c := s.containers[len(s.containers)-1] + s.containers = s.containers[:len(s.containers)-1] + return c +} + +func (s *Stack) popNFromTop(n int) []string { + // a b c d; n == 2; len() = 4; indexes = len() - n, : + c := s.containers[len(s.containers)-n:] + s.containers = s.containers[:len(s.containers)-n] + return c +} + +func (s *Stack) peekTop() string { + return s.containers[len(s.containers)-1] +} + +func (s *Solver) ParseInput(input []string) { + var containerList []string + var instructionsLineIndex int + + for i, line := range input { + if line == "" { + instructionsLineIndex = i + 1 + break + } + containerList = append(containerList, line) + } + + stackCountLine := []byte(containerList[len(containerList)-1]) + numStacks, _ := strconv.Atoi(string(stackCountLine[len(stackCountLine)-2])) + + s.stacks = make([]Stack, numStacks) + + for i := 0; i < len(containerList)-1; i++ { + for _s := 0; _s < numStacks; _s += 1 { + // 0 -> 1; 1 -> 5; 2 -> 9 + c := string([]byte(containerList[i])[4*_s+1]) + if c != " " { + s.stacks[_s].putAtBottom(c) + } + } + } + + for _, line := range input[instructionsLineIndex:] { + tokens := strings.Split(line, " ") + count, _ := strconv.Atoi(tokens[1]) + from, _ := strconv.Atoi(tokens[3]) + to, _ := strconv.Atoi(tokens[5]) + s.instructions = append(s.instructions, Instruction{count, from, to}) + } +} + +func (s *Solver) SolvePart1() any { + for _, instr := range s.instructions { + for c := 0; c < instr.count; c += 1 { + x := s.stacks[instr.from-1].popFromTop() + s.stacks[instr.to-1].putAtTop(x) + } + } + + var r string + for _, s := range s.stacks { + r += s.peekTop() + } + return r +} + +func (s *Solver) SolvePart2() any { + for _, instr := range s.instructions { + x := s.stacks[instr.from-1].popNFromTop(instr.count) + s.stacks[instr.to-1].putNAtTop(x) + } + + var r string + for _, s := range s.stacks { + r += s.peekTop() + } + return r +} diff --git a/day6/day7.go b/day6/day7.go new file mode 100644 index 0000000..518212f --- /dev/null +++ b/day6/day7.go @@ -0,0 +1,39 @@ +package day6 + +import "math/bits" + +type Solver struct { + inputLine []byte +} + +func (s *Solver) ParseInput(input []string) { + s.inputLine = []byte(input[0]) +} + +func (s *Solver) solve(numNeeded int) any { + for i := numNeeded - 1; i < len(s.inputLine); i++ { + var seenMap uint32 + + for j := i - numNeeded + 1; j <= i; j++ { + bitValue := uint32(1 << (s.inputLine[j] - 'a')) + if seenMap&bitValue > 0 { + break + } + seenMap |= bitValue + } + + if bits.OnesCount32(seenMap) == numNeeded { + return i + 1 + } + } + + return -1 +} + +func (s *Solver) SolvePart1() any { + return s.solve(4) +} + +func (s *Solver) SolvePart2() any { + return s.solve(14) +} diff --git a/day6/prod.in.txt b/day6/prod.in.txt new file mode 100644 index 0000000..1198884 --- /dev/null +++ b/day6/prod.in.txt @@ -0,0 +1 @@ +tzltzltthfthtdtstftbfbnffdjjvnvcccnznpndppsvvlnvlnvndntnllwffvwwcpwccssqbqnbbwzbwwfjjscspspfsfvvzjvvmjvjwjljbbbqtbbcqbccdqcdcpddnvnjvvqwwbrbggjllhbbzlblrrrcwwrfrmffgddfsddnqnqpnnmzzwlzwzqwqgqnngnfnvnhvvfnvvszzrbrqbqnbbrsbsvssgngwgqwqbqsbsvbbdvdfvdvbbqlqdlqdllnppwcclwlvwlwjlwwdjjjcschhhmrrnnrznzlnnwmnwnfngghngnpggmrrzrttdbdtddjhdhrrqddnhnjjntjtbtmtffwcfcnfcnfnjjfnjfjjhrhhgfgttgmttltfllfqfnqqcbbrlblrbrcrssrllhddmnddmcdddvttfdfqfmqqcncggczczdccvhcvcjvvgnnqttltcchzhjjwmmqvqtqnqbbhddcqdccnwccttgwwzssncncjjprjjpbprrndnrnrhnhrnhngnhhbjbccpmpmrppjvpjpqjjsvjjhttcclmmqzzlggtqqqgdqqbhhtmmqfmqmwmjwmjmmnsmsvsrrvpvhhtshhhmqmdqqqqlfffwgwhwjjrfjfmfrmffgzzjvzznqqwggcvcnvvcpvpjpjbpbrpbrrzhhcffqqlzzrmzrmzmzrrqdqrqnqrnrnqnrnsrrnjrrgllgqlljldjjmvvqbqhhsmsmddsfdddcmmphhtjhjzhjjjhcjjzppwhwvvdnvnvpnvnlnvnffrjjtzzdqzzngzgqghhmvvgwwqhwhlhvvfzzdpzddtbdtbtvtlvlqlllvvdvsdsslccbscsbbcggldlvvdccdscdsdzsddpggcfggnffpjpnpcncfcqqlvvszzbpbqbcqczcqzcqzqqlrlwwbgglrrbgbhhlbbsffrprtpppdwdhwhbbpssvbvnntbbfnfddmmfcfcjfftbfbdbccngcgjcjtjftjffrwwtwlwddczcnzczpzcpccrqcrczrzcrzzhnntgtqgtgztgzzcpphshwswfwqqnzngzzbpzzpqpzqznzdzmzqqjzzhnhvnnqjnnrdrcctdtppsffzvvwvbbpttsrsspsddfvvfllrtlljpjlplcctthbbgbqgbgmmpwpvvghvhfhwfwcwvwrvwrvvcgccdncddbmbmfmlffgqggrzgzhhzfzdfzfhhzdhzhjzjhhbffrtrjtthssbpspddpttrggdndsnnjwwzrwrvvmqvmvdvhvjvnnqmmhrhrzzzwttnftfddsdfsfjsjcccvhvgvgzvgzvzbvvhwhbbpccfjfllgmlggtbggdsgsmmmnznqnhqhrqhrrtthwhqqvzqvvvqgqffpvptvpvwvbvsscsnnhlnhhzrzjrjrllcffpqpbpsbbflblppqffbqqpttccdgcgdgfdfgdgjddjljpljppdspddflftllhchmcmwcwddrqqsdsswwmwwwjdjvdvwwcgcddmhhqtqvqmvvnffqppnvpphpnnshsmhmdhmdddlnlmnmsnnpttlfttnqnhqnqrnrddplplbpbdpdhppccbnbwwpwzwgwdgdnggcmmtnmnznmzmwmrmtrrjppjgjmggndgnnjzzrczzftztzgzvgvddgmdgmgpmmgjmmnrrmvmnvvhqqggsnnplnlnbbrcbbpphssnqsnspnncfchhvjjdjvjfjddbjbddhlllpdnrhtzhqpphzfbjclncdlrbtzhcwslpnstdvjslnzfrvfdlmpgpfhrqtjvqvjlqgdcjrbjtjrgvbfwjzsvrbmffnhvjqnshvdjbgwmpwlfjznngzpqbvlztnvgvjsnwvhpfwbhfsmjgwwjdrrwbtvpwtzvjfhwrmnrhdsvgpgdsfgndmffqfplsgjrsvztzlznqsrbldbmmhqmjtrzscrbwlpgztlrvllprnhzsvtnvwzmjwqhqpjqhntcrscwcdnwzpvbdczzcmzrmdwthdtszqzftcsfbwfqggpcntfrgwpmjpdzjnczwcjmdjnrqjfwqbznznmcdvzqlpqschnmcfqjjrjwfmqqftfdhdzffvshqbmrgrpvlgqcgsbsngttvcpjswdgrhbblrhjllfbzngqjzzbdwtnlnrbpftvwbmrhvcnntdrbvtrtpcsqdsrvpsgggfpwcbzhwhwmmmmmgjzgdtwnzjdwjfljghbjvjnsgshmdpztnbbrnwfvzhtzqpzttftdmcmqzlnrgncwwtpwqrgmpmwwchwhbbbblcndbsrrqtnztcmqhvdwfcswnswvhqdtqfdrhjgczqvrzqczmnpcgbwntjvlsfrzrrjtsvfzfmbwwsftwqvttpjvbggrlcspnfhwwmrhdbbhdcjvmrhppvcmtmfhszjlcjjsdqfvjttcmffwzfpmjmjzhcrqmhhwzhjlnwphvvhmrbllsvpjljthjndffrdbmdjncnmdtcwfwjdwnrdlvqsbzczlhwrtpnzfwzzwbrqpglgvrjsnsprvwszmlrjcdgzwchmcqrjdlzqfvqwwfszpptprhcfsdfcrnhvhgvcdwgnqzjtmgznltbjjqwzlljrqcmpdncshzvsmvjwlmvtwbtjcgmqfslvwcfqpljzdjmdvqjlztbsbshcwhlvzcmzljvrrhrbzwvthgtnszpcrrdwcmtdncdzlbdscfbhrlqttcfshqrsgvzhlcnvfhppdqvblsznmctftmnslwgbmbgshgwvmzpdnmqmjgqnvrwprmbzrdprrbcwnslczvzgnssjqqzdrlntrnsrgbjjcpqvnqwvnwgslchqzbphcqsbvgvwzlnsndfrhqjvtlnqpcsgswzfvhjmfgwgfvhjgzntdbztmjsbmtwlfmvvgvztvwwmqclcgctqbvljgfngcvfqlmmvqmbtrnnbhqjjndzqhvvdztjgvwgrtltfrlzrjcpgwvpqwmcwmqccjtjhhbrrqphlpljvhjzpdfcdsgzfpnzdzhfdqjsnrvmwstrmmwmlhbvrjbtnmvwcqnzqzzpwzjdnfhqwwlsvgnnjgffzcnrtbjfwllnrgppchqwnfpwpgnfbvwcbjrlscnwlswjmnrcrhtdhgpzvgtfcqzgqtwvlhrgbmjvvzhrlzfvmrdjjctvfwsgmjwbqslhmjlcvlwrdqfmbhcfrmrvqtslplwpsgrfmntmtvmvqttbspmftgqdzlcfplcvvfmmjttwqjpdtjzzsfjcprvbwdvfrpzddhwrlmsnpjzqgdlfdzvdjnjtgtfflzzvjlmnnvmglrptsnppwscznltcvzfjmwshnsqsvsjpqwsqlbwzslhgrdcbbvcjspqfntbcpwwrphgpmwbpqdcfvvtlsgpfshtcrdftsltwnbnmzfwcwlmrhlntmmnnpsdchvntcwbnmjdgwcmzzvbrhbdbmlgwppzwsqvcccdbfzfsfhtmbppnwbtjvrvjtmddhmrjdqgnmrnjjpqsgtbgcvtclzzstlpldtqbnnvqjfbjcfzblvcwhjphzcgwfljjhzzmwdcrzsssznztcwpjlbcffnlmsfjbmtvhhcljmtqdprdmdgwgpnnlmhgwpsgprfqnspmntrdjwjmrflsbfpqhzswbsrdbdhjmvtwmjjnmpllgfllzgwwmswjcmggbrvsbbhjmsdzzpbhbrlphwdsmjdzsqjfrmdmpljnwscjrhdvzqbhhvpmhwqfrrhzlncrrrzhmjdwqjcbsqjbhbdbjzpslrnnbzctnnlhqmqqbdzfbrpfgwsrdglnplpspnnqhtbhzhzgtchcbqcmmcmvlllczqbtmbstzmnlhhhbmmbtjwnbgwjbfhgvfhqlsgdnnrsgghjzjlqfwbbgztdqzbhhwhcwtjwsgstjpzcjjvqbpfpvlqfqshvfzbwmfcwfgqvgmbppfvzgzznzhsqbvzlztsnmnrbgqzbmbhlvqhfncdfcpttgzpvvzdbhvqdtqsblqvrsrnmsfbqhrpvlzffdzptzghvmbmdzjrsqzhqddqm diff --git a/day6/test.in.txt b/day6/test.in.txt new file mode 100644 index 0000000..7980a82 --- /dev/null +++ b/day6/test.in.txt @@ -0,0 +1 @@ +mjqjpqmgbljsphdztnvjfqwrcgsmlb diff --git a/day7/day7.go b/day7/day7.go new file mode 100644 index 0000000..3c0ab7f --- /dev/null +++ b/day7/day7.go @@ -0,0 +1,124 @@ +package day7 + +import ( + "fmt" + "path/filepath" + "strconv" + "strings" +) + +type Solver struct { + dirCache map[string]*Dir +} + +type Sizable interface { + Size() int + fmt.Stringer +} + +type Dir struct { + name string + contents []Sizable +} + +func (d *Dir) Size() int { + total := 0 + for _, c := range d.contents { + total += c.Size() + } + return total +} + +func (d *Dir) String() string { + return fmt.Sprintf("%s (dir, size=%d) (%s)", d.name, d.Size(), d.contents) +} + +type File struct { + name string + size int +} + +func (f *File) Size() int { + return f.size +} + +func (f *File) String() string { + return fmt.Sprintf("%s (file, size=%d)", f.name, f.Size()) +} + +func (s *Solver) ParseInput(input []string) { + s.dirCache = make(map[string]*Dir) + + location := "" + var currentDir *Dir + + for _, line := range input { + tokens := strings.Split(line, " ") + if tokens[0] == "$" { + switch tokens[1] { + case "cd": + location = filepath.Clean(filepath.Join(location, tokens[2])) + case "ls": + if _, ok := s.dirCache[location]; !ok { + s.dirCache[location] = &Dir{name: filepath.Base(location)} + } + currentDir, _ = s.dirCache[location] + } + } else { + if tokens[0] == "dir" { + name := tokens[1] + dir := &Dir{name: name} + s.dirCache[filepath.Join(location, name)] = dir + currentDir.contents = append(currentDir.contents, dir) + } else { + size, _ := strconv.Atoi(tokens[0]) + currentDir.contents = append(currentDir.contents, &File{tokens[1], size}) + } + } + } +} + +func (s *Solver) SolvePart1() any { + const cutoffSize = 100000 + + rootDir := s.dirCache["/"] + + dirsAtSize := getDirectoriesAtSize(rootDir, 0, cutoffSize) + var total int + for _, d := range dirsAtSize { + total += d.Size() + } + + return total +} + +func getDirectoriesAtSize(dir *Dir, minSize, maxSize int) []*Dir { + dirs := make([]*Dir, 0) + if (minSize == 0 || dir.Size() >= minSize) && (maxSize == 0 || dir.Size() <= maxSize) { + dirs = append(dirs, dir) + } + for _, c := range dir.contents { + if d, ok := c.(*Dir); ok { + dirs = append(dirs, getDirectoriesAtSize(d, minSize, maxSize)...) + } + } + return dirs +} + +func (s *Solver) SolvePart2() any { + const totalSpace = 70000000 + const neededFreeSpace = 30000000 + + rootDir := s.dirCache["/"] + additionalSpaceToFree := neededFreeSpace - (totalSpace - rootDir.Size()) + + dirsAtSize := getDirectoriesAtSize(rootDir, additionalSpaceToFree, 0) + minSize := totalSpace + for _, d := range dirsAtSize { + if d.Size() < minSize { + minSize = d.Size() + } + } + + return minSize +} diff --git a/day7/prod.in.txt b/day7/prod.in.txt new file mode 100644 index 0000000..fe89e6b --- /dev/null +++ b/day7/prod.in.txt @@ -0,0 +1,1089 @@ +$ cd / +$ ls +dir fnsvfbzt +dir hqdssf +dir jwphbz +dir lncqsmj +dir mhqs +dir trwqgzsb +132067 vjw +dir wbsph +$ cd fnsvfbzt +$ ls +62158 sfwnts.hbj +$ cd .. +$ cd hqdssf +$ ls +45626 cvcbmcm +dir dlsmjsbz +dir hqdssf +dir mhqs +dir mtw +dir sfccfsrd +dir shzgg +$ cd dlsmjsbz +$ ls +9205 qcqbgd.lzd +$ cd .. +$ cd hqdssf +$ ls +105963 mhqs.zrn +87909 slwshm.nwr +$ cd .. +$ cd mhqs +$ ls +dir ctfl +45923 jvvl.rcs +dir jzjm +dir lncqsmj +dir mhqs +dir wfbvtfmr +$ cd ctfl +$ ls +dir shzgg +$ cd shzgg +$ ls +18097 cvcbmcm +289064 mhqs +208557 slwshm.nwr +283449 vjw +dir wfbvtfmr +$ cd wfbvtfmr +$ ls +263560 dssbpgnl.szh +dir hnqjmq +76551 jvvl.rcs +195911 lncqsmj +185776 slwshm.nwr +$ cd hnqjmq +$ ls +3307 rjd.lgh +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd jzjm +$ ls +31719 rjjrg.pjq +$ cd .. +$ cd lncqsmj +$ ls +dir mhqs +$ cd mhqs +$ ls +138296 wfbvtfmr +$ cd .. +$ cd .. +$ cd mhqs +$ ls +175499 jvvl.rcs +dir rqznrr +108476 slwshm.nwr +199853 vjw +$ cd rqznrr +$ ls +105075 shslmlt.spg +$ cd .. +$ cd .. +$ cd wfbvtfmr +$ ls +131522 rjjrg.pjq +$ cd .. +$ cd .. +$ cd mtw +$ ls +dir dcgpfrsf +dir gwqm +188911 hqdssf +34693 jvvl.rcs +dir shzgg +$ cd dcgpfrsf +$ ls +47863 dfwthflp.jwq +203815 dqbqbps.prq +dir mhqs +183653 rqjqpm.bbr +220694 vjw +$ cd mhqs +$ ls +74450 tjpn +$ cd .. +$ cd .. +$ cd gwqm +$ ls +dir trghjhvs +$ cd trghjhvs +$ ls +dir shzgg +2620 slwshm.nwr +$ cd shzgg +$ ls +73435 shzgg.bbf +$ cd .. +$ cd .. +$ cd .. +$ cd shzgg +$ ls +184378 rjjrg.pjq +$ cd .. +$ cd .. +$ cd sfccfsrd +$ ls +87317 ccvs.phq +dir cqmgf +dir cssmfv +dir hhhqdmz +17971 mhqs +dir mvjttqr +264394 slwshm.nwr +dir stdzptb +dir tcddd +dir zmrt +dir zqqtb +$ cd cqmgf +$ ls +202804 tcrqqlgs +$ cd .. +$ cd cssmfv +$ ls +13440 jnhzrtfd +$ cd .. +$ cd hhhqdmz +$ ls +dir fdbpld +272827 jftd.lml +dir prqbhbv +dir wbzvmz +$ cd fdbpld +$ ls +dir bgrnz +dir dcdj +78284 jqqfc.tzz +147731 lbdsh.plp +269235 ntf.gmq +$ cd bgrnz +$ ls +dir qzs +dir rcv +dir wmrmhdd +$ cd qzs +$ ls +156779 lncqsmj.gnf +$ cd .. +$ cd rcv +$ ls +224927 dvbw.svf +dir hqdssf +dir jjmsqft +255189 mhqs.pcl +dir mvgqtlm +dir pjs +dir sljw +$ cd hqdssf +$ ls +63099 blpdwd +96035 jvvl.rcs +40533 lvpsmzw +205031 rjjrg.pjq +59874 shzgg.ldg +dir zdnfpwlw +$ cd zdnfpwlw +$ ls +109325 hqdssf.fmj +41775 jfqhq.tdn +203744 nprghch.zjb +dir qfs +dir rzctqrgm +dir shzgg +$ cd qfs +$ ls +234449 vjw +$ cd .. +$ cd rzctqrgm +$ ls +99041 cvcbmcm +$ cd .. +$ cd shzgg +$ ls +149752 mhqs.bds +126331 rjjrg.pjq +75464 vbcjqdjv +$ cd .. +$ cd .. +$ cd .. +$ cd jjmsqft +$ ls +47522 shzgg +$ cd .. +$ cd mvgqtlm +$ ls +dir tgtbj +dir tmrsn +dir vpv +$ cd tgtbj +$ ls +86585 lbmv.jcr +202755 rjjrg.pjq +$ cd .. +$ cd tmrsn +$ ls +150980 hqdssf.hmh +$ cd .. +$ cd vpv +$ ls +197783 jvvl.rcs +$ cd .. +$ cd .. +$ cd pjs +$ ls +216539 cvcbmcm +159509 jgfphj +195297 pdgnb.qjd +162974 rjjrg.pjq +$ cd .. +$ cd sljw +$ ls +61689 hqdssf.bbn +$ cd .. +$ cd .. +$ cd wmrmhdd +$ ls +92888 msgcqfbf +$ cd .. +$ cd .. +$ cd dcdj +$ ls +99280 mclcnw +$ cd .. +$ cd .. +$ cd prqbhbv +$ ls +102589 bqlcds.pqp +107625 mhqs +281871 mvwvdtd.dzf +$ cd .. +$ cd wbzvmz +$ ls +287371 tnwgfw +$ cd .. +$ cd .. +$ cd mvjttqr +$ ls +dir dtf +dir frcqdb +dir hqdssf +55645 slwshm.nwr +dir zdzchmtq +$ cd dtf +$ ls +121764 cvcbmcm +279094 lncqsmj +68484 slwshm.nwr +278387 vjw +$ cd .. +$ cd frcqdb +$ ls +233216 lncqsmj.mbd +217901 slwshm.nwr +$ cd .. +$ cd hqdssf +$ ls +dir dgdtm +260973 qnt +231311 thdrddd.zmj +160399 vjw +dir vpqjmmf +197241 vqvzsv.nzg +$ cd dgdtm +$ ls +dir cnshbf +173312 vjw +$ cd cnshbf +$ ls +72788 hqdssf.mhc +122945 rjjrg.pjq +$ cd .. +$ cd .. +$ cd vpqjmmf +$ ls +127969 hqdssf.stc +267724 lncqsmj +55890 mhqs.mql +dir tsbtz +$ cd tsbtz +$ ls +244065 qqfnbd.nqv +59649 qttbcgd.vtj +$ cd .. +$ cd .. +$ cd .. +$ cd zdzchmtq +$ ls +271886 lmphsmv +dir nncghrr +$ cd nncghrr +$ ls +180468 rjjrg.pjq +$ cd .. +$ cd .. +$ cd .. +$ cd stdzptb +$ ls +19398 frsztqqz.mnc +$ cd .. +$ cd tcddd +$ ls +dir hqdssf +71084 jvvl.rcs +dir wnzhld +$ cd hqdssf +$ ls +178907 gcslqrn +$ cd .. +$ cd wnzhld +$ ls +206073 hpdnj +$ cd .. +$ cd .. +$ cd zmrt +$ ls +dir bmfgjr +dir bpztq +dir chsh +dir dpjhn +288144 mhqs.zvb +$ cd bmfgjr +$ ls +189592 jhmgm +$ cd .. +$ cd bpztq +$ ls +184906 rjjrg.pjq +$ cd .. +$ cd chsh +$ ls +110753 jvvl.rcs +dir lncqsmj +dir njdgplj +dir qhpplfnd +190460 rjjrg.pjq +144668 wfbvtfmr.flv +$ cd lncqsmj +$ ls +dir pzd +$ cd pzd +$ ls +287833 vhfjdg.jrz +$ cd .. +$ cd .. +$ cd njdgplj +$ ls +dir cbvz +dir vfhj +$ cd cbvz +$ ls +dir rtpcsrf +$ cd rtpcsrf +$ ls +240018 wfbvtfmr +$ cd .. +$ cd .. +$ cd vfhj +$ ls +152840 cbbrgc.wnq +243656 hqdssf +36325 hqdssf.fhn +$ cd .. +$ cd .. +$ cd qhpplfnd +$ ls +206490 dfththnq.vnm +$ cd .. +$ cd .. +$ cd dpjhn +$ ls +127322 rjjrg.pjq +dir shzgg +$ cd shzgg +$ ls +165774 cvcbmcm +$ cd .. +$ cd .. +$ cd .. +$ cd zqqtb +$ ls +dir ljnmbqvd +60485 pcz.snl +274930 slwshm.nwr +131928 vqm +51341 wfbvtfmr.stc +$ cd ljnmbqvd +$ ls +268048 bdbjn +dir fjh +dir qpclpbz +dir rqpljw +dir tzjftf +255809 vjw +243604 wfbvtfmr.rzb +$ cd fjh +$ ls +180021 hqdssf.rqs +$ cd .. +$ cd qpclpbz +$ ls +109952 blmm.nsv +dir dltbt +dir htbzp +287761 mfbd +dir mhqs +dir vgbvrwvn +dir wmhd +$ cd dltbt +$ ls +205121 dfzlcv.hjf +56409 hpqhhmb.sss +233277 hqdssf.qcb +187838 mbmcfhf.fnj +dir rrqjn +dir swrgj +151306 tqjzq.dmg +$ cd rrqjn +$ ls +240447 lncqsmj +$ cd .. +$ cd swrgj +$ ls +dir lnnwdbt +dir sgjsn +dir wfbvtfmr +$ cd lnnwdbt +$ ls +213111 tnn.bhq +$ cd .. +$ cd sgjsn +$ ls +dir wpprqhs +$ cd wpprqhs +$ ls +dir hqdssf +$ cd hqdssf +$ ls +209286 qbdfzdzw.sgp +$ cd .. +$ cd .. +$ cd .. +$ cd wfbvtfmr +$ ls +199298 hqdssf.chs +123953 rjjrg.pjq +$ cd .. +$ cd .. +$ cd .. +$ cd htbzp +$ ls +dir bmfr +68162 bzwcswr.mlv +284074 dtzwf +270421 jpsvh.ncc +dir mwbvz +95631 shzgg.tbf +44434 vjw +$ cd bmfr +$ ls +19937 shzgg +$ cd .. +$ cd mwbvz +$ ls +156668 rjjrg.pjq +$ cd .. +$ cd .. +$ cd mhqs +$ ls +111821 ftrv.zcw +dir jsnlcn +dir mhqs +dir rjdwmb +dir sfmrwgd +$ cd jsnlcn +$ ls +7527 smqts.cnc +dir svdw +$ cd svdw +$ ls +173846 vjtrp +$ cd .. +$ cd .. +$ cd mhqs +$ ls +dir hswdjgg +30326 rjjrg.pjq +$ cd hswdjgg +$ ls +285037 jvvl.rcs +$ cd .. +$ cd .. +$ cd rjdwmb +$ ls +219498 twl.lmw +$ cd .. +$ cd sfmrwgd +$ ls +168290 ltwpm.fjl +$ cd .. +$ cd .. +$ cd vgbvrwvn +$ ls +dir bswv +dir hqdssf +dir mhqs +$ cd bswv +$ ls +121032 cncdt +dir jrbmlg +dir lncqsmj +dir mhmgn +65380 rjjrg.pjq +dir wfbvtfmr +$ cd jrbmlg +$ ls +37975 shzgg.bnq +$ cd .. +$ cd lncqsmj +$ ls +114558 jvvl.rcs +dir mhqs +dir nfn +dir nhlbfq +141816 phtt.phj +181530 vjw +224510 zmzp.jwg +$ cd mhqs +$ ls +dir wpnw +$ cd wpnw +$ ls +286077 lncqsmj.cld +$ cd .. +$ cd .. +$ cd nfn +$ ls +269740 cvcbmcm +87123 mhqs.nst +61029 mhqs.vhb +211712 slwshm.nwr +$ cd .. +$ cd nhlbfq +$ ls +247458 lncqsmj +$ cd .. +$ cd .. +$ cd mhmgn +$ ls +85806 vjw +$ cd .. +$ cd wfbvtfmr +$ ls +275888 cvvhvg.pwv +151703 gnbm +61419 grcfbwdp +150382 gzdmzj.wpc +dir mtrqcwrd +112827 nbtjlnt.srg +$ cd mtrqcwrd +$ ls +273564 shzgg.tbm +$ cd .. +$ cd .. +$ cd .. +$ cd hqdssf +$ ls +72227 ccvwdrs.dsf +141028 dctbz.spr +dir shzgg +277461 slwshm.nwr +94390 stgp.trm +24297 vgdzsrrl.dhg +$ cd shzgg +$ ls +143437 lncqsmj.vpl +78418 pbdwbmtd.nlp +28173 vlfj.tps +$ cd .. +$ cd .. +$ cd mhqs +$ ls +97312 jvvl.rcs +dir qqfbsz +42472 rjjrg.pjq +dir wfbvtfmr +$ cd qqfbsz +$ ls +dir lncqsmj +dir mhqs +$ cd lncqsmj +$ ls +186873 wfbvtfmr.lfh +$ cd .. +$ cd mhqs +$ ls +dir wfbvtfmr +$ cd wfbvtfmr +$ ls +234441 gsjwsn +$ cd .. +$ cd .. +$ cd .. +$ cd wfbvtfmr +$ ls +55214 dgf +dir fdtz +6756 jvvl.rcs +226995 rpsjvr.wpb +68993 vjw +$ cd fdtz +$ ls +dir rdzsjm +$ cd rdzsjm +$ ls +dir mjgfpvc +$ cd mjgfpvc +$ ls +dir vfcq +$ cd vfcq +$ ls +dir fmtfm +$ cd fmtfm +$ ls +200137 dvbqjq +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd wmhd +$ ls +dir hnn +dir rzt +$ cd hnn +$ ls +16335 wfbvtfmr.vhw +262909 zgtln.dwc +$ cd .. +$ cd rzt +$ ls +285086 mhqs.vsg +dir qnr +$ cd qnr +$ ls +290611 llnp.hsh +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd rqpljw +$ ls +267152 jbv +$ cd .. +$ cd tzjftf +$ ls +258707 cnfb.dgv +17087 hqdssf.dtd +92075 nwvtww +dir qblrnn +dir tdg +$ cd qblrnn +$ ls +dir brrqp +dir frqcc +25504 jvvl.rcs +dir lncqsmj +dir mhqs +107908 rjjrg.pjq +286918 rngbhp.ntg +dir shzgg +dir wcnh +dir wfbvtfmr +$ cd brrqp +$ ls +270783 wfbvtfmr +$ cd .. +$ cd frqcc +$ ls +dir clj +7502 lncqsmj +dir mnsbr +73859 scwltjwh.cqd +29920 vjw +dir wpplgrc +$ cd clj +$ ls +31407 grm.pwv +$ cd .. +$ cd mnsbr +$ ls +dir wfbvtfmr +99467 whsrtf.gff +$ cd wfbvtfmr +$ ls +81283 cvcbmcm +$ cd .. +$ cd .. +$ cd wpplgrc +$ ls +285496 lncqsmj.hwq +$ cd .. +$ cd .. +$ cd lncqsmj +$ ls +8972 jvvl.rcs +$ cd .. +$ cd mhqs +$ ls +119520 hqdssf.tbn +$ cd .. +$ cd shzgg +$ ls +180825 lncqsmj.rsg +23507 wfbvtfmr +$ cd .. +$ cd wcnh +$ ls +98662 tmwrh +220468 wml.sht +$ cd .. +$ cd wfbvtfmr +$ ls +283178 hqdssf.ctf +$ cd .. +$ cd .. +$ cd tdg +$ ls +283636 cvcbmcm +117742 gsqzjfn.pmp +176660 lncqsmj +dir pbdgbsts +dir znvv +$ cd pbdgbsts +$ ls +92092 vjw +$ cd .. +$ cd znvv +$ ls +41213 hqdssf.rnn +dir pcttrtd +$ cd pcttrtd +$ ls +16759 mhqs.gpb +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd shzgg +$ ls +19544 bcn.rws +dir fqwpwcq +dir hngpzst +dir hqdssf +dir shzgg +dir vgjr +dir wfbvtfmr +$ cd fqwpwcq +$ ls +269576 mhqs +dir pmfv +$ cd pmfv +$ ls +175725 jvvl.rcs +29161 pnbm.mlr +$ cd .. +$ cd .. +$ cd hngpzst +$ ls +18430 cvcbmcm +dir fgzlgbm +dir hqdssf +378 rjjrg.pjq +dir zjlnsztt +$ cd fgzlgbm +$ ls +134751 dwlfbfjp +dir hqdssf +227313 jvvl.rcs +dir lncqsmj +dir mhqs +dir qfjmtvpv +dir qzm +114934 shzgg.jdf +187091 zpgbdnl.twq +$ cd hqdssf +$ ls +87131 bdmdpdf.cqg +dir fdc +dir gwgp +$ cd fdc +$ ls +116738 cvcbmcm +$ cd .. +$ cd gwgp +$ ls +dir qdvss +dir rpwzw +dir wfbvtfmr +$ cd qdvss +$ ls +111546 wqnsrnh +$ cd .. +$ cd rpwzw +$ ls +183614 lfjqvff +129803 rdwd +$ cd .. +$ cd wfbvtfmr +$ ls +266779 mhqs +189793 slwshm.nwr +279894 sncqtvwp.mff +40520 vjw +$ cd .. +$ cd .. +$ cd .. +$ cd lncqsmj +$ ls +257714 dtcjv.lsd +69877 shzgg +267645 vjw +$ cd .. +$ cd mhqs +$ ls +257031 stsfrb.gvs +$ cd .. +$ cd qfjmtvpv +$ ls +dir mhqs +$ cd mhqs +$ ls +91378 wldhvhl +$ cd .. +$ cd .. +$ cd qzm +$ ls +dir shn +$ cd shn +$ ls +dir jmmlsvdg +$ cd jmmlsvdg +$ ls +41383 rnlgl.vjv +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd hqdssf +$ ls +dir mzj +$ cd mzj +$ ls +169639 sgdn +$ cd .. +$ cd .. +$ cd zjlnsztt +$ ls +78315 jfj.sgg +$ cd .. +$ cd .. +$ cd hqdssf +$ ls +906 rjjrg.pjq +$ cd .. +$ cd shzgg +$ ls +163015 mhqs.cnb +$ cd .. +$ cd vgjr +$ ls +129546 hclg.vbl +286437 hqdssf +dir lncqsmj +1552 nhgwff +279693 qmpdlw +83645 slwshm.nwr +$ cd lncqsmj +$ ls +233355 fhpjbpjl.tbh +$ cd .. +$ cd .. +$ cd wfbvtfmr +$ ls +218452 jvvl.rcs +47525 rjjrg.pjq +109880 tctz.rnd +$ cd .. +$ cd .. +$ cd .. +$ cd jwphbz +$ ls +dir bqbwds +dir mwnzw +113414 qgdsgfg.ngj +141013 qtp +10795 slwshm.nwr +$ cd bqbwds +$ ls +18049 shzgg +$ cd .. +$ cd mwnzw +$ ls +169353 dtqlr +dir hlrgzlph +dir mhqs +238527 vjw +$ cd hlrgzlph +$ ls +249097 hqdssf +86490 pwdmzwb +$ cd .. +$ cd mhqs +$ ls +176337 rjjrg.pjq +$ cd .. +$ cd .. +$ cd .. +$ cd lncqsmj +$ ls +dir jmsw +dir mcgm +dir mpc +233050 rjjrg.pjq +30757 shzgg +250575 slwshm.nwr +$ cd jmsw +$ ls +dir hqdssf +dir nmsbdqhm +dir wfbvtfmr +$ cd hqdssf +$ ls +44806 lvzm +$ cd .. +$ cd nmsbdqhm +$ ls +dir czzp +dir gcp +dir gsrnmq +dir rmngvc +dir vpfq +dir vpzvb +dir wccgblsq +43981 wfbvtfmr +$ cd czzp +$ ls +95330 slwshm.nwr +82000 wfbvtfmr +$ cd .. +$ cd gcp +$ ls +229303 ddsppspd.fcn +$ cd .. +$ cd gsrnmq +$ ls +dir hrsstlt +dir rzc +40890 sfpt +$ cd hrsstlt +$ ls +18477 mnpc.tmh +$ cd .. +$ cd rzc +$ ls +33078 dmfwf +149792 wfbvtfmr.jnz +dir zsnmz +$ cd zsnmz +$ ls +dir gzsnl +69834 lplszs.rvg +213489 slwshm.nwr +dir vrnqh +$ cd gzsnl +$ ls +109060 jvvl.rcs +122307 svtppnvt.wrz +$ cd .. +$ cd vrnqh +$ ls +94389 jvvl.rcs +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd rmngvc +$ ls +dir jljbrrgg +$ cd jljbrrgg +$ ls +128554 cvcbmcm +$ cd .. +$ cd .. +$ cd vpfq +$ ls +73628 rjjrg.pjq +$ cd .. +$ cd vpzvb +$ ls +265609 rjjrg.pjq +$ cd .. +$ cd wccgblsq +$ ls +110134 hffzwm.zfr +$ cd .. +$ cd .. +$ cd wfbvtfmr +$ ls +209356 jvvl.rcs +286105 mtsb.bwd +234687 vcgnlc.cft +$ cd .. +$ cd .. +$ cd mcgm +$ ls +203407 cvcbmcm +$ cd .. +$ cd mpc +$ ls +dir shzgg +$ cd shzgg +$ ls +dir bnb +$ cd bnb +$ ls +232449 lncqsmj.czs +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd mhqs +$ ls +116955 jvvl.rcs +$ cd .. +$ cd trwqgzsb +$ ls +88439 jgphdrnq +$ cd .. +$ cd wbsph +$ ls +dir mhqs +dir vgh +$ cd mhqs +$ ls +133965 rfh.zdb +$ cd .. +$ cd vgh +$ ls +36092 rjjrg.pjq diff --git a/day7/test.in.txt b/day7/test.in.txt new file mode 100644 index 0000000..bcbb513 --- /dev/null +++ b/day7/test.in.txt @@ -0,0 +1,23 @@ +$ cd / +$ ls +dir a +14848514 b.txt +8504156 c.dat +dir d +$ cd a +$ ls +dir e +29116 f +2557 g +62596 h.lst +$ cd e +$ ls +584 i +$ cd .. +$ cd .. +$ cd d +$ ls +4060174 j +8033020 d.log +5626152 d.ext +7214296 k \ No newline at end of file diff --git a/main.go b/main.go index 708a12e..acc16ee 100644 --- a/main.go +++ b/main.go @@ -11,6 +11,8 @@ import ( "snikolov.me/aoc2022/day3" "snikolov.me/aoc2022/day4" "snikolov.me/aoc2022/day5" + "snikolov.me/aoc2022/day6" + "snikolov.me/aoc2022/day7" "snikolov.me/aoc2022/utils" ) @@ -50,6 +52,8 @@ func solve(args Args, inputFileName string) { 3: &day3.Solver{}, 4: &day4.Solver{}, 5: &day5.Solver{}, + 6: &day6.Solver{}, + 7: &day7.Solver{}, } solver, ok := solvers[args.DayNumber] if !ok { @@ -75,5 +79,5 @@ func solve(args Args, inputFileName string) { return } - fmt.Printf("%s: %d\n", time.Now().Sub(startTime), solution) + fmt.Printf("%s: %v\n", time.Now().Sub(startTime), solution) }