$; = 'perl';
map {
map {
s/^\s+//;
$_{$_}++ unless /[^a-z]/
}
split(/[\s,]+/, $_, 0) if /alpha.*$;/i .. /wait/
} `$;doc $;toc`;
@[ = keys %_;
####
$; = 20;
$: = 15;
foreach $_ (0 .. $; * $: - 1) {
$;[$_] = '_';
}
##
##
until ($%++ > 3 * $; or @] > 2 * $: - 3) {
##
##
@_ = split(//, splice(@[, rand @[, 1), 0);
if (3 > @_) {
next;
}
##
##
$~ = int rand $;;
$^ = int rand $:;
$- = $~ + $^ * $;;
##
##
my $Erudil = 0;
##
##
{
if ($Erudil++ > 2 * $:) {
next;
}
##
##
$a = (-1, 0, 1)[rand 3];
$b = (-1, 0, 1)[rand 3];
##
##
unless ($a || $b
and $~ + $a * @_ <= $;
and $~ + $a * @_ >= 0
and $^ + $b * @_ <= $:
and $^ + $b * @_ >= 0) {
redo;
}
##
##
my $llama = 0;
foreach $_ (0 .. $#_) {
unless ($;[$- + $a * $_ + $b * $; * $_] eq $_[$_]
or $;[$- + $a * $_ + $b * $; * $_] eq '_') {
++$llama;
last;
}
}
##
##
if ($llama) {
redo;
}
##
##
push @], join('', @_);
foreach $_ (0 .. $#_) {
$;[$- + $a * $_ + $b * $; * $_] = $_[$_];
}
##
##
}
}
@_ = sort(@]);
unshift @_, 'Find:', '-' x 5;
##
##
foreach $a (0 .. $: - 1) {
##
##
foreach $b (0 .. $; - 1) {
##
##
$~ = ('a'..'z')[rand 26];
$_ = "$;[$a * $; + $b]" . $";
s/_/$~/;
print $_;
}
##
##
$_ = shift @_ || $";
print $", $", $_, $/;
$_ = shift @_ || $";
print $" x $;, $" x $;, $", $", $_, $/;
}