in reply to (Golf) Character windows

57
#23456789_123456789_123456789_123456789_123456789_1234567 $"='';@s=/./gs;@s=map"@s[($_<$s?0:$_-$s)..$_]",0..$s+$#s;
59
#23456789_123456789_123456789_123456789_123456789_123456789 $"='';@s=/./gs;@s=map"@s[($_<$s?0:$_-$s)..$_-1]",1..$s+$#s;
UPDATE
Trying to shorten this, I assumed that the string was in a variable $c, and did this:
@s=map{substr$c,$_<0?(0,$s+$_):($_,$s)}1-$s..length$c;
This fails. And it fails for reasons that illustrate very clearly why I think that prototypes are officially a Bad Thing. And so my substr based approach comes out at 58 with:
#23456789_123456789_123456789_123456789_123456789_12345678 @s=map{substr$c,$_<0?0:$_,$_<0?$s+$_:$s}1-$s..-1+length$c;
UPDATE 2
Oops, My initial solution produced an extra character. I am up to 58.

Replies are listed 'Best First'.
Re: Re (tilly) 1: (Golf) Character windows
by japhy (Canon) on Aug 24, 2001 at 06:40 UTC
    You still have empty strings returned. Here's my best:
    #23456789_123456789_123456789_123456789_123456789_123456789 $"='';@s=/./gs;@s=map"@s[($_<$s?0:$_-$s)..$_-1]",1..$s+$#s;

    _____________________________________________________
    Jeff[japhy]Pinyan: Perl, regex, and perl hacker.
    s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;