首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证条形码

验证条形码
EN

Code Golf用户
提问于 2018-10-22 13:09:52
回答 7查看 1K关注 0票数 3

EAN-13 符号学条形码由13位数字(0-9)组成.这个条形码的最后一个数字是它的校验位。计算方法如下(以条形码8923642469559为例):

  1. 从第二个数字开始,将所有交替数字相加,乘以3: 8 9 2 3 6 4 4 4 9 5 5 9 x=3+4+4+9+5= 34 x= 102
  2. 然后,将所有剩余数字加起来,但不包括最后一位数:8 9 2 3 6 4 4 6 9 5 5 9收8+2+2+6+5= 29
  3. 将步骤1和步骤2中获得的数字相加: 29 + 102 = 131
  4. 要到达10的下一个倍数(在本例中为140),应该添加到步骤3的结果中的数字是复选数字。

如果条形码的检查数字与前面解释的检查数字匹配,则条形码是有效的。

更多的例子:

6537263729385是有效的。1902956847427是有效的。9346735877246无效。检查数字应该是3,而不是6。

您的目标是编写一个程序,以便:

  1. 接收条形码作为输入。
  2. 检查条形码是否有效
  3. 如果条形码有效,返回1(或等效),否则返回0(或等效)。

这是密码-高尔夫,所以以字节表示的最短代码获胜。

EN

回答 7

Code Golf用户

发布于 2018-10-22 13:19:17

Python 3,55字节

代码语言:javascript
复制
lambda s:not sum(int(i)*d for i,d in zip(s,[1,3]*7))%10

在网上试试!

票数 2
EN

Code Golf用户

发布于 2018-10-22 13:23:30

果冻,10字节

代码语言:javascript
复制
D0;s2Sḅ3⁵ḍ

在网上试试!

-4字节(感谢Kevin Cruijssen )(半端口@Dennis)

票数 1
EN

Code Golf用户

发布于 2018-10-22 13:35:26

杰夫特 -!,14字节

代码语言:javascript
复制
¬Ë*(Ev ª3Ãx %A
代码语言:javascript
复制
¬Ë*(Ev ª3Ãx %A  Full prgram.
¬               Convert to array -_-
 Ë              Map
  *             Multiply current number by
   (Ev ª3Ã      1 if index is even, else 3
          x     sum
           %A   mod 10?

在网上试试!

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/174495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档