From ff65becf7b552efa4bfc381020b85f449d1f3ef2 Mon Sep 17 00:00:00 2001 From: Daniel Aberger Date: Thu, 28 Apr 2022 16:56:42 +0200 Subject: add week 162, ch-1 in Go --- challenge-162/daniel-aberger/README | 2 ++ challenge-162/daniel-aberger/go/ch-1.go | 43 +++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 challenge-162/daniel-aberger/README create mode 100644 challenge-162/daniel-aberger/go/ch-1.go 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) + } +} -- cgit