diff options
| -rw-r--r-- | challenge-162/daniel-aberger/README | 2 | ||||
| -rw-r--r-- | challenge-162/daniel-aberger/go/ch-1.go | 43 |
2 files changed, 45 insertions, 0 deletions
diff --git a/challenge-162/daniel-aberger/README b/challenge-162/daniel-aberger/README new file mode 100644 index 0000000000..67c2817654 --- /dev/null +++ b/challenge-162/daniel-aberger/README @@ -0,0 +1,2 @@ +Solutions by Daniel Aberger. + diff --git a/challenge-162/daniel-aberger/go/ch-1.go b/challenge-162/daniel-aberger/go/ch-1.go new file mode 100644 index 0000000000..ef46a5d6f8 --- /dev/null +++ b/challenge-162/daniel-aberger/go/ch-1.go @@ -0,0 +1,43 @@ +package main + +import ( + "fmt" + "os" + "strconv" +) + +func main() { + input := os.Args[1] + isbn := make([]int, 0) + for _, r := range input { + i, err := strconv.Atoi(string(r)) + if err != nil { + continue + } + isbn = append(isbn, i) + } + if len(isbn) < 12 || len(isbn) > 13 { + fmt.Println("ISBN malformed") + os.Exit(1) + } + sum := 0 + for k, v := range isbn { + if k == 12 { + break + } + if k%2 == 1 { + sum += v * 3 + } else { + sum += v + } + } + if len(isbn) == 13 { + if 10-sum%10 == isbn[12] { + fmt.Println("correct checksum!") + } else { + fmt.Println("incorrect checksum!") + } + } else { + fmt.Printf("checksum: %d\n", 10-sum%10) + } +} |
