k.go 723 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package kata
  2. import (
  3. "fmt"
  4. "strings"
  5. )
  6. func initCounts(listCat []string) map[string]int {
  7. cats := map[string]int{}
  8. for _, s := range listCat {
  9. cats[s[:1]] = 0
  10. }
  11. return cats
  12. }
  13. func StockList(listArt []string, listCat []string) string {
  14. if len(listArt) == 0 || len(listCat) == 0 {
  15. return ""
  16. }
  17. cats := initCounts(listCat)
  18. var art string
  19. var count int
  20. for _, invent := range listArt {
  21. fmt.Sscanf(invent, "%s %d", &art, &count)
  22. _, ok := cats[art[:1]]
  23. if !ok {
  24. continue
  25. }
  26. cats[art[:1]] += count
  27. }
  28. slCounts := make([]string, len(cats))
  29. for i, cat := range listCat {
  30. slCounts[i] = fmt.Sprintf("(%s : %d)", cat, cats[cat])
  31. i++
  32. }
  33. counts := strings.Join(slCounts, " - ")
  34. return counts
  35. }