code.go 816 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package main
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "log"
  6. "os"
  7. "strings"
  8. )
  9. func readInput(file string) (string, map[string]string) {
  10. content, err := ioutil.ReadFile(file)
  11. if err != nil {
  12. log.Fatal(err)
  13. }
  14. lines := strings.Split(string(content), "\n")
  15. var template string
  16. input := make(map[string]string)
  17. readingTemplate := true
  18. for _, line := range lines {
  19. if line == "" {
  20. readingTemplate = false
  21. continue
  22. }
  23. if readingTemplate {
  24. template = line
  25. continue
  26. }
  27. parts := strings.Split(line, " -> ")
  28. if len(parts) != 2 {
  29. log.Fatal("Invalid line: ", line)
  30. }
  31. input[parts[0]] = parts[1]
  32. }
  33. return template, input
  34. }
  35. func main() {
  36. if len(os.Args) < 2 {
  37. log.Fatal("Please provide a file name as argument")
  38. }
  39. template, input := readInput(os.Args[1])
  40. fmt.Println(template, input)
  41. }