Skip to content

Commit

Permalink
Completed: 5/2 6/1 6/2
Browse files Browse the repository at this point in the history
  • Loading branch information
davidfregoli committed Mar 29, 2023
1 parent 15d7dc7 commit a92500b
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 17 deletions.
46 changes: 29 additions & 17 deletions day5/solution.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package day5

import (
"fmt"
"regexp"
"strconv"

Expand All @@ -13,28 +12,41 @@ var Problem DayProblem = DayProblem{
Solve: func() (*Solution, *Solution) {
var lines []string = reader.ReadLines("day5/input.txt")
stacks, commands := parseLines(lines)
fmt.Printf("%c", stacks)
for _, cmd := range commands {
qty, from, to := cmd[0], cmd[1], cmd[2]
for i := 1; i <= qty; i++ {
last := len(stacks[from]) - 1
crate := stacks[from][last]
stacks[from] = stacks[from][0:last]
stacks[to] = append(stacks[to], crate)
}
}
fmt.Printf("%c", stacks)
var p1 string = partOne(stacks)
var p2 string = ""
return NewSolution(5, 1, p1), NewSolution(5, 1, p2)
var p1 string = partOne(stacks, commands)
stacks, commands = parseLines(lines)
var p2 string = partTwo(stacks, commands)
return NewSolution(5, 1, p1), NewSolution(5, 2, p2)
},
}

func partOne(stacks map[int][]byte) string {
func partOne(stacks map[int][]byte, commands [][]int) string {
for _, cmd := range commands {
qty, from, to := cmd[0], cmd[1], cmd[2]
for i := 1; i <= qty; i++ {
last := len(stacks[from]) - 1
crate := stacks[from][last]
stacks[from] = stacks[from][0:last]
stacks[to] = append(stacks[to], crate)
}
}
return getMessage(stacks)
}

func partTwo(stacks map[int][]byte, commands [][]int) string {
for _, cmd := range commands {
qty, from, to := cmd[0], cmd[1], cmd[2]
last := len(stacks[from]) - qty
crates := stacks[from][last:]
stacks[from] = stacks[from][0:last]
stacks[to] = append(stacks[to], crates...)
}
return getMessage(stacks)
}

func getMessage(stacks map[int][]byte) string {
var length int = len(stacks)
msg := make([]byte, length)
for k, stack := range stacks {
fmt.Println(k, stack)
last := len(stack) - 1
msg[k-1] = stack[last]
}
Expand Down
1 change: 1 addition & 0 deletions day6/input.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
srjsssgppnssqzszmzjmjdmmqwqcwqccslsjswjssgbsgsnggqtqnnjznndtndnhddfldfdsfswsjsjjptjpttlwlccpnpgngcncnscncsnnwrwmwggsgdgssvbsstzsstqqrjqqlsqlsqscschhclhccznzcnnzzqppjbpjjqzzbwbqqzdqdjjqtjtbtgtqgtgdgwwsjjbwjjzssrsvsttgqtgglgplgpllcrcncssbrbgrbrllsqlsltthshrrnddwzdzdbbrppdvdqvvpvdvdsslbbmnbnjjrdrnntzzftzftttrsshpspvvrzzqzwzhzszbzjjwqwvqqglgflfwfrfprpddfvdffhzztwtppwwwztzsznzmnnbvbbtqqdhqdqdfffnjnmnlmljmlmnlnddzbbdgdqdnqqtjjtnthttvwwtrwwwgffqcfchfcfwcczhhgjhghpgpwgwffhghzghhtftntnnmlnmlmddqbbfwbfwbwvvfssrggptpltpllbcbzczzlccjgcgvcczjzvvvdtvdvqdqwdqdvdjvddjfdjjqmmfgfsftfzfwzwzfftmfmmqdqccjqcqwwflwlccpssvzzzbnbjnbjjgtgpttbwbrbwrwvrrwccgrgrvvpjvvznvvhddtdldpldppmlplltdllhqhpqhqqbpptgpgjgqjgjffvfdvdttsrsllhzlzrrdrnrjrddqbbjrrvrsstgsttjqjhjbhhnmndmmnrmnnrggmtgmmhshjjfqjjtqtstpstppggtzzrsrwwqffvzvzvqqggqsqtstszttpvtvvvddcncvncvchhnsnpsnnlmnnmqnqjjfwfccmwmbwbswbswwghhzrrptptbbjbtjjgdjgjrgrwgwlglblbnlnbbwnnpbnbmbtmtvvhjjlwlhhszslldwlwdllhjhghqghhqpplhhtjhhnhqhlhjhmmlhlmmrpptvvcczfcccwgcccpgpspdpccfhchffbjbzzwppfbbstbtltpllcssnnctnnqcqhhclhccvlvlffnjjwbwfbfttwvvdvnnnsrstrtmtfthtzzcvzvhzzpmpfpmmmwggdbdqdbbjnbbdqbbrnnnprrwbbcwbbpjjprjjzzvwwvrrthhqvhvnhhzmzszrszsjssclcjjbhjbhjbhjbjhhzbbzttnrnssrbrjbrjjmsmffdlflfzfbzzmtztdthdhldhlddnccgbbmtbbsbzsbzzcsszpzfffprfpfzfrzzhvhffsmmqtjwgjbzhnmrslrmgfjpqcllcgsjdhrshqtlgmqqtfmswfzwtnrswtzdjzclcfmltqgdhcsgvzrdltgfbtqclpppvbqnbqmlhmdbsjbwbdllzpnrwfhmnlgvdwsdjsznnhqzhwntjvcpzdrfwmwwdrttdvzspmbmqggmlmsvwgcjgpvcmplqwfjgpghnfpbctnfhcgngcbdmzhlpcnjpmczzsgfgrdftrzgvmmpdmgcrpcdrjsgczpfjnwpdjpntdngdjwctvcbsjmfwvtsrlhvpswppmfwrwzsbsgbjvljzqjjldmnqnmwsmqnmhmqhhttppbpqlvdcvdbhmbnjzztjrdjdzlvmbdrghtftwdpcwwblsjbgnzwtpztmtmnrpsvzfzncqmrvhcbqcvqvnlngdcllrqlbhjttnmjmhfhdzmjmplcfdqpmwblzsnmpczwcnggcwdvgnjcrrtmpwwqdqpvtbzpdbfnbfcfllntqjlslcsznjvzvsbntrtzwhcbtdmbmwttvhdvdtvrcmprcrrjlgsqddrsmwsrbtbpjrmlbrnsdrjfhjnqjtgjmhzjbjnprvmhtjcdbztwqmrlfflfmcslshtwmwhgvbdslgjhzjlglhllsdphlzngjfwfrlwpnqfhghnqhzhgrszbcwjvlrtmshntszsqplvfbccjwctgtfmqgqjdlgdbwhgvctqtcgfdwvqdwqzddmsbrpftzpqztgzbnplvhftmgpdthnrdhqbltbrmhpcqsfccmqzwmrbnbgbjspslwpjhdqspssqdtnssmjmvzwwfstgzzjrmfczdlznwqpdhbsjqddvffcgfhfdqdrlwcsgcsszdtpqbbsthpwbhdfzmgmcdggfcwcmzfjnfbzbccjhvwhbwfslnqnrwhgrwtlnmrmncnjtbjbdlmqsczppgbcmsdrwlrpjbgrmnhqqfhhsdhmdmpvvpjrnzsvzctmqhpzcvcjfgtlfvqvnvlnprmgrsvrrvtjfndqfsvqdsfbcwlbglmfhfhcfgqdfmclnzhdtppgzzsqgjqncqrbdhlhdjqwjpmbdnfmgdgwbwmnlngnmrhcgqwzvmbjzdvsspjwwdtpnvpftdlqlzfgtscfczsvbrtrqqpgqlvmrtddqplbzsswbgpdzpqfvqpqbndblghmdhmnctdnjbgglmrlvmrmsfgntfdwvqcvvlvbcnwrctvjqhmnsjqccwltbfqpqpmwsfvmnnfqmlmlcchqcdtbvqwcpptvfwrwtbdrlsgnwpmjgnwlprzqjlwqmtmjglbrzlgfbsghwqdmwhrcmfwdmzmflsbngtgndftdpzsqvgqdsfdhplmfcmwpbtvcdmpghmfwqjvhdhfpmbrqpvnbhlftgdtprlztrgnlcldfpjqjqdfrvqtcnzrtjcgzgsslzghlnfhwwjwzdsmpsczclrfmnqjvfmvsqpntsnnnlrfswqtrppzhqgjzlzvrrbhhfhchhvgztpgctcsgssvttszsrdwzwrbmwmspgqhmmfnzqqdbmnbltdmrsvqgddltwczbbjcmplncspgqgmzrndhttsrbvqbpbvhshfqrpqgmmdbhmmtccjcmntmpqhrvhnfnlqqbctsnfzjbphhqwmztgbhqqlbctbsfcszbggzrlcdhwddtjgtqhppzgjsqcddwjsngjrcdflmgwgfnzhjtcwgbqvpwmpgcpdwvqgswwfzcnjgmdpffmqczmsqgpthpmsjlwnrcbzrfshvwftzllwrmfccmlpjnmpjdfpcvjgjpznllmqjwpcflgqgdljtbbjvjlvhhmtvzfnjfnnwrvtlfdbhqphrjghtmlsrplqscsnvjvqdslsbsfzzrjfmchplzgjgdqvzhfphvsjfvnqlgmjfzhrdlmmvfntnzdvrnwqshsmtjnqmwzgpbbzszrsqcvlzjwnmgjhmfqrbvgmfqpswctmvpfcghvdqgstglmzvpfhzfzvhqqdmvrvrttlpwwhqgddzqlrvvdffqtznvlfgjhhmvbmtzjqnnhqzrtbzpqcwpngrdcndcgzwhzgtfwbmwbrpvvczczhwcqwsqzqbqvqftcswtcbzdbpccjhtwbpnwlwwwqwscptlwshrdbmmdcgrmpnnwgjwzszwwdwctfspbfqvdjqtrflshrqlbfgpnrmbszwjpcdzbggphgplcgvwljprzmtncsvfwqchttndhpnzmtdvtjqtcsddtqvcmztmjgwqvjhflrjjtnvfpjrnlvzvwvrpbhrzslmrqqzqhnzqnvtqppmncddphbwwsjczmphsrlltzndtqjgdlqgpnlfcvwntstmrgcrjzmmllpwldnwmwzpvzctmhszspcvtgnqthszzsmtdnzwtfddfctpjhscbqgwfpqmzpvqrzvtbrdjzrqprdgbpmzzfbgqcvcdtsfrffcpqwtvdwvtcqlcsdrzntgrhrspznndslmnvptlphpdqgbblfhmgbpmmfwqzlhvzshhpzgfjldqclngbcbrmmnqqvqmwdnjsglsggqfgjldqfbsqgtrwmpdffqlcwwlfhlpqfgwtssnjwzhgvtwqzmhmgwzwmcggmpmrzqrcsmflqsrbnzvdmjcdbnscstqrqhvddsbjpzwsvzswqhcqmgzlvfcnzjrrffzphmrvdbhqbrwpsfqvfqwhqhcgfvfsfttzcdsrjgjwcgvhllszmplmvgczqsbfldnbvrnqccbprjjdwhmqpdjjrnfdlhzdvlfmrldjlqclbjrrtjfsflphzdcdpfpr
59 changes: 59 additions & 0 deletions day6/solution.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package day6

import (
"fmt"

"github.com/davidfregoli/advent-of-code-2022/reader"
. "github.com/davidfregoli/advent-of-code-2022/setup"
)

var Problem DayProblem = DayProblem{
Solve: func() (*Solution, *Solution) {
var input = reader.ReadLine("day6/input.txt")
var b1 buffer = buffer{size: 4}
var b2 buffer = buffer{size: 14}
var p1 string = findIndex(input, b1)
var p2 string = findIndex(input, b2)
return NewSolution(6, 1, p1), NewSolution(6, 2, p2)
},
}

type buffer struct {
count int
data string
size int
}

func findIndex(input string, b buffer) string {
var index int
for _, char := range input {
b.push(char)
if b.valid() {
index = b.count
break
}
}
return fmt.Sprint(index)
}

func (b *buffer) push(char rune) {
b.count++
b.data = b.data + string(char)
if len(b.data) > b.size {
b.data = b.data[1:]
}
}

func (b *buffer) valid() bool {
if len(b.data) < b.size {
return false
}
set := map[rune]bool{}
for _, char := range b.data {
if set[char] {
return false
}
set[char] = true
}
return true
}
2 changes: 2 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/davidfregoli/advent-of-code-2022/day3"
"github.com/davidfregoli/advent-of-code-2022/day4"
"github.com/davidfregoli/advent-of-code-2022/day5"
"github.com/davidfregoli/advent-of-code-2022/day6"
. "github.com/davidfregoli/advent-of-code-2022/setup"
)

Expand All @@ -16,6 +17,7 @@ func main() {
aoc.Solve(day3.Problem)
aoc.Solve(day4.Problem)
aoc.Solve(day5.Problem)
aoc.Solve(day6.Problem)
aoc.Run()
aoc.Print()
}
Expand Down
8 changes: 8 additions & 0 deletions reader/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,11 @@ func ReadLines(path string) []string {
readFile.Close()
return lines
}

func ReadLine(path string) string {
lines := ReadLines(path)
if len(lines) != 1 {
panic("not a single line file")
}
return lines[0]
}

0 comments on commit a92500b

Please sign in to comment.