in reply to Re: Chess Board Single Loop
in thread Chess Board Single Loop

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.

Replies are listed 'Best First'.
Re^3: Chess Board Single Loop
by kcott (Archbishop) on Oct 05, 2013 at 19:11 UTC

    $_ == ($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.