 laziness, impatience, and hubris PerlMonks

### A matrixy japh

by jryan (Vicar)
 on Aug 26, 2001 at 02:15 UTC Need Help??

```#!\perl\bin\perl -w
use strict;

my\$tm;foreach my\$i(0..78){\$tm.=chr(\$i+48);}my\$m=0;
my@ta;                                       foreac
h m  y\$y                                     (0.  .12
){f    ore                                   ach    my\$
n(0      ..5                                 ){\$      ta[
\$y]        [\$n                               ]=s        ubs
tr(          \$tm                             ,\$m          ,1)
;\$m++;}}sub encryptor{my\$w=shift;my(\$r,\$r1,\$r2,           \$c1
,\$c          2);                           for            (my
\$i=          0;\$                           i<l            eng
th(          \$w)                           ;\$i            +=2
){i          f(\$                           i<(            len
gth          (\$w                           )-1            )){
my\$          w1=                           sub            str
(\$w          ,\$i                           ,1)            ;my
\$w2          =su                           bst            r(\$
w,\$          i+1                           ,1)            ;fo
rea          ch                            my\$            y(0
..1          2){                           for            eac
hmy          \$n(                           0..            5){
if(          \$ta                           [\$y            ][\$
n]e          q\$w                           1){            \$r1
=\$y          ;\$c                           1=\$            n;}
}}f          ore                           ach            my\$
y(0          ..1                           2){            for
eac          h m                           y\$n            (0.
.5)          {if                           (\$t            a[\$
y][          \$n]                           eq\$            w2)
{\$r          2=\$y;\$c2=\$n;}}}if(\$r1==\$r2||\$c1==\$c2){\$r.=\$w2;\$
r.=          \$w1                           ; }           els
e {         \$r.                            =\$t         a[\$
r2]       [\$c                              1];        \$r.
=\$t     a[\$                                r1]      [\$c
2];   }}e                                  lse    {\$r
.=  sub                                    str  (\$w
,\$i,1)                                     ;}}ret
urn\$r;}my@j=("vits","mbunbkr","dqlr","bgiew`");

foreach my\$a(@j){print encryptor(\$a)," ";}

I'll be really impressed if someone took the time to figure this one out... its my first try at this, so i kinda went overboard :)

Replies are listed 'Best First'.
Re: A matrixy japh
by Zaxo (Archbishop) on Aug 26, 2001 at 04:07 UTC

There are problems with this code:

```\$ perl -c cube.pl
Missing \$ on loop variable at cube.pl line 4.
\$

You are sticking whitespace into keywords. Did you run it first, then format?

Form follows function.

After Compline,
Zaxo

Yeah, I did. It would be insane to try and code like that. I probably accidentally deleted a character or ran two things together. Here, ill post a non-obfu version: (although that ruins the fun!)

```#!\perl\bin\perl -w

use strict;

my \$tm;
foreach my \$i (0..78)
{
\$tm .= chr(\$i+48);
}
my \$m=0;
my @ta;
foreach my \$y (0..12)
{
foreach my \$n (0..5)
{
\$ta[\$y][\$n] = substr(\$tm, \$m, 1);
\$m++;
}
}

sub encryptor
{
my \$w = shift;
my (\$r, \$r1, \$r2, \$c1, \$c2);
for (my \$i=0; \$i<length(\$w); \$i+=2)
{
if (\$i<(length(\$w)-1))
{
my \$w1 = substr(\$w, \$i, 1);
my \$w2 = substr(\$w, \$i+1, 1);

foreach my \$y (0..12)
{
foreach my \$n (0..5)
{
if (\$ta[\$y][\$n] eq \$w1)
{
\$r1=\$y; \$c1=\$n;
}
}
}
foreach my \$y (0..12)
{
foreach my \$n (0..5)
{
if (\$ta[\$y][\$n] eq \$w2)
{
\$r2=\$y; \$c2=\$n;
}
}
}

if (\$r1 == \$r2 || \$c1 == \$c2)
{
\$r.=\$w2;
\$r.=\$w1;
}
else
{
\$r .= \$ta[\$r2][\$c1];
\$r .= \$ta[\$r1][\$c2];
}

}
else
{
\$r.=substr(\$w, \$i, 1);
}
}
return \$r;

}
my @j=("vits", "mbunbkr", "dqlr", "bgiew`");
foreach my \$a (@j){print encryptor(\$a), " ";}
It would be insane to try and code like that.

No it wouldn't. I strongly suggest you look at Erudil's camel code and how it works to find some creative ways to use eval.

You code is very nice looking, it's shame it doesn't run. You have enough room on the first edge of the cube to stick in something like s/\s+//g;eval that would transform the rest of the code into something that actually compiles.

Naturally it's not that easy, because you have to define \$_ (which will be after, since it's the rest of the cube). I am sure you can find a way to keep your code cube-shaped and make it run.

Create A New User
Node Status?
node history
Node Type: obfuscated [id://107862]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (11)
As of 2019-12-16 12:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?

No recent polls found

Notices?