Snobol4【1】 语言实战:身份证号【2】校验码【3】计算实战
Snobol4 是一种古老的编程语言,由David J. Farber、Ralph E. Griswold 和 Ivan P. Polonsky 在1962年设计。它以其简洁的语法和强大的字符串处理能力而闻名。本文将围绕 Snobol4 语言,通过一个实际案例——身份证号校验码计算,来展示 Snobol4 的魅力。
身份证号校验码简介
身份证号是每个中国公民的唯一标识,由18位数字组成。其中,最后一位是校验码,用于验证身份证号的正确性。校验码的计算方法如下:
1. 将前17位数字分别乘以不同的系数【4】。从第一位到第十七位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。
2. 将这17个乘积相加。
3. 将相加后的和除以11,得到余数【5】。
4. 根据余数,通过查表【6】得到对应的校验码。
校验码对应表如下:
| 余数 | 校验码 |
| ---- | ------ |
| 0 | 1 |
| 1 | 0 |
| 2 | X |
| 3 | 9 |
| 4 | 8 |
| 5 | 7 |
| 6 | 6 |
| 7 | 5 |
| 8 | 4 |
| 9 | 3 |
| 10 | 2 |
Snobol4 语言身份证号校验码计算
下面是使用 Snobol4 语言编写的身份证号校验码计算程序【7】:
```snobol
:IDNUM 18! 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
:CHECK 0! 1 0 'X 9 8 7 6 5 4 3 2
:SUM 0!
:INDEX 0!
:CHECKNUM 0!
PUT【8】 IDNUM
PUT ' ' 0
PUT ' ' 1
PUT ' ' 2
PUT ' ' 3
PUT ' ' 4
PUT ' ' 5
PUT ' ' 6
PUT ' ' 7
PUT ' ' 8
PUT ' ' 9
PUT ' ' 10
PUT ' ' 11
PUT ' ' 12
PUT ' ' 13
PUT ' ' 14
PUT ' ' 15
PUT ' ' 16
PUT ' ' 17
DO 1
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
PUT ' '
GET IDNUM
PUT IDNUM
Comments NOTHING