code.go 851 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package main
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "log"
  6. "os"
  7. "sort"
  8. "strconv"
  9. "strings"
  10. )
  11. func readInput(file string) (map[int]int, []int) {
  12. content, err := ioutil.ReadFile(file)
  13. if err != nil {
  14. log.Fatal(err)
  15. }
  16. numberStrings := strings.Split(string(content), ",")
  17. crabs := make(map[int]int)
  18. var orderedCrabs []int
  19. for _, numberString := range numberStrings {
  20. if numberString == "" {
  21. continue
  22. }
  23. if number, err := strconv.Atoi(numberString); err == nil {
  24. if _, ok := crabs[number]; !ok {
  25. orderedCrabs = append(orderedCrabs, number)
  26. }
  27. crabs[number]++
  28. } else {
  29. log.Fatal(err)
  30. }
  31. }
  32. sort.Ints(orderedCrabs)
  33. return crabs, orderedCrabs
  34. }
  35. func main() {
  36. if len(os.Args) < 2 {
  37. log.Fatal("Please provide a file name as argument")
  38. }
  39. crabs, orderedCrabs := readInput(os.Args[1])
  40. fmt.Println(crabs, orderedCrabs)
  41. }