条形码检查和校验 (#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() |
4 |
=A2.step(2,2).sum() |
5 |
=abs((A3-A4)%10) |
6 |
=A5==A2.m(-1) |
A1填入条形码,由于要求条形码为字符串,因此以'作为开头。SPL中以'开头的常数格会被解析为字符串。
A2将条形码逐字符拆分为序列,添加@p选项后会对解析每个成员的字符串为相应的数据类型,这里会把它们转换为整数:
A3计算前12位奇数位的数字之和S1,A4计算偶数位的数字之和S2。A5计算出验证值。A6判断验证值是否与第13位相等:
英文版