条形码检查和校验 (#60)

阅读(457) 标签: 序列, 运算, split, step, sum,

l  问题

条形码扫描后是一个13位的数字字符串。为应对扫描错误的情况,条形码有“检查和”校验的方法,用于校验条形码是否有错。具体的计算规则为:

取出13位字符串的前12位数字,将每个奇数位的数字相加得到S1,将每个偶数位的数字相加得到S2,用S1减去S2,然后和10取余数,最后取绝对值,得到的数字应该等于第13位条码,如果不等则为错误的条形码。

请计算给定的条形码的正确性。

l  思路

大致思路:将给出的条形码的13位数字转化为序列,求出序列中前12位奇数位的数字之和后,再求出偶数位之和,将求得的两个数值做减法运算,所得的差对10求余后再取绝对值,最后判断所得的数值与条形码的最后一位数字是否相等。

l  代码

 

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的结果是否与条形码的最后一位相同

 

l  结果