条形码检查和校验 (#60)
问题
条形码扫描后是一个 13 位的数字字符串。为应对扫描错误的情况,条形码有“检查和”校验的方法,用于校验条形码是否有错。具体的计算规则为:
取出 13 位字符串的前 12 位数字,将每个奇数位的数字相加得到 S1,将每个偶数位的数字相加得到 S2,用 S1 减去 S2,然后和 10 取余数,最后取绝对值,得到的数字应该等于第 13 位条码,如果不等则为错误的条形码。
请计算给定的条形码的正确性。
思路
大致思路:将给出的条形码的 13 位数字转化为序列,求出序列中前 12 位奇数位的数字之和后,再求出偶数位之和,将求得的两个数值做减法运算,所得的差对 10 求余后再取绝对值,最后判断所得的数值与条形码的最后一位数字是否相等。
代码
A | ||
---|---|---|
1 | ="1234567890123" | 给出的条形码 |
2 | =A1. split@p() | 将条形码转化为序列 |
3 | =A2(to(12)).step(2,1).sum() | 前 12 位奇数位的数字之和 |
4 | =A2(to(12)).step(2,2).sum() | 计前 12 位偶数位的数字之和 |
5 | =abs((A3-A4)%10) | 奇数位之和减去偶数位之和再对 10 求余最后取绝对值 |
6 | =A5==A2.m(-1) | 判断 A5 的结果是否与条形码的最后一位相同 |
英文站