$;^=$;;$:='+';${::}{$:}=$_,for{},[];$==65;@+=map{$=<<=1; $=^=131,if+128&$=;chr$=}0..1<<8;@+{@+}=(0..126)x$=;print map{$:=$+[$+{$:}+$+{z}];$/=$;;$/=$;eq$/?$_:$+[$+{$/}+$+{ $:}]^$_,for@_;$/}@_=split//,'C|fqF[Ja-Dh{wzZf8t})1N@C:';

My second contribution here does not like strictures, I admit, but mostly for aesthetical reasons. With a rather simple change it would. And ambrus is right: This kind is somewhat less like minigolf.

Replies are listed 'Best First'.
Re: Dollar Plus
by ambrus (Abbot) on Oct 01, 2010 at 17:51 UTC

    The story of this obfuscation is this. When martin posted the obfuscation ASCII arithmetic, I praised it in the chatterbox, but mentioned that it would be even more amazing if one could have a similar obfuscation that

    worked over the GF(128) field.
    martin replied with this obfu the day after, which indeed does what I asked for.

    Again, the characters long string literal gives the coefficients of a polynomial. This time, however, the values are over GF(128), represented in the obvious way, with the bit i of the character adding g**i to the value where g is a generator of the field. The first map loop generates the first 257 powers of g, writing them to @+. Then this table is inverted to %+ which functions as a discrete logarithm table. This allows one to compute the product of two values $x, $y as simply $+[$+{$x}+$+{$y}] (except when one of the values is zero for which an extra test $;eq$/ is needed at one place). The polynomial is again evaluated at a points in a geometric series.

    Of course, some obfuscations have multiple layers, so one can't easily be sure one does what it looks like. Thus, I verified that my thinking is right by trying to construct a new polynomial.

    $;^=$;;$:='+';${::}{$:}=$_,for{},[];$==65;@+=map{$=<<=1; $=^=131,if+128&$=;chr$=}0..1<<8;@+{@+}=(0..126)x$=;print map{$:=$+[$+{$:}+$+{z}];$/=$;;$/=$;eq$/?$_:$+[$+{$/}+$+{ $:}]^$_,for@_;$/}@_=split//,"gi!EVpr/'Vts\6X0Kw\tZj'TF". "\36\5\e?S\b/1! P84&p{\\0FY[\aW%\ck";
Re: Dollar Plus
by ambrus (Abbot) on Oct 02, 2010 at 21:30 UTC