Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Perl Card Trick

by Flexx (Pilgrim)
on Sep 15, 2002 at 06:10 UTC ( #198000=note: print w/replies, xml ) Need Help??

in reply to Perl Card Trick

Hi again,

BTW, nice post, Lysander, I really got hung on that one...

Below is my quickshot version. Of course, a serious version of this would need input checks, etc., etc. I was just courious how I'd do this in a generalized way, using a flat array (like a talon of cards). This version allows for matrices of arbitrary dimensions.

The print_matrix sub should therefore also be generic for all (quadratic) arrays -- where sqrt(@array) returns a natural number (an integer).

#!/usr/bin/perl use strict; my $dimension = shift || 4; my @card_matrix = (1 .. $dimension ** 2); print_matrix(@card_matrix); print "\nrow? : "; my $row = <STDIN>; chomp($row); print_matrix(reverse @card_matrix); print "\ncol? : "; my $col = <STDIN>; chomp($col); print "\nsolution: ", $card_matrix[($row - 1) * $dimension + ($dimension - $col)]; sub print_matrix { my @matrix = @_; my $dimension = sqrt(@matrix); printf "\n" . "\t[%d]" x $dimension, (1..$dimension); for(my $row = 0; $row < $dimension; $row++) { printf "\n[%d]" . "\t%d" x $dimension, $row + 1, @matrix[$row * $dimension .. $row * $dimension ++ $dimension - 1]; } }

So long,

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://198000]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (6)
As of 2022-10-05 08:25 GMT
Find Nodes?
    Voting Booth?
    My preferred way to holiday/vacation is:

    Results (21 votes). Check out past polls.