icps

notes

Faker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
func checkIDCode(IDNum string) bool {
    var sum int
    idTableCh := strings.Split("FBEAHDNTPJKQMGOCUIVWXZ", "")
    idTableValue := []int{15, 11, 14, 10, 17, 13, 22, 27, 23, 18, 19, 24, 21, 16, 35, 12, 28, 34, 29, 32, 30, 33}

    for idx, c := range idTableCh {
        if c == string(IDNum[0]) {
            v := idTableValue[idx]
            s := (v%10)*9 + (v / 10)
            sum += s
            break
        }
    }

    for idx, n := range IDNum[1:9] {
        i, _ := strconv.Atoi(string(n))
        sum += i * (8 - idx)
    }
    i, _ := strconv.Atoi(string(IDNum[9]))
    sum += i
    return (sum%10 == 0)
}

func checkCompanyCode(num string) bool {
    cc := []int{1, 2, 1, 2, 1, 2, 4, 1}
    var sum int

    for idx, e := range num {
        s := int((e - 48)) * cc[idx]
        t := s/10 + s%10
        sum += t
    }
    return (sum)%10 == 0 || (string(num[6]) == "7" && (sum+1)%10 == 0)
}