Skip to content
Snippets Groups Projects

Lab11,aoc2019 6

4 files
+ 1725
10
Compare changes
  • Side-by-side
  • Inline

Files

aoc_2019_6/aoc.go 0 → 100644
+ 56
0
package main
import (
"bufio"
"fmt"
"os"
"slices"
"strings"
)
func main() {
file := "input.txt"
mappa := make(map[string]string)
fileOpened ,_ := os.Open(file)
sc := bufio.NewScanner(fileOpened)
for sc.Scan(){
split := strings.Split(sc.Text(),")")
mappa[split[1]] = split[0]
}
fmt.Println("p1:",p1(mappa))
fmt.Println("p2:",p2(mappa))
}
func p1(mappa map[string]string) (cnt int){
for key := range mappa {
tkey := key
cnt++
for mappa[tkey] != "COM" {
cnt++
tkey=mappa[tkey]
}
}
return cnt
}
func p2(mappa map[string]string) (cnt int){
padriYou := padri(mappa,"YOU")
padriSan := padri(mappa,"SAN")
for i:=0;i<len(padriYou);i++ {
nodo := padriYou[i]
if slices.Contains(padriSan,nodo){
return slices.Index(padriYou,nodo) + slices.Index(padriSan,nodo)
}
}
return cnt
}
func padri(mappa map[string]string,key string) (padri []string){
tkey := mappa[key]
for mappa[tkey] != "COM" {
padri = append(padri,tkey)
tkey=mappa[tkey]
}
return padri
}
\ No newline at end of file
Loading