I'm trying to keep this in terms that someone in an introductory CS class would be equipped to grasp. Therefore, I'm not using an array, Perl's higher-order functions, etc. And as you requested, I'm using a single loop; no hidden implicit ones, just a single flat loop. The modulus operator should be taught in the first week or two of any intro to CS course.

foreach ( 1 .. 64 ) { print "\n" if ( $_ - 1 ) % 8 == 0; print "$_ "; }

The foreach loop iterates over the numbers 1 through 64, inclusive. On each iteration, the variable "$_" holds the value for a single integer within the range of 1 through 64.

First, we test whether "number minus one, mod eight" is zero. In other words, using integer math, whether the number minus one, divided by eight, has no remainder. If there is no remainder, print a newline character.

Then proceed to print the number itself.

Then iterate again.

Actually the formatting would be a little cleaner if you test for a remainder of 7, and in that case print a newline after the number:

foreach ( 1 .. 64 ) { print "$_ "; print "\n" if ( $_ - 1 ) % 8 == 7; }

For purists, there is a hidden loop, but it's not a part of our algorithm; constructing the range 1 .. 64 to iterate over is done by Perl using an internal loop. If we really wanted to keep it pure, we could use "while", or a C-style for.


Dave


In reply to Re^4: Chess Board Single Loop by davido
in thread Chess Board Single Loop by xantithor

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.