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() {
|
func main() {
|
||||||
rows := aoc.ReadFileRows(true)
|
rows := aoc.ReadFileRows(false)
|
||||||
|
|
||||||
fmt.Println(rows)
|
|
||||||
|
|
||||||
ranges := []Range{}
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(ranges)
|
if rngCompare.To >= rngBasis.From && rngCompare.To <= rngBasis.To && rngCompare.From < rngBasis.From {
|
||||||
fmt.Println(ids)
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
}
|
}
|
||||||
|
|||||||
11
pkg/aoc/parse.go
Normal file
11
pkg/aoc/parse.go
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package aoc
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
func ParseInt(s string) int {
|
||||||
|
if i, err := strconv.Atoi(s); err != nil {
|
||||||
|
panic(err)
|
||||||
|
} else {
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user