49 lines
948 B
Go
49 lines
948 B
Go
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
|
|
}
|