Skip to content

Instantly share code, notes, and snippets.

@overloadedargs
Created April 23, 2020 16:34
Show Gist options
  • Save overloadedargs/5b61ab15c598c825f2aa1a968837ae43 to your computer and use it in GitHub Desktop.
Save overloadedargs/5b61ab15c598c825f2aa1a968837ae43 to your computer and use it in GitHub Desktop.
Isbn checkdigits
package main
import "fmt"
import "strings"
import "strconv"
func isbn10(s string) string {
ss := strings.Split(s, "")
sum := 0
for i := 0; i < 9; i++ {
n, _ := strconv.Atoi(ss[i])
n = (10 - i) * n
sum += n
}
r := 11 - (sum % 11)
if (r == 10) {
return "X"
}
t := strconv.Itoa(r)
return t
}
func isbn13(s string) string {
ss := strings.Split(s, "")
sum := 0
for i := 0; i < 12; i++ {
n, _ := strconv.Atoi(ss[i])
if (i % 2 != 0) {
sum += n * 3
} else {
sum += n
}
}
r := 10 - (sum % 10)
if (r == 10) {
return "0"
}
t := strconv.Itoa(r)
return t
}
func main() {
s := isbn10("061826941")
t := isbn10("831312744")
u := isbn10("830332744")
fmt.Println(s)
fmt.Println(t)
fmt.Println(u)
x := isbn13("978316148410")
y := isbn13("978030640615")
z := isbn13("978316148442")
fmt.Println(x)
fmt.Println(y)
fmt.Println(z)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment