Half assed start at seven
This commit is contained in:
parent
14a16819c5
commit
7d8df0db21
1 changed files with 70 additions and 0 deletions
70
2025/seven/seven.go
Normal file
70
2025/seven/seven.go
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func check(err error) {
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
type beam int
|
||||
type beams struct {
|
||||
b map[beam]struct{}
|
||||
}
|
||||
|
||||
func (b *beams) add(pos beam) {
|
||||
b.b[pos] = {}
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
file, err := os.Open("five.txt")
|
||||
check(err)
|
||||
defer file.Close()
|
||||
|
||||
scanner := bufio.NewScanner(file)
|
||||
scanner.Scan()
|
||||
|
||||
text := scanner.Text()
|
||||
|
||||
start := strings.IndexRune(text, 'S')
|
||||
beams.add(beam(start))
|
||||
|
||||
for scanner.Scan() {
|
||||
}
|
||||
db, err := parse(scanner)
|
||||
|
||||
check(err)
|
||||
|
||||
nRaw := len(db.ranges)
|
||||
|
||||
for {
|
||||
before, after := db.collapse()
|
||||
|
||||
fmt.Printf("Collapsed %d to %d ranges\n", before, after)
|
||||
|
||||
if before == after {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
potentialNFresh := 0
|
||||
for _, r := range db.ranges {
|
||||
potentialNFresh += r.nInRange()
|
||||
}
|
||||
|
||||
fmt.Printf(
|
||||
"N raw %d and consolidated %d. %d potential fresh ingredients.\n",
|
||||
nRaw,
|
||||
len(db.ranges),
|
||||
potentialNFresh,
|
||||
)
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue