package day20 import ( "fmt" "log" "os" "strings" ) func Run() int { fmt.Println("hello from dya 20") return 0 } // process sends single `low pulse` directly to "broadcast" func ReadModules(filename string) map[string]Module { result := make(map[string]Module) bytes, err := os.ReadFile(filename) if err != nil { panic(fmt.Sprint("error reading file: ", filename)) } text := strings.TrimSpace(string(bytes)) for _, line := range strings.Split(text, "\n") { switch { case IsLineBroadcast(line): parsed := ParseBroadcast(line) result["broadcast"] = &parsed case IsLineFlipFlop(line): parsed := ParseFlipFlop(line) result[parsed.Name] = &parsed case IsLineConjunction(line): parsed := ParseConjunction(line) result[parsed.Name] = &parsed } log.Println(line) } buttonModule := Button{} result["button"] = &buttonModule outputModule := Output{} result["output"] = &outputModule return result }