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