Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

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,
Flexx

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (3)
As of 2018-11-15 06:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My code is most likely broken because:
















    Results (181 votes). Check out past polls.

    Notices?