20 lines
535 B
Text
20 lines
535 B
Text
upcdigit=:".;._2]0 :0
|
|
0 0 0 1 1 0 1 NB. 0
|
|
0 0 1 1 0 0 1 NB. 1
|
|
0 0 1 0 0 1 1 NB. 2
|
|
0 1 1 1 1 0 1 NB. 3
|
|
0 1 0 0 0 1 1 NB. 4
|
|
0 1 1 0 0 0 1 NB. 5
|
|
0 1 0 1 1 1 1 NB. 6
|
|
0 1 1 1 0 1 1 NB. 7
|
|
0 1 1 0 1 1 1 NB. 8
|
|
0 0 0 1 0 1 1 NB. 9
|
|
)
|
|
|
|
upc2dec=:3 :0
|
|
if. 95~: #code=. '#'=dtb dlb y do._ return.end.
|
|
if. (11$1 0) ~: 0 1 2 45 46 47 48 49 92 93 94{ code do._ return. end.
|
|
digits=. <./([:,upcdigit i.0 1~:(3 50+/i.6 7) { ])"1 code,:|.code
|
|
if. 10 e.digits do._ return.end.
|
|
if.0 ~:10|digits+/ .* 12$3 1 do._ return.end.
|
|
)
|