[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [FWP] APL vs. Perl. A query from a lazy programmer.



Ian Phillipps wrote:
> The topic of APL came up today, and I recalled an APL one-liner (about
> 150 chars if I recall) that printed a set of 4 Bridge hands in the
> conventional layout.

As usual, my solution is more brute-force than clever.
Think of it as a reference implementation. :-)


my @r = ( 1 .. 9, qw( T J Q K ) );
my %r; @r{ @r } = 0 .. $#r;

my @d = map { my $s = $_; map { [ $s, $_ ] } @r } qw( S H D C );

for ( reverse 1 .. $#d ) { my $r = int rand $_; @d[$r,$_] = @d[$_,$r] }

my @h;
for my $i ( 0 .. $#d ) {
  push @{ $h[$i&3]{ $d[$i][0] } }, $d[$i][1];
}

for my $hi ( 0 .. $#h ) {
  $"='';
  $h[$hi] = [ map { "$_: @{[ sort { $r{$b} <=> $r{$a}  }
  @{ $h[$hi]{$_} } ]}" } qw( S H D C ) ];
}

print i( $h[0] ), p( $h[3], $h[1] ), i( $h[2] );

sub p { map { sprintf "%-20s%s\n", $_[0][$_], $_[1][$_] } 0..3 }

sub i { map { sprintf "%-10s%s\n", '', $_[0][$_]; } 0..3 }


-- 
John Porter

Ann wenno haddum billizac...


==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
==== Send email to <fwp-request@technofile.org> with message _body_
====   unsubscribe