code.go 779 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "strings"
  7. )
  8. func readInput(path string) []string {
  9. data, err := os.ReadFile(path)
  10. if err != nil {
  11. log.Fatal(err)
  12. }
  13. parts := strings.Split(string(data), ",")
  14. if len(parts) == 0 {
  15. log.Fatal("Bad input!")
  16. }
  17. for i := range parts {
  18. parts[i] = strings.TrimRight(parts[i], "\n")
  19. }
  20. return parts
  21. }
  22. func hash(text string) int {
  23. var current int
  24. for i := range text {
  25. current += int(text[i])
  26. current = current * 17 % 256
  27. }
  28. return current
  29. }
  30. func part1(steps []string) int {
  31. var result int
  32. for i := range steps {
  33. result += hash(steps[i])
  34. }
  35. return result
  36. }
  37. func main() {
  38. if len(os.Args) < 2 {
  39. log.Fatal("You need to specify a file!")
  40. }
  41. steps := readInput(os.Args[1])
  42. fmt.Println("Part1:", part1(steps))
  43. }