in reply to (GOLF) combine N arrays

I wrote stuff about that here. They're called "cartesian cross-products". Someone golfed it once... I'll look for it.

_____________________________________________________
Jeff[japhy]Pinyan: Perl, regex, and perl hacker, who'd like a (from-home) job
s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;

Replies are listed 'Best First'.
Re: Re: (GOLF) combine N arrays
by lshatzer (Friar) on Apr 15, 2002 at 20:41 UTC
      Ha, mine is VERY similar to that, except I used a recursive function with nested map instead of a reversed for.. very nice...

      Ungolfed:

      sub foo { my $a = shift @_; return [] unless $a; map { my $b = $_; map { [$_,@$b] } @$a } foo(@_); }

                      - Ant
                      - Some of my best work - (1 2 3)

        I was playing with something very similar to this but it wasn't coming out right. I gave up after an hour or so to go tackle another problem that didn't get solved (bike repair).
        sub foo{ my $F= shift; @G = @_ ? @{foo(@_)} : [] x scalar @$F; foreach my $e (@$F){ push @H, map {[unshift @{$_}, "$e($i)"]} @G; } \@H; }
        That was of course just trying to get it to work, a proper golf would have been shorter.

        --
        perl -pe "s/\b;([mnst])/'\1/mg"