day 05
This commit is contained in:
70
05/main.go
70
05/main.go
@@ -29,9 +29,7 @@ func parseRange(r string) Range {
|
||||
}
|
||||
|
||||
func main() {
|
||||
rows := aoc.ReadFileRows(true)
|
||||
|
||||
fmt.Println(rows)
|
||||
rows := aoc.ReadFileRows(false)
|
||||
|
||||
ranges := []Range{}
|
||||
|
||||
@@ -46,11 +44,69 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
ids := make([]int, len(rows)-idsStartIndex)
|
||||
for {
|
||||
deleteIndex := -1
|
||||
|
||||
for ii, rr := range rows[idsStartIndex:] {
|
||||
for ii, rngBasis := range ranges {
|
||||
for jj, rngCompare := range ranges {
|
||||
if ii != jj {
|
||||
if rngCompare.From >= rngBasis.From && rngCompare.From <= rngBasis.To && rngCompare.To > rngBasis.To {
|
||||
ranges[ii].To = rngCompare.To
|
||||
|
||||
deleteIndex = jj
|
||||
}
|
||||
|
||||
if rngCompare.To >= rngBasis.From && rngCompare.To <= rngBasis.To && rngCompare.From < rngBasis.From {
|
||||
ranges[ii].From = rngCompare.From
|
||||
|
||||
deleteIndex = jj
|
||||
}
|
||||
|
||||
if rngCompare.From <= rngBasis.From && rngCompare.To >= rngBasis.To {
|
||||
ranges[ii] = rngCompare
|
||||
|
||||
deleteIndex = jj
|
||||
}
|
||||
|
||||
if deleteIndex != -1 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if deleteIndex != -1 {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if deleteIndex != -1 {
|
||||
ranges[deleteIndex] = ranges[len(ranges)-1]
|
||||
ranges = ranges[:len(ranges)-1]
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println(ranges)
|
||||
fmt.Println(ids)
|
||||
freshCounter := 0
|
||||
|
||||
for _, sID := range rows[idsStartIndex:] {
|
||||
id := aoc.ParseInt(sID)
|
||||
|
||||
for _, goodRange := range ranges {
|
||||
if id >= goodRange.From && id <= goodRange.To {
|
||||
freshCounter++
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
freshIDCount := 0
|
||||
|
||||
for _, rng := range ranges {
|
||||
freshIDCount += rng.To - rng.From + 1
|
||||
}
|
||||
|
||||
fmt.Println(freshCounter)
|
||||
fmt.Println(freshIDCount)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user