P is for Practical | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
oiskuu’s last variant is 87 bytes long: s!.!sprintf("%b ",2+index"etianmsurwdkgohvfüläpjbxcyzqö",lc$&)=~s/.//r=~y/01/.-/r!ge By assigning to $_, we can scrap the parentheses and the two =~, saving two bytes: s!.!$_=sprintf"%b ",2+index"etianmsurwdkgohvfüläpjbxcyzqö",lc$&;s/.//;y/01/.-/r!ge Dropping the support for diacritics (only ü, ä and ö where supported anyway) easily saves another five bytes: s!.!$_=sprintf"%b ",2+index etianmsurwdkgohvfXlXpjbxcyzq,lc$&;s/.//;y/01/.-/r!ge With some shuffling around, we can shave off another byte: (note that this version prints a leading whitespace, while the previous ones printed a trailing whitespace) s!.!sprintf" %b",2+index etianmsurwdkgohvfXlXpjbxcyzq,lc$&!ge;s/ ./ /g;y/01/.-/ Using a regex instead of index saves yet another byte, now down to 78: s!.!XetianmsurwdkgohvfXlXpjbxcyzq=~lc$&;sprintf" %b","@+"!ge;s/ ./ /g;y/01/.-/ Finally, here’s a 87 bytes variant that doesn’t require the -p flag. It’s longer by StackExchange’s standard (where -p counts as a single additional byte), but shorter for codegolf.com, where you would have to write the entire 10-byte shebang line. print+sprintf("%b ","@+")=~s/.//r=~y/01/.-/rwhile-etianmsurwdkgohvfXlXpjbxcyzq=~lc getc I think there’s still room for improvement. In reply to Re^2: Using the olde times internet
by Anonymous Monk
|
|