github.com/agrigoryan/aoc_2023_go@v0.0.0-20231216221323-4ace361ec685/day12/d12p2.go (about)

     1  package day12
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"strconv"
     7  	"strings"
     8  
     9  	"github.com/agrigoryan/aoc_2023_go/aocutils"
    10  )
    11  
    12  func d12p2(input string) int {
    13  	lines := strings.Split(input, "\n")
    14  
    15  	sum := 0
    16  	for _, line := range lines {
    17  		parts := strings.Split(line, " ")
    18  		springs := parts[0]
    19  		series := aocutils.Map(strings.Split(parts[1], ","), func(s string) int {
    20  			res, err := strconv.Atoi(s)
    21  			if err != nil {
    22  				log.Fatalln(err)
    23  			}
    24  			return res
    25  		})
    26  		newSeries := []int{}
    27  		newSprigns := springs
    28  		for i := 0; i < 5; i++ {
    29  			newSeries = append(newSeries, series...)
    30  			if i < 4 {
    31  				newSprigns += "?" + springs
    32  			}
    33  		}
    34  
    35  		sum += solveLine(newSprigns, newSeries)
    36  		fmt.Println(sum)
    37  	}
    38  
    39  	return sum
    40  }