Anonymous user
UPC: Difference between revisions
→{{header|zkl}}: added regular expression version
(→{{header|Perl 6}}: Added Perl 6 solution) |
(→{{header|zkl}}: added regular expression version) |
||
Line 343:
if(tail!=barcode[idx,7]) return(Void); // 9 trailing blanks? two checked above
r
}</lang>
Or, if you like way too long regular expressions:
<lang zkl>var upcRE = (String("_"*9, "+#_#",
lhd.keys.concat("|","(",")")*6, "_#_#_",
rhd.keys.concat("|","(",")")*6, "#_#", "_"*9) : RegExp(_)),
digits=lhd.copy().extend(rhd);
fcn parseBarCode2(barcode){ // --> 12 digits
if(not (upcRE.search(barcode) or upcRE.search(barcode.reverse()))) return(False);
upcRE.matched[1,*] // ( (a,b), "_#_####","_##___#", 10 more digit patterns )
.apply(digits.get)
}</lang>
<lang zkl>barcodes:=
|