UPC: Difference between revisions

475 bytes added ,  4 years ago
→‎{{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:=
Anonymous user