WIP
This commit is contained in:
parent
fccc444b53
commit
a330f6baa2
|
|
@ -1,4 +1,4 @@
|
||||||
package day1_calorie_counting
|
package day1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sort"
|
"sort"
|
||||||
|
|
@ -27,7 +27,7 @@ func (s *Solver) ParseInput(input []string) {
|
||||||
s.elves = elves
|
s.elves = elves
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Solver) SolvePart1() int {
|
func (s *Solver) SolvePart1() any {
|
||||||
mostCalories := 0
|
mostCalories := 0
|
||||||
for _, calories := range s.elves {
|
for _, calories := range s.elves {
|
||||||
sum := 0
|
sum := 0
|
||||||
|
|
@ -41,7 +41,7 @@ func (s *Solver) SolvePart1() int {
|
||||||
return mostCalories
|
return mostCalories
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Solver) SolvePart2() int {
|
func (s *Solver) SolvePart2() any {
|
||||||
caloriesPerElf := make([]int, len(s.elves))
|
caloriesPerElf := make([]int, len(s.elves))
|
||||||
for i, calories := range s.elves {
|
for i, calories := range s.elves {
|
||||||
sum := 0
|
sum := 0
|
||||||
|
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
package day1_calorie_counting
|
|
||||||
|
|
||||||
import (
|
|
||||||
"snikolov.me/aoc2022/testutils"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestCorrectSolutions(t *testing.T) {
|
|
||||||
solver := &Solver{}
|
|
||||||
testutils.TestHelper(t, solver, 1, true, 24000, 45000)
|
|
||||||
testutils.TestHelper(t, solver, 1, false, 66306, 195292)
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,128 @@
|
||||||
|
package day2
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Solver struct {
|
||||||
|
rounds []*Round
|
||||||
|
}
|
||||||
|
|
||||||
|
type ActionType int
|
||||||
|
|
||||||
|
const (
|
||||||
|
Rock ActionType = iota
|
||||||
|
Paper
|
||||||
|
Scissors
|
||||||
|
)
|
||||||
|
|
||||||
|
func (a ActionType) Score() int {
|
||||||
|
m := map[ActionType]int{Rock: 1, Paper: 2, Scissors: 3}
|
||||||
|
return m[a]
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewAction(s string) ActionType {
|
||||||
|
switch s {
|
||||||
|
case "A", "X":
|
||||||
|
return Rock
|
||||||
|
case "B", "Y":
|
||||||
|
return Paper
|
||||||
|
case "C", "Z":
|
||||||
|
return Scissors
|
||||||
|
}
|
||||||
|
panic(fmt.Sprintf("Unhandled action type: %s", s))
|
||||||
|
}
|
||||||
|
|
||||||
|
type Result int
|
||||||
|
|
||||||
|
const (
|
||||||
|
Win Result = iota
|
||||||
|
Loss
|
||||||
|
Draw
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewDesiredResult(s string) Result {
|
||||||
|
return map[string]Result{"X": Loss, "Y": Draw, "Z": Win}[s]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Result) Score() int {
|
||||||
|
return map[Result]int{Win: 6, Draw: 3, Loss: 0}[r]
|
||||||
|
}
|
||||||
|
|
||||||
|
type Round struct {
|
||||||
|
OpponentAction, OwnAction ActionType
|
||||||
|
DesiredResult Result
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Round) Score() int {
|
||||||
|
var result Result
|
||||||
|
switch {
|
||||||
|
case r.OwnAction == r.OpponentAction:
|
||||||
|
result = Draw
|
||||||
|
case r.OwnAction == Rock && r.OpponentAction == Scissors:
|
||||||
|
result = Win
|
||||||
|
case r.OwnAction == Paper && r.OpponentAction == Rock:
|
||||||
|
result = Win
|
||||||
|
case r.OwnAction == Scissors && r.OpponentAction == Paper:
|
||||||
|
result = Win
|
||||||
|
case r.OwnAction == Rock && r.OpponentAction == Paper:
|
||||||
|
result = Loss
|
||||||
|
case r.OwnAction == Paper && r.OpponentAction == Scissors:
|
||||||
|
result = Loss
|
||||||
|
case r.OwnAction == Scissors && r.OpponentAction == Rock:
|
||||||
|
result = Loss
|
||||||
|
}
|
||||||
|
return result.Score() + r.OwnAction.Score()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) ParseInput(input []string) {
|
||||||
|
s.rounds = make([]*Round, len(input))
|
||||||
|
|
||||||
|
for i, line := range input {
|
||||||
|
split := strings.Split(line, " ")
|
||||||
|
s.rounds[i] = &Round{
|
||||||
|
OpponentAction: NewAction(split[0]),
|
||||||
|
OwnAction: NewAction(split[1]),
|
||||||
|
DesiredResult: NewDesiredResult(split[1]),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) SolvePart1() any {
|
||||||
|
return s.score()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) SolvePart2() any {
|
||||||
|
for _, r := range s.rounds {
|
||||||
|
switch {
|
||||||
|
case r.DesiredResult == Draw:
|
||||||
|
r.OwnAction = r.OpponentAction
|
||||||
|
|
||||||
|
case r.OpponentAction == Rock && r.DesiredResult == Win:
|
||||||
|
r.OwnAction = Paper
|
||||||
|
case r.OpponentAction == Rock && r.DesiredResult == Loss:
|
||||||
|
r.OwnAction = Scissors
|
||||||
|
|
||||||
|
case r.OpponentAction == Paper && r.DesiredResult == Win:
|
||||||
|
r.OwnAction = Scissors
|
||||||
|
case r.OpponentAction == Paper && r.DesiredResult == Loss:
|
||||||
|
r.OwnAction = Rock
|
||||||
|
|
||||||
|
case r.OpponentAction == Scissors && r.DesiredResult == Win:
|
||||||
|
r.OwnAction = Rock
|
||||||
|
case r.OpponentAction == Scissors && r.DesiredResult == Loss:
|
||||||
|
r.OwnAction = Paper
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.score()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) score() int {
|
||||||
|
score := 0
|
||||||
|
for _, s := range s.rounds {
|
||||||
|
score += s.Score()
|
||||||
|
}
|
||||||
|
return score
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,3 @@
|
||||||
|
A Y
|
||||||
|
B X
|
||||||
|
C Z
|
||||||
|
|
@ -0,0 +1,90 @@
|
||||||
|
package day3
|
||||||
|
|
||||||
|
type Solver struct {
|
||||||
|
rucksacks []Rucksack
|
||||||
|
|
||||||
|
groups []ElfSet
|
||||||
|
}
|
||||||
|
|
||||||
|
type Rucksack struct {
|
||||||
|
compartment1, compartment2 []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type ElfSet struct {
|
||||||
|
elfItems [3]map[byte]bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) ParseInput(input []string) {
|
||||||
|
s.rucksacks = make([]Rucksack, len(input))
|
||||||
|
|
||||||
|
for i, line := range input {
|
||||||
|
s.rucksacks[i] = Rucksack{
|
||||||
|
compartment1: []byte(line[:len(line)/2]),
|
||||||
|
compartment2: []byte(line[len(line)/2:]),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// fmt.Printf("%v\n", s.rucksacks)
|
||||||
|
|
||||||
|
var elfSet ElfSet
|
||||||
|
for i, line := range input {
|
||||||
|
elfIndex := i % len(elfSet.elfItems)
|
||||||
|
if elfIndex == 0 {
|
||||||
|
elfSet = ElfSet{}
|
||||||
|
}
|
||||||
|
if elfSet.elfItems[elfIndex] == nil {
|
||||||
|
elfSet.elfItems[elfIndex] = make(map[byte]bool, 0)
|
||||||
|
}
|
||||||
|
for _, b := range []byte(line) {
|
||||||
|
elfSet.elfItems[elfIndex][b] = true
|
||||||
|
}
|
||||||
|
if i%3 == 2 {
|
||||||
|
s.groups = append(s.groups, elfSet)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// fmt.Printf("%+v\n", s.groups)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) SolvePart1() any {
|
||||||
|
var total int
|
||||||
|
|
||||||
|
for _, r := range s.rucksacks {
|
||||||
|
m := make(map[byte]bool, 0)
|
||||||
|
|
||||||
|
for _, b := range r.compartment1 {
|
||||||
|
m[b] = true
|
||||||
|
}
|
||||||
|
for _, b := range r.compartment2 {
|
||||||
|
if _, ok := m[b]; ok {
|
||||||
|
total += getValue(b)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return total
|
||||||
|
}
|
||||||
|
func getValue(b byte) int {
|
||||||
|
if b >= 'a' && b <= 'z' {
|
||||||
|
return int(b - 'a' + 1)
|
||||||
|
} else {
|
||||||
|
return int(b - 'A' + 27)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) SolvePart2() any {
|
||||||
|
var total int
|
||||||
|
for _, g := range s.groups {
|
||||||
|
for item := range g.elfItems[0] {
|
||||||
|
if _, ok := g.elfItems[1][item]; !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if _, ok := g.elfItems[2][item]; !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
total += getValue(item)
|
||||||
|
// fmt.Println(string(item))
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return total
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,300 @@
|
||||||
|
rZTmmqbBrmBvSTCwDDtlwjqnqnnq
|
||||||
|
dhgQHhPfVgPlPdFzFzFgdptCQjtnwCntjsCppRtRND
|
||||||
|
lVdVHWGPvTvmrrBW
|
||||||
|
GmJBqwPLhfPBfJfvfffFmwtjDprpzVpVMpcDrVjzzcjpML
|
||||||
|
HgWnRnWggWbNTWbCnPCgCnsjcVDrjMrdzjprMMrzcHDrDr
|
||||||
|
SsSsRsCSPSPBvtJt
|
||||||
|
BLtwwTBmLSTlMsjdZmFZZP
|
||||||
|
hzbzNNrbqQbhQDDrhCprbhDCpvFJJPjMZJZgjjPdlvZjZvvl
|
||||||
|
fbNrqrVDfdfGzqcHTBTVHwcTSHcH
|
||||||
|
lcDdcrCDCRHJHBllPR
|
||||||
|
tNGQwQhtzLhJBRHbPMBMjGBj
|
||||||
|
NZZZpVqqFqpQpCTZcTnrTrnJJC
|
||||||
|
BSNLNzbLLsMGSDLSsSBdVwTVQFdTVTtqgTwNVN
|
||||||
|
lRjplvmWpgrqwlVFFr
|
||||||
|
mfRCpWwvChZCBGSzZG
|
||||||
|
mDSlGBGwhGhmLHCQnMMVMLMVFJ
|
||||||
|
WTNfjNgzNdgNWfsgsWWcWgfrVrnnFHQbrHvFrVVdHMrnCr
|
||||||
|
FpcggcNttFfqSqDtwBDmhZ
|
||||||
|
HzNsHbGsddQHPrsNPNsTnNjMbjVbcVlMLjMjLtlttjjv
|
||||||
|
CQfBZDQfWJlJlLJhvMMv
|
||||||
|
WwwmWRfFwmCmwwzQzzzrdGNHFzNT
|
||||||
|
JDvhJfdZZTdCTnmmTH
|
||||||
|
qbPcsqbjcbstjbgnvqpRCBTCmgCm
|
||||||
|
WPbPtbtVjWQsPvSVzSZLMDMVfLZJ
|
||||||
|
NjMbTZPjHjbdBqNBqFqDFz
|
||||||
|
LCcLSRLStRrLHShCtRfcpCtpQVqqDFDFqDdFpBddDQQFdB
|
||||||
|
htCGtrSJLfScvwJvggbgwHgW
|
||||||
|
hmPTmfFPwBFHhsBstJldltstVDSVrrpD
|
||||||
|
CjzNGQjnRMMvMngMLGRVRBltVrVppqptVSqlVJ
|
||||||
|
cLBjgjGGGCgvLLnhZThwcfTHPTcPmw
|
||||||
|
SzwsVwcGsTVTmzmgjsLsmWWnGJZbbJbZtZqnDJntGq
|
||||||
|
NHQvpvNRflHvQpPMlbtbZqbFDnWlqVrD
|
||||||
|
dpPQVdpHMPRBpfCszCmsLsmcjdSg
|
||||||
|
wZZGGrnGVvZGPTcTnGvVCVpmpJSgCJtNpWgWVgmC
|
||||||
|
MdMRqqzMLDtQDQmzJg
|
||||||
|
HBMdRLLBLBdbbBLHlRjLrHPPnTvGtTcwhGrhZtvh
|
||||||
|
fcbcPWmvPvftWbDNVJJDrrhsJs
|
||||||
|
wQvzqvpQQzHQwTTNVhrBGJTJ
|
||||||
|
ZCMvzHMRCqggmWmndPngnn
|
||||||
|
VjvVJvjdgjJNTVgdpjRttsTHSsbFqqRHSbBR
|
||||||
|
nrfZLZCZnLnCCncZCrCQLSsFHHqtsSsSSBcHGtHsFh
|
||||||
|
nQlLMrmwZtmwCMmMwZmtLLggvNvVjjNJglpDgzNdJJvN
|
||||||
|
bCjQbTzCBlCvpqPTbZphtWWRhtddmDRRdRhPhh
|
||||||
|
sLJsnJFcsnJcMMjNnfsjDDcDWcRgggtmwVRtVmhh
|
||||||
|
sMsJLFfGrfFnrSNJjHzlTCCCQzpbBpzQzSBQ
|
||||||
|
gWRzWwcrzWcgZHRzHmcpTLTgTLhQDSgFFLTpLD
|
||||||
|
bBJfvJCssGJNjvPmbbmbLTQFTLQp
|
||||||
|
jsCqBJsVsGBqCfNcWMmrRWlWqmwMcz
|
||||||
|
cLjncLlQbllRhlnQTRblwtndsgpWdqgmnWNWmGpvWzdgzz
|
||||||
|
DrFJBFFHZrrDDVJSNmpsWdzVpmzdqqzpzq
|
||||||
|
FJPPHfDJPDPCZSZHFSDPCJtwRjClttNbwwjQLjcRhLlb
|
||||||
|
tZZRtWCRtsspLRqSVqbPDfVvlfFDqV
|
||||||
|
dgvMcccHHDHNrrbf
|
||||||
|
wGwdgBBhhcBhCvTZvtCppp
|
||||||
|
LRRNFfffFzzcrGRffNfcGNzJnrnhjdDMHHnrWdlmhddHnjrh
|
||||||
|
BvStvwSqqCZVqtvpZBWMMhhFhWdmdMWMhm
|
||||||
|
TTvqSbwqTPpZPzQsQRffsFGQ
|
||||||
|
phZZpGbGVmqDbPTF
|
||||||
|
tlNwlncnzwddcrGPlFmjlTTlfmjD
|
||||||
|
zntnczBMdvBnnvnthHHZMJhCLpZSSRGQ
|
||||||
|
ZwLLnbCDfClLZzZwDzCCZDbmNNdNtdBVNTNdNWMFtTFzTVFd
|
||||||
|
vlPlJRgRhQcPQQjpcRQJBBthNdtddtthtFMNWqMq
|
||||||
|
ppJgsgrJpJgslgrgRSPDDDLZLnHbrLHbwLbHfb
|
||||||
|
sBrNSTsrgDDMSjpPWVVqhppbsbtz
|
||||||
|
HTJfHwFwRFCnCPbzbzVzbVWq
|
||||||
|
QTcvvcmHnwGvvnRNrLglNNLNDZcZZL
|
||||||
|
qNNHSSFgbhLHHNfBwlJjQwwBcwQN
|
||||||
|
WZnVrZrMpVvZmVjwBvzBQRflJJcz
|
||||||
|
pWVGpWnmrmWjDmtnWVVZmtPFPCSbPgqgLSqtHCgTHgHH
|
||||||
|
QcQHqhpqQGbvbqHNqfhsQfHczZMlBZdZBlSFFZpZlFMDRFBM
|
||||||
|
TPVgmmrjtWjwrtwgLmTwLPMDZlMDMnSzzZgglzldBlgZ
|
||||||
|
PVtPrmPddrPCVTNqcHvQbHsCQNGh
|
||||||
|
PnsrrsdsSrnCvJCJBVwNqcHPRwNLWHwV
|
||||||
|
pjTQlgGWMjZBbRHHHZcbVV
|
||||||
|
htpThhlMjFdWrtDrfrsn
|
||||||
|
GZjHFHgjpbZQbgpHdgpjjBMTQsMJWzWRcsLMCRWzcz
|
||||||
|
ltwPlhwPSlwmmDhfrMwlzLLTSWJRssCBJWzsccCc
|
||||||
|
nfrnrntPnDmDDnPrwmvlVGdGFFNqjVHNjbGFjgFNMp
|
||||||
|
BjHBvHHqnBHrnnvclqjqplRRRQSfRpJQwPswStJsJQSt
|
||||||
|
wVFGWdVZVhWVDzVdZDSfRJtLLZJPtJRJSfJP
|
||||||
|
TDhCdWmNwzTWVmDBvMlrHmcqvHBMng
|
||||||
|
HpDpHvjvCjDHZHVWJSCrnrJgnNwr
|
||||||
|
rtQhssBTlRMblLBTtNnJFVSnnwVVwVWNnb
|
||||||
|
BhrchlmBBszfjmzzffDf
|
||||||
|
MMcJtJmVmnppVmSSpbCRvDvDRLDqvBRRCCMC
|
||||||
|
GWNNGGGfrjlHHHNZZZLNZt
|
||||||
|
jGrgfFjQrdhlhhgQFrVpnpVgmStPSJSPzJPP
|
||||||
|
wvJNJNtfGGphQQjFdGWj
|
||||||
|
DzSLzPczBrqzPrLMjSpjWMlSpQgwWd
|
||||||
|
zPHRqBLqqHzPcBDPsznZCwJsnfVnmZmtVntC
|
||||||
|
ttVWftWgGlWGfgtLtNddrNDdNvsLrdLdNm
|
||||||
|
JCcFSnbBqbRbSBCBqTFSQCmwMjRsrDRNNjDddssNfDrr
|
||||||
|
cBHBTTQFJJCCJQcCbCcqnSftHtZhHzWghPzVZpPglVVW
|
||||||
|
ZfSGFQdbrHQSbFFqlwLjCjLPlqwj
|
||||||
|
gmWJgNppJrgMcchzhmzNczqRsVRCjVRVsWjVRLRqqCVq
|
||||||
|
zDTchzJJJhgJJmBJhBTJBggtQHGrdbfnHHDHGvftStvHdf
|
||||||
|
LdRCgCDvCbCdnLnCvpGtQlhffNlhtSlQNtQlhb
|
||||||
|
BTJTVFJrqMVmBmdTMFNHNVQQQSHHffQhNlHQ
|
||||||
|
MqcBmqPdFBdjPPBTJqpZDDpgGDpgWCcvGCLp
|
||||||
|
gzFbjgqljdqblbbddBZTMvTBdMsVvm
|
||||||
|
SHpGWBCtSPhNpPSSSpwSNGNSTLTVVsZsLrvRrRvVLLRCvTvm
|
||||||
|
NwhHwPhDtSGpbDcBQqczbBBj
|
||||||
|
BhzLDSflLlTTRfqGpJZZQsqfNF
|
||||||
|
ndCmMHHRPbCjCwVPVmjtwdMVsNGJQpZQsJqJqNJdFqJZFrNq
|
||||||
|
CtwbRcRbttHBSgTcgShvTz
|
||||||
|
pffmzCtppTSWtzdhbJdZvvHVnvdHVV
|
||||||
|
WMlLWRGGQWMGrQJcVbvbHnvQHbhv
|
||||||
|
LFwRFDlqFPWfTszp
|
||||||
|
sbfFTbbbzJzfbJZSbnsnfTchGWWJGlhWvvBGltgVttgWgg
|
||||||
|
LLLDpHwMDLmNjmChVWWBwthrGQvgQl
|
||||||
|
dLMLDMLBNddPHmpMPfqPcPzcsSbbccqb
|
||||||
|
MNGMPvHTnfTfgSFrSMMgwFMw
|
||||||
|
QQRpjBsqhRQsldpqRQQQmjZFtrrzSFFccvSWwwjwFWZS
|
||||||
|
smsBbQlRlmDpDBqpqblpLbLLfTfNVPVVGnTvTLbb
|
||||||
|
gsmFlVCShjVwNNDNgWBNHg
|
||||||
|
dMtQvtQRrtbLMqMnqqsq
|
||||||
|
GQfGQPRtrPddPtvcvcQZRvRpJlVJFTlpZTVJpFJsSCFJjh
|
||||||
|
LFmpcmhNfhhnjStshM
|
||||||
|
qWTCCQrqlQBQcJCqrJdlHDdnRtngRStnPjgDSgSsjM
|
||||||
|
CZWrqTbllrClJZWbVfmmZcvVzmGZmfpv
|
||||||
|
qJLCqjwjjJnFqnDQQfqlQMfMQlMg
|
||||||
|
zmHWPhGGZVGpcCWMsWRRfBBRDs
|
||||||
|
bdpCcGmZdNFTwnSjrd
|
||||||
|
TttqjWvQjZTtzwWtdBCMdBMqdGCBRnhR
|
||||||
|
bpJlcNFVzbcBhCMMCChbMP
|
||||||
|
cJVgrplDcslrlrpFzwTHQsSTWLQtjWvLWj
|
||||||
|
hWlmVhlpcNpScSVtNbjrbGqdHGjgQrdrRdqG
|
||||||
|
LPBDCvFszTCzFzFzBBffHrJrrGHRHsgRjsjrjJqc
|
||||||
|
DTCMMzzvvnDvLvLDTTBTCMFBpWpthShmwmmWmwchptnhwWWt
|
||||||
|
dfHqNQSQQNQBHHZJfJCMCfVcRJCZ
|
||||||
|
GjLrDjgvFrFzjDgPGvLzgmmjCslRZMMCststJMlRcPVTRJJM
|
||||||
|
vjmmvrnzDDLVzrdSWNBQnWwdhHhH
|
||||||
|
jTmMBMNBTVSqNgBTjgNMqMTgWZttCmLfpQQZQWtLCdCGGtWC
|
||||||
|
zzVVbhFcbzstWCZpsftsQZ
|
||||||
|
whwhwPnDhHRhbRVHcSNllvMnNnjMjSBJMl
|
||||||
|
nSvQgHWtZvHlgtvqgqngjSFFFDNSfsbbbjGfcsSr
|
||||||
|
PPVRdNwRLhdLLCCwbscBBfGfbLjjjDbs
|
||||||
|
zVPPhMhMmhhVppRpMNRPhMQnHqZtHZvgQzWgQgvnqnnq
|
||||||
|
JdFHDSShfgDNMhGTBlwGGJqjjJTr
|
||||||
|
PCnWnsvpzPnmLvmsQGRGWrwlWbljwTjFGl
|
||||||
|
PtnLzQCQLfSFctdNhN
|
||||||
|
cTrjrCNrLjTFCTrLCdSVNVlJVSVVGJftNp
|
||||||
|
swQHQDsQGRZGffQV
|
||||||
|
ggffMhhvgswDgDnhhfCcTjrcTjWBWCMmcjjc
|
||||||
|
wGHvHCvWlMLlhGWwvvwlNnRBRdDNDBLDRVVDFdBD
|
||||||
|
MtJJTPTTQNFRNFRfTn
|
||||||
|
crSsmmJjmtgWmMhwWMCw
|
||||||
|
sQQHWGsWcWWrZQQshNtHFNBCNBqHFwHB
|
||||||
|
jSLbMSdfjSjFtFghNtFBMt
|
||||||
|
RSdmtLmSLLzSLdjjdTTbVvsVVsvZcZQzWPWcQrrW
|
||||||
|
PCCTzTgDgzVZZLgcgcdswMMMgs
|
||||||
|
hSrqdqRQSjqtNqcsGWcGLwMGMf
|
||||||
|
tlQJRJSRjpJjZPdpDTdHbzTn
|
||||||
|
pqBGDDtQBDLVhfCtCZVV
|
||||||
|
bTNFcljgbdlFjbldjFdTTcfZqZVsLhgfVLhVhZVHfZwC
|
||||||
|
McJjFbvTWvmRqGRr
|
||||||
|
JRcsJDfgncfHnqSBqGSTGQsTTz
|
||||||
|
vlBlLlpNWpPhVmTQpQSzqbqQ
|
||||||
|
CBPvjFNMlFhCCRtZJZZHfg
|
||||||
|
RFQQTdQQLtThDhfRcHdLfFcHJCWtbbPnJWJPNJbnJsvstvJv
|
||||||
|
ZmMlMlwwMrVzwVqrSqmZrqbplpNWFbWJnvvspWWNslNs
|
||||||
|
gwwmFrgMGgFqGTHRhHjDRTHH
|
||||||
|
dNfQvLdQsvSLsHsLBgNWVggJJCWCDJgnJJ
|
||||||
|
ZTGcflFlFRfhbwhbPcbbbWVWrMVMnDJCCWmVnDJCmF
|
||||||
|
lTfZTpjjZhPhRcqtBtsdSQpqQvtv
|
||||||
|
frfccJzjTBwWwcJwjrwcBVCVTRCGnpsGGSmpVSSpDH
|
||||||
|
hhhvghZvZlZvghPbdtqGpGVCRHGGmsRmpsvGRV
|
||||||
|
MdPCNqdtgZdZgcWMLzcffBcWzM
|
||||||
|
LdsfZNRsRWvvfLSsCpSgCDJbPcCp
|
||||||
|
MqTVtHHThllGMthlBHzcSzGGSFppPgbJDFbF
|
||||||
|
nVHwVlHmlhRWdjjjLvwD
|
||||||
|
whhWFjjzhGmGCrFFFzvtZsLZVStNZWLNpvtv
|
||||||
|
nqPMBdMQBqJnnfqdsSNfpvtZsSNtNpLp
|
||||||
|
HJHnQHqQlhwLlhzmGh
|
||||||
|
nMlmnfHmfjjmflLlLdzJTrsrBLJJLBbBSJrJ
|
||||||
|
pZRpFFDWctFPNtWvbbrTqrszTbqbcBqr
|
||||||
|
RpRGNPPvPFsNvflmdfwMGHhmmH
|
||||||
|
PjPzphfpJFPvFRHDbP
|
||||||
|
QlLlBcvBvnWCWcVCnFTTSnFDNdSRRRHN
|
||||||
|
sVtlVcVtmqjMJphrfvJs
|
||||||
|
dRRHRfrdRHHlCTTprlNCvhVVvhzpQhVvtmntmhtz
|
||||||
|
JMDJBLwQMBDDwZgJnhSzhmWStMvzbbmm
|
||||||
|
PPwJwGqPGQcDcHHjCqRlRCjrCN
|
||||||
|
GgGgbGSGzGbMBBzGDVFbDMRpmcWWTTfcFTchsJdcWJchTsch
|
||||||
|
NCqCttLZrCPQtNrtWqfhWJJqscmTJwsc
|
||||||
|
ZClvLCLmPjnPllPvCLrmnDRjpDzGpMRDRRDBGBgSzb
|
||||||
|
tvwCtDMQvJJPJtvQprjrjrvBjsTZTWTj
|
||||||
|
gFzgldFZSlSbgFlZmGmcFqsppjsLqrBsLBrqqWWjdB
|
||||||
|
FlcbhhNNbmHmcbSSzzggwDDQDwJnVCVHPtMVnnZQ
|
||||||
|
hrCnnrFrCvFHzVFdmmFm
|
||||||
|
GDTBsSfDDBRwfDsQbSdjHHVlqpmpgqWqpH
|
||||||
|
TBDBDBQBwcsPsPGQswPcZvJMrJhnrNhrNNnHJM
|
||||||
|
CztfzfZLBjMqZZWZgT
|
||||||
|
VPcblQhJvtgbvbgb
|
||||||
|
wwFQwVRPRchwcrJcPzfRpzspBfzfnSCzmt
|
||||||
|
FMnmnQnFNdQFRtmFmfNsCsjfpfrHHfVffV
|
||||||
|
DlLqDPwGlbVCdVbddbsr
|
||||||
|
GPDzLhqwLqDMFdFJRWzQzd
|
||||||
|
CSDSrMqnVSCTsPGPZpnPPGvP
|
||||||
|
jhBhhqBQQlhgjthBhlhJpLlwLLPwsswsGZpWPLvP
|
||||||
|
dgJQzgFjzjJFzzdHFzzzJMmNHCrSMSCSNbRqDCMCmR
|
||||||
|
cvSPvzWwzcTbVWSPbppWVjsGjdHdQSlNsQSdNGqsHZ
|
||||||
|
MRmCfmFBfRJfjqrdNMZHZQjQ
|
||||||
|
qgFtChDCFgmCnppPnczPbcLpnL
|
||||||
|
RllsdrhQvcVqmVzQcm
|
||||||
|
gGgnrZZMrFWFpZcccVmHqjVmHHnJ
|
||||||
|
ZrMWTTbbGMpbtgCTTZgZCWCLhwdsLvhhhPhNSldvPwPNfNlR
|
||||||
|
ffMqqznPPMzHfdfcdBJGTMVTGjRmMMTBjr
|
||||||
|
vtDwSwpmDsmQZswWSDhhDQGrjTgJBglRsjTTjVRBVTBl
|
||||||
|
ZthhQStwppSSvbvNDtWwnnbffmPnHPFHqmzFbLFq
|
||||||
|
CcHPmPcTJTqNCPqbqJqLgNJrjWtrftjrrnBnsWtjtBsfTB
|
||||||
|
ZRLwhzwLRlhLpdlpjftBBnBjWsBBvn
|
||||||
|
QhzhlwDdMzwFSwRLMJqqcSmqNPgmqNHNVP
|
||||||
|
WzTWppwcQNppbQrJHhhrJfcdfnsr
|
||||||
|
MDMLlLqjvqSBvVCLGJhnJsrDnnrDdhDffZ
|
||||||
|
BLMCBCBlLlGSJvSPBMLqGJVwwQzPpNRWmTRzmzpWWFmTbQ
|
||||||
|
WpWpWsfcBFjwGgqqtTQrTpgg
|
||||||
|
JLHNPPvLJRZdnNJZHRzGGTzjrtMqMJlQzztt
|
||||||
|
vHHnbDnLnHRCRnvdZdbHLNPfBfBhcffmcSSsDjcVwVBmcS
|
||||||
|
DDZlblRRLQcNpJNhpL
|
||||||
|
VPrdJfBFFBBWBrdvJPCBBdfhqcFhchNQcpNgzqcjphqFjp
|
||||||
|
mWVPfMWWfBMWWwPrWvJHDbZGZmZRtDbsDbSb
|
||||||
|
PDwwBzvRRzPCBPgnrwvvCDsSSccWscFTnSshWnZsSZcF
|
||||||
|
GJtNGHfLbQtQQJQGhhhShgSZWVWJjSFF
|
||||||
|
tmHlfGfMlBzrRDMggz
|
||||||
|
gSBNwDNJglSwlDMtTCsZzStTsSCC
|
||||||
|
hhfGdGcFhrqFmQddrhvvrdGRRtQMTHMCsbZbZtRTsbZsQs
|
||||||
|
mrmrFqqqccdhWjGcnLpBDWgNWpCBlgLW
|
||||||
|
WgmBsqMBnLLGnGnJtFgbbTwHttTwHF
|
||||||
|
cQjcfpVQfCCPSMjCcCPSPjVwbtTlTtwJbTvJJHbzHFFJ
|
||||||
|
PCZDCZffCdpQCdDWrGGsnLqWhnrM
|
||||||
|
gppVszSgMPMPstzNpPMQpnGfDJhfnGLLGnfLfQlLfh
|
||||||
|
rBFcCcrbmbJJJWhbhLVL
|
||||||
|
wqcmRFZqmcvvCZBcRvcVwNsztSPzHstSgzMNSgpS
|
||||||
|
qzLJRZfpRZtNNMSfftFN
|
||||||
|
QDnPHCCGvbQnnCwMMlcFgsgHFFlNlV
|
||||||
|
rPCMQnbdhRLqJLzhzB
|
||||||
|
dfdrfqBqBtRwBsFR
|
||||||
|
cDczzSMzDcSGSQbCfFjRFZtZCZmtwZRt
|
||||||
|
bVcJSbVbSDllNrrWWNdvWf
|
||||||
|
WSPPWlppCQlZPGqPjhcjfs
|
||||||
|
JJrJrRTHNTNLbbNLcfzzSfSzGTjsqZsj
|
||||||
|
FVRFNgVRbDbdwlWpSnvQnVQM
|
||||||
|
znJTCRCSvRpzVBjWJdBBBVNb
|
||||||
|
gggcfGDrGDZqwhwfGBjbHVSVdtdjtBShWj
|
||||||
|
ZrgmqmGDGfDPmrfwPmsqZPfCpsFFnFvlSMCLLvpSRFFMvL
|
||||||
|
qhhfgzzSGDSZSgfrcjhcjCCndnbjdr
|
||||||
|
FPTTTwBHBPJMJVJBGwmjvCmBdjjNNcrjncNc
|
||||||
|
GwTttMsTtHFtVFtDplSDzgRpDqsfpD
|
||||||
|
vzwsPlvFFdJGjQwdJw
|
||||||
|
HHNbpDTbVMvTpmMHvddtRtJJjjJRdLmLGj
|
||||||
|
HbqHcbMvlWrqzWFW
|
||||||
|
hMJMJBhPTnDMJJTGmmGmwDpRzRpFWz
|
||||||
|
lSZPPNvbNllPpGRFwwzRNGgm
|
||||||
|
bHZCZbvrttlZClqbHbsrbnQMThdJBQhVQBPdscnPQB
|
||||||
|
ZRNZfffHLfDLgfNlHWwhChWzzVdcVH
|
||||||
|
jpJmJjvnTtSjtJvQWldPWcBdPSdWzzcz
|
||||||
|
jGGsGsFFFGnJtTvvTszZNqqNgrsDLRDqLqrL
|
||||||
|
rrblpnfnVVfspgrppnMrpsrGdGdzgddzPFCjCzjzzzjtDC
|
||||||
|
TRWTJwThJhRvwZWvJBZvqDzQzGBPCzdHGjdGGGttzj
|
||||||
|
JSZmTZZwWvqhwqrrVnrLnPmbsbPr
|
||||||
|
MdhjZhZZDTdPDcgCSLfgCpCL
|
||||||
|
vvwtnwnssznwJnwvBbBBHHRSSfLLcpWfSWWzcLRTRWpf
|
||||||
|
snJtHJHmbBsrswNtsnjhlhqZPqTjjTjQMPGr
|
||||||
|
gmSnWMMzvvNWCNWCJJph
|
||||||
|
QfqjcbcRGGjcwhNppNqMptdNHL
|
||||||
|
rGPbflPfwPvlFFvTTMlg
|
||||||
|
trTdMJvtlLntbCRN
|
||||||
|
GBZsGFGBcRbZCRNR
|
||||||
|
SSGFmFjqVNFVssjSVjqjvMMQvgTmMgMMQWMmTdhJ
|
||||||
|
GcNcdNdwMZSqNZSSScSdqGwDrCmJMVrCmHmVVCFVJDrmFV
|
||||||
|
jTvsRsWbjjbQQfvTThFVZVTVDJVHlCFr
|
||||||
|
BjnBPfRWBnRsnvBsRBQQSSGzpZLdgwcLZqzgzPLg
|
||||||
|
clNrNpjbNpbRrCpsRlrVtjwVZwttttZVgMHwZS
|
||||||
|
FJBBDhJDTQFThqssvPJBBvHMWLwgwSHtWLZMwZgwSg
|
||||||
|
qQJfdJDhGsBBDFJBnlzGmmnRzbCpcrzl
|
||||||
|
ZPbfgBvcZPPZPWWWWBFbQllndnqdnlpwdSNfnwdN
|
||||||
|
LzLrzDhmDRRJpJzptDhCSCqHMHqnqSlHqMSQNHQS
|
||||||
|
zTsRzsDTJszzrrLRstrGJLsPpbVVPbcgTBcZvbPVFggbjP
|
||||||
|
THpVHSrLZrzzvPtJdtsqLssdLW
|
||||||
|
fbfCCQgQllWwwwFmjRsPcqcPsJJJdscPdmsP
|
||||||
|
RNQlQgCFfgwVppWTNvGrvn
|
||||||
|
PqFwwcqzDlFJDDQVMjQmMBjG
|
||||||
|
ZgTZZndCpBMVNTvvQc
|
||||||
|
pHgtZdtRnnLhcshdhWzWSFlbsJsqzzzbSb
|
||||||
|
zjfgjMhhgMJdfHQHWdVQvR
|
||||||
|
CrmpmpZpHQptHHHQ
|
||||||
|
CnwcFbNCqQBFwwFFsPslJgsjhMlMcDJP
|
||||||
|
HpnStLpnQnHnqQLQqpMSSWWZbswNcNqwbNsfwqGGZc
|
||||||
|
dVRRTCTVJNLcfJcJFb
|
||||||
|
gzjTRCddgLDdzdjCCrBjjdhhBnQPSSBhvlSBQvMhQMnt
|
||||||
|
lFTlwMwZlblSjrCpVvvsptspZpps
|
||||||
|
nHRPPnqnhPRqJHhqqhfdPqLCHvBCvvscvVNczztCCvsvtm
|
||||||
|
RJDghDhRhhGPPqGhsPhhFSbbwGSFjGQlWTrbwQbW
|
||||||
|
RRjgNPTRFhglgNNjTsmGqCCGZfzmHCnZGnZCqq
|
||||||
|
SppWLbtbCzZMpHMZ
|
||||||
|
dSDbbJdVVlHFNlll
|
||||||
|
dtZdGmqqtmzhtqZtZswzSnSjfNHNVjzCWCnCffHz
|
||||||
|
LgpMFMvlhvRMhhDDlvvQLFJCfSCHnFVJnSnJHNjSnj
|
||||||
|
rRBLcQcpQcrZbwsZshbs
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
vJrwpWtwJgWrhcsFMMfFFhFp
|
||||||
|
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||||
|
PmmdzqPrVvPwwTWBwg
|
||||||
|
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||||
|
ttgJtRGJQctTZtZT
|
||||||
|
CrZsJsPPZsGzwwsLwLmpwMDw
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
package day4
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Solver struct {
|
||||||
|
elfPairs []ElfPair
|
||||||
|
}
|
||||||
|
|
||||||
|
type ElfPair struct {
|
||||||
|
first, second map[int]bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) ParseInput(input []string) {
|
||||||
|
s.elfPairs = make([]ElfPair, len(input))
|
||||||
|
|
||||||
|
for pairIndex, line := range input {
|
||||||
|
pairs := strings.Split(line, ",")
|
||||||
|
|
||||||
|
var i, j int
|
||||||
|
|
||||||
|
p1 := strings.Split(pairs[0], "-")
|
||||||
|
m1 := make(map[int]bool)
|
||||||
|
|
||||||
|
i, _ = strconv.Atoi(p1[0])
|
||||||
|
j, _ = strconv.Atoi(p1[1])
|
||||||
|
for ; i <= j; i++ {
|
||||||
|
m1[i] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
p2 := strings.Split(pairs[1], "-")
|
||||||
|
m2 := make(map[int]bool)
|
||||||
|
|
||||||
|
i, _ = strconv.Atoi(p2[0])
|
||||||
|
j, _ = strconv.Atoi(p2[1])
|
||||||
|
for ; i <= j; i++ {
|
||||||
|
m2[i] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
s.elfPairs[pairIndex] = ElfPair{m1, m2}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) SolvePart1() any {
|
||||||
|
var total int
|
||||||
|
|
||||||
|
for _, ep := range s.elfPairs {
|
||||||
|
if contains(ep.first, ep.second) || contains(ep.second, ep.first) {
|
||||||
|
total += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return total
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solver) SolvePart2() any {
|
||||||
|
var total int
|
||||||
|
|
||||||
|
for _, ep := range s.elfPairs {
|
||||||
|
if len(intersect(ep.first, ep.second)) > 0 {
|
||||||
|
total += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return total
|
||||||
|
}
|
||||||
|
|
||||||
|
func contains(m1, m2 map[int]bool) bool {
|
||||||
|
for k := range m1 {
|
||||||
|
if _, ok := m2[k]; !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func intersect(m1, m2 map[int]bool) []int {
|
||||||
|
result := make([]int, 0)
|
||||||
|
for k := range m1 {
|
||||||
|
if _, ok := m2[k]; ok {
|
||||||
|
result = append(result, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,6 @@
|
||||||
|
2-4,6-8
|
||||||
|
2-3,4-5
|
||||||
|
5-7,7-9
|
||||||
|
2-8,3-7
|
||||||
|
6-6,4-6
|
||||||
|
2-6,4-8
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,512 @@
|
||||||
|
[S] [T] [Q]
|
||||||
|
[L] [B] [M] [P] [T]
|
||||||
|
[F] [S] [Z] [N] [S] [R]
|
||||||
|
[Z] [R] [N] [R] [D] [F] [V]
|
||||||
|
[D] [Z] [H] [J] [W] [G] [W] [G]
|
||||||
|
[B] [M] [C] [F] [H] [Z] [N] [R] [L]
|
||||||
|
[R] [B] [L] [C] [G] [J] [L] [Z] [C]
|
||||||
|
[H] [T] [Z] [S] [P] [V] [G] [M] [M]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 6 from 1 to 7
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 6 from 4 to 3
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 3 from 8 to 3
|
||||||
|
move 15 from 3 to 4
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 14 from 4 to 2
|
||||||
|
move 3 from 2 to 7
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 9 from 9 to 1
|
||||||
|
move 3 from 2 to 1
|
||||||
|
move 7 from 6 to 7
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 9 from 2 to 3
|
||||||
|
move 8 from 3 to 9
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 5 from 9 to 8
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 17 from 1 to 9
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 12 from 7 to 3
|
||||||
|
move 16 from 9 to 2
|
||||||
|
move 5 from 7 to 5
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 7 from 3 to 4
|
||||||
|
move 5 from 8 to 3
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 7 from 3 to 4
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 10 from 4 to 5
|
||||||
|
move 3 from 5 to 2
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 5 from 2 to 8
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 2 from 5 to 8
|
||||||
|
move 12 from 5 to 7
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 5 from 9 to 4
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 6 from 1 to 3
|
||||||
|
move 6 from 3 to 5
|
||||||
|
move 10 from 7 to 4
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 4 from 7 to 6
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 12 from 2 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 3 from 7 to 4
|
||||||
|
move 4 from 4 to 8
|
||||||
|
move 7 from 5 to 3
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 10 from 1 to 5
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 4 from 6 to 7
|
||||||
|
move 8 from 8 to 3
|
||||||
|
move 5 from 4 to 9
|
||||||
|
move 12 from 3 to 8
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 14 from 4 to 6
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 8 from 2 to 8
|
||||||
|
move 3 from 5 to 7
|
||||||
|
move 21 from 8 to 4
|
||||||
|
move 16 from 4 to 9
|
||||||
|
move 8 from 6 to 2
|
||||||
|
move 4 from 6 to 1
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 3 from 1 to 8
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 3 from 8 to 4
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 2 from 5 to 7
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 3 from 6 to 3
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 3 from 6 to 7
|
||||||
|
move 10 from 9 to 7
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 6 from 8 to 3
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 7 from 9 to 1
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 7 from 1 to 7
|
||||||
|
move 3 from 5 to 8
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 5 from 3 to 1
|
||||||
|
move 9 from 7 to 2
|
||||||
|
move 6 from 3 to 8
|
||||||
|
move 8 from 2 to 7
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 24 from 7 to 4
|
||||||
|
move 4 from 8 to 9
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 4 from 2 to 8
|
||||||
|
move 13 from 9 to 2
|
||||||
|
move 2 from 8 to 6
|
||||||
|
move 3 from 9 to 6
|
||||||
|
move 26 from 4 to 2
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 2 from 6 to 2
|
||||||
|
move 2 from 4 to 1
|
||||||
|
move 7 from 2 to 1
|
||||||
|
move 15 from 2 to 6
|
||||||
|
move 8 from 2 to 8
|
||||||
|
move 4 from 6 to 8
|
||||||
|
move 9 from 2 to 9
|
||||||
|
move 13 from 6 to 7
|
||||||
|
move 6 from 1 to 9
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 4 from 1 to 6
|
||||||
|
move 3 from 8 to 3
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 3 from 3 to 2
|
||||||
|
move 14 from 7 to 4
|
||||||
|
move 5 from 9 to 5
|
||||||
|
move 9 from 8 to 5
|
||||||
|
move 7 from 9 to 6
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 10 from 5 to 1
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 4 from 2 to 1
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 12 from 1 to 5
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 4 from 6 to 9
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 10 from 6 to 5
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 20 from 5 to 1
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 22 from 1 to 7
|
||||||
|
move 5 from 4 to 8
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 19 from 7 to 4
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 10 from 1 to 8
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 8 from 4 to 7
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 3 from 4 to 5
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 11 from 7 to 4
|
||||||
|
move 4 from 4 to 9
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 5 from 9 to 4
|
||||||
|
move 5 from 7 to 9
|
||||||
|
move 23 from 4 to 2
|
||||||
|
move 17 from 2 to 7
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 4 from 4 to 7
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 5 from 8 to 9
|
||||||
|
move 5 from 2 to 7
|
||||||
|
move 9 from 7 to 5
|
||||||
|
move 11 from 9 to 2
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 5 from 8 to 7
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 5 from 7 to 5
|
||||||
|
move 15 from 5 to 4
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 4 from 4 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 8 from 2 to 1
|
||||||
|
move 4 from 2 to 8
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 5 from 8 to 6
|
||||||
|
move 5 from 7 to 9
|
||||||
|
move 4 from 6 to 5
|
||||||
|
move 7 from 4 to 8
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 4 from 7 to 9
|
||||||
|
move 4 from 3 to 9
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 6 from 9 to 2
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 5 from 9 to 4
|
||||||
|
move 4 from 4 to 6
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 8 from 4 to 3
|
||||||
|
move 7 from 7 to 3
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 11 from 5 to 9
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 3 from 6 to 2
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 3 from 1 to 5
|
||||||
|
move 5 from 9 to 2
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 4 from 9 to 7
|
||||||
|
move 3 from 5 to 2
|
||||||
|
move 2 from 1 to 8
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 4 from 7 to 9
|
||||||
|
move 11 from 8 to 7
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 6 from 9 to 7
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 13 from 2 to 7
|
||||||
|
move 24 from 7 to 1
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 5 from 2 to 4
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 9 from 3 to 2
|
||||||
|
move 3 from 4 to 8
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 9 from 2 to 1
|
||||||
|
move 3 from 4 to 9
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 6 from 3 to 9
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 15 from 1 to 3
|
||||||
|
move 13 from 3 to 9
|
||||||
|
move 11 from 1 to 4
|
||||||
|
move 5 from 4 to 1
|
||||||
|
move 6 from 3 to 6
|
||||||
|
move 4 from 4 to 8
|
||||||
|
move 6 from 1 to 4
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 3 from 4 to 2
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 2 from 4 to 2
|
||||||
|
move 9 from 9 to 3
|
||||||
|
move 9 from 3 to 5
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 5 from 2 to 6
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 10 from 9 to 2
|
||||||
|
move 9 from 2 to 4
|
||||||
|
move 10 from 4 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 4 from 1 to 2
|
||||||
|
move 5 from 2 to 4
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 10 from 5 to 4
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 3 from 6 to 7
|
||||||
|
move 8 from 4 to 9
|
||||||
|
move 6 from 6 to 1
|
||||||
|
move 4 from 9 to 5
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 6 from 5 to 2
|
||||||
|
move 3 from 7 to 9
|
||||||
|
move 4 from 8 to 2
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 14 from 1 to 9
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 3 from 2 to 5
|
||||||
|
move 2 from 4 to 2
|
||||||
|
move 6 from 8 to 1
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 8 from 2 to 7
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 9 from 9 to 5
|
||||||
|
move 11 from 4 to 8
|
||||||
|
move 4 from 7 to 4
|
||||||
|
move 6 from 4 to 6
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 6 from 6 to 7
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 6 from 8 to 9
|
||||||
|
move 8 from 9 to 5
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 15 from 9 to 3
|
||||||
|
move 3 from 1 to 4
|
||||||
|
move 6 from 7 to 2
|
||||||
|
move 3 from 4 to 9
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 8 from 3 to 6
|
||||||
|
move 3 from 6 to 5
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 10 from 5 to 7
|
||||||
|
move 6 from 5 to 4
|
||||||
|
move 4 from 2 to 4
|
||||||
|
move 6 from 5 to 1
|
||||||
|
move 6 from 1 to 8
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 6 from 3 to 7
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 10 from 4 to 6
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 12 from 7 to 3
|
||||||
|
move 12 from 3 to 8
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 13 from 8 to 1
|
||||||
|
move 7 from 7 to 1
|
||||||
|
move 13 from 6 to 9
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 6 from 5 to 3
|
||||||
|
move 3 from 4 to 3
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 10 from 9 to 4
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 8 from 1 to 9
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 6 from 9 to 3
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 4 from 9 to 5
|
||||||
|
move 4 from 1 to 6
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 6 from 1 to 4
|
||||||
|
move 3 from 9 to 3
|
||||||
|
move 3 from 6 to 8
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 5 from 5 to 1
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 7 from 7 to 9
|
||||||
|
move 12 from 1 to 9
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 13 from 4 to 7
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 5 from 7 to 3
|
||||||
|
move 4 from 9 to 1
|
||||||
|
move 8 from 7 to 9
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 5 from 4 to 6
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 10 from 1 to 5
|
||||||
|
move 3 from 4 to 7
|
||||||
|
move 16 from 9 to 2
|
||||||
|
move 3 from 9 to 2
|
||||||
|
move 6 from 5 to 3
|
||||||
|
move 4 from 6 to 2
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 7 from 7 to 2
|
||||||
|
move 16 from 2 to 1
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 10 from 2 to 8
|
||||||
|
move 14 from 8 to 5
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 8 from 1 to 7
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 5 from 3 to 2
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 3 from 6 to 7
|
||||||
|
move 10 from 7 to 5
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 27 from 5 to 9
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 4 from 3 to 6
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 3 from 8 to 1
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 12 from 7 to 8
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 6 from 3 to 8
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 15 from 9 to 5
|
||||||
|
move 7 from 9 to 4
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 16 from 8 to 2
|
||||||
|
move 8 from 5 to 2
|
||||||
|
move 24 from 2 to 9
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 24 from 9 to 1
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 1 from 2 to 7
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
[D]
|
||||||
|
[N] [C]
|
||||||
|
[Z] [M] [P]
|
||||||
|
1 2 3
|
||||||
|
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 1 from 1 to 2
|
||||||
18
main.go
18
main.go
|
|
@ -4,9 +4,15 @@ import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
day1_calorie_counting "snikolov.me/aoc2022/day1"
|
|
||||||
"snikolov.me/aoc2022/utils"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"snikolov.me/aoc2022/day1"
|
||||||
|
"snikolov.me/aoc2022/day2"
|
||||||
|
"snikolov.me/aoc2022/day3"
|
||||||
|
"snikolov.me/aoc2022/day4"
|
||||||
|
"snikolov.me/aoc2022/day5"
|
||||||
|
|
||||||
|
"snikolov.me/aoc2022/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Args struct {
|
type Args struct {
|
||||||
|
|
@ -39,7 +45,11 @@ func main() {
|
||||||
|
|
||||||
func solve(args Args, inputFileName string) {
|
func solve(args Args, inputFileName string) {
|
||||||
solvers := map[int]utils.Solver{
|
solvers := map[int]utils.Solver{
|
||||||
1: &day1_calorie_counting.Solver{},
|
1: &day1.Solver{},
|
||||||
|
2: &day2.Solver{},
|
||||||
|
3: &day3.Solver{},
|
||||||
|
4: &day4.Solver{},
|
||||||
|
5: &day5.Solver{},
|
||||||
}
|
}
|
||||||
solver, ok := solvers[args.DayNumber]
|
solver, ok := solvers[args.DayNumber]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
@ -54,7 +64,7 @@ func solve(args Args, inputFileName string) {
|
||||||
log.Fatalf("Could not read input for day %d: %s", args.DayNumber, err)
|
log.Fatalf("Could not read input for day %d: %s", args.DayNumber, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var solution int
|
var solution any
|
||||||
switch args.PartNumber {
|
switch args.PartNumber {
|
||||||
case 1:
|
case 1:
|
||||||
solution = solver.SolvePart1()
|
solution = solver.SolvePart1()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package utils
|
||||||
|
|
||||||
|
type Set[T comparable] interface {
|
||||||
|
Items() []T
|
||||||
|
// Union(set Set[T]) Set[T]
|
||||||
|
// Intersection(set Set[T]) Set[T]
|
||||||
|
// ContainsItem(item T) bool
|
||||||
|
// ContainsSubset(set Set[T]) bool
|
||||||
|
}
|
||||||
|
|
||||||
|
type set[T comparable] struct {
|
||||||
|
m map[T]bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *set[T]) Items() []T {
|
||||||
|
r := make([]T, len(s.m))
|
||||||
|
i := 0
|
||||||
|
for item, _ := range s.m {
|
||||||
|
r[i] = item
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSet[T comparable](items ...T) Set[T] {
|
||||||
|
m := make(map[T]bool, len(items))
|
||||||
|
for _, item := range items {
|
||||||
|
m[item] = true
|
||||||
|
}
|
||||||
|
return &set[T]{m}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetItems(t *testing.T) {
|
||||||
|
s := NewSet(1, 2, 3, 2, 2, 1)
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(s.Items(), []int{1, 2, 3}) {
|
||||||
|
t.Error("new set does not contain initial items")
|
||||||
|
}
|
||||||
|
|
||||||
|
items := []string{"hello", "there", "world", "sta", "satasr", "aaaaa", "tawfptars"}
|
||||||
|
s1 := NewSet(items...)
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(s1.Items(), items) {
|
||||||
|
t.Error("new set does not contain initial items")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -11,8 +11,8 @@ import (
|
||||||
|
|
||||||
type Solver interface {
|
type Solver interface {
|
||||||
ParseInput(input []string)
|
ParseInput(input []string)
|
||||||
SolvePart1() int
|
SolvePart1() any
|
||||||
SolvePart2() int
|
SolvePart2() any
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadInput(inputFileName string) ([]string, error) {
|
func ReadInput(inputFileName string) ([]string, error) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue