in reply to Chess Board Single Loop

my %CHESS; foreach (1...8) { $CHESS{$_}{$_} = $_*$_ };

Replies are listed 'Best First'.
Re^2: Chess Board Single Loop
by xantithor (Novice) on Oct 05, 2013 at 18:27 UTC
    For the fun of it I want to try the same thing, however with random variable numbers.
    #!/usr/bin/perl -w use strict; my $num1; my $num2; print "Enter in a whole number: "; chomp ($num1 = <STDIN>); print "Enter in another whole number: "; chomp ($num2 = <STDIN>); print "\n"; foreach ( $num1 .. $num2 ) { print "$_ "; print "\n" if ( $_ == ($num1 +4) ); }
    the last line of the code I am stumped on. I want it to start a new line after five numbers. It works if the number range is smaller than 10 numbers, however if I expand past 10 numbers it keeps on trucking.

      $_ == ($num1 +4) will only ever be true once at most; if $num2 is small enough, it will never be true.

      Given the number of times "%" (the modulo operator) has been mentioned in this thread, I'm surprised you haven't looked into it. [follow the link I've provided for details of this operator]

      To produce a newline after every 5 numbers, you'll need to change

      print "\n" if ( $_ == ($num1 +4) );

      to something like

      print "\n" unless ($_ - $num1 + 1) % 5;

      You may need to sit down with paper and pencil to understand why this code works. That would probably be time well spent.

      -- Ken

        Thank-you Ken. I initially was using the % in the formula, and it didn't work each attempt I made. I ended up convincing myself that % wasn't needed due to it didn't work. The simplicity of adding in + 1 into the formula never entered my mind.