validateRow.go 652 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package server
  2. func (server *Server) validateRow(row string) (valid bool) {
  3. // Declarations baby!
  4. valid = true
  5. var found bool
  6. var double bool
  7. count := make(map[rune]int)
  8. // 1. Make sure row is 9 in length
  9. if len(row) != 9 {
  10. valid = false
  11. }
  12. // 2. Ensure all digits are numbers
  13. for _, value := range row {
  14. found = server.validChar(value)
  15. }
  16. if !found {
  17. valid = false
  18. }
  19. // 3. Ensure all digits (except zero) are only present once
  20. for _, digits := range row {
  21. count[digits] = count[digits] + 1
  22. }
  23. for key, value := range count {
  24. if value > 1 && key != 48 {
  25. double = true
  26. }
  27. }
  28. if double {
  29. valid = false
  30. }
  31. return
  32. }