Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. Stumped - How do I code this loop...

Stumped - How do I code this loop...

Scheduled Pinned Locked Moved C#
question
16 Posts 6 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Andy_L_J
    wrote on last edited by
    #1

    Given a List of Integers:

    List positions = new List{1,2,3,4,5};

    How would I code a loop to get the following results for a given number of iterations {n}:

    n P1 P2
    1 1 5
    2 2 1
    3 3 2
    4 4 3
    5 5 4
    6 1 5
    7 2 1
    8 3 2
    9 4 3
    10 5 4
    ...

    This should be simple but I have brain freeze.

    I don't speak Idiot - please talk slowly and clearly "I have sexdaily. I mean dyslexia. Fcuk!" Driven to the arms of Heineken by the wife

    G C 2 Replies Last reply
    0
    • A Andy_L_J

      Given a List of Integers:

      List positions = new List{1,2,3,4,5};

      How would I code a loop to get the following results for a given number of iterations {n}:

      n P1 P2
      1 1 5
      2 2 1
      3 3 2
      4 4 3
      5 5 4
      6 1 5
      7 2 1
      8 3 2
      9 4 3
      10 5 4
      ...

      This should be simple but I have brain freeze.

      I don't speak Idiot - please talk slowly and clearly "I have sexdaily. I mean dyslexia. Fcuk!" Driven to the arms of Heineken by the wife

      G Offline
      G Offline
      Garth J Lancaster
      wrote on last edited by
      #2

      p1 almost looks like n mod 5 + (5 iif prev result is 0) p2 almost looks like p1 - 1 + (5 iif prev result is 0) 'g'

      1 Reply Last reply
      0
      • A Andy_L_J

        Given a List of Integers:

        List positions = new List{1,2,3,4,5};

        How would I code a loop to get the following results for a given number of iterations {n}:

        n P1 P2
        1 1 5
        2 2 1
        3 3 2
        4 4 3
        5 5 4
        6 1 5
        7 2 1
        8 3 2
        9 4 3
        10 5 4
        ...

        This should be simple but I have brain freeze.

        I don't speak Idiot - please talk slowly and clearly "I have sexdaily. I mean dyslexia. Fcuk!" Driven to the arms of Heineken by the wife

        C Offline
        C Offline
        CPallini
        wrote on last edited by
        #3

        List<int> positions = new List<int> { 1, 2, 3, 4, 5 };
        for (int n = 1, p1 = 0, p2 = 4; n <= 10; ++n, ++p1, ++p2)
        {
        p1 %= positions.Count;
        p2 %= positions.Count;
        Console.WriteLine("{0,2} {1} {2}", n, positions[p1], positions[p2]);
        }

        THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

        A B 3 Replies Last reply
        0
        • C CPallini

          List<int> positions = new List<int> { 1, 2, 3, 4, 5 };
          for (int n = 1, p1 = 0, p2 = 4; n <= 10; ++n, ++p1, ++p2)
          {
          p1 %= positions.Count;
          p2 %= positions.Count;
          Console.WriteLine("{0,2} {1} {2}", n, positions[p1], positions[p2]);
          }

          THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

          A Offline
          A Offline
          Andy_L_J
          wrote on last edited by
          #4

          That works well and creates the list for n iterations. How about finding the value of p1 and p2 when n is a defined number?

          int n = 23;
          p1 = ?
          p2 = ?
          ...

          I don't speak Idiot - please talk slowly and clearly "I have sexdaily. I mean dyslexia. Fcuk!" Driven to the arms of Heineken by the wife

          C 1 Reply Last reply
          0
          • A Andy_L_J

            That works well and creates the list for n iterations. How about finding the value of p1 and p2 when n is a defined number?

            int n = 23;
            p1 = ?
            p2 = ?
            ...

            I don't speak Idiot - please talk slowly and clearly "I have sexdaily. I mean dyslexia. Fcuk!" Driven to the arms of Heineken by the wife

            C Offline
            C Offline
            CPallini
            wrote on last edited by
            #5

            If n starts with 1, then

            p1 = (n-1) % positions.Count;
            p2 = (positions.Count + n - 2) % positions.Count;

            THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

            A 1 Reply Last reply
            0
            • C CPallini

              List<int> positions = new List<int> { 1, 2, 3, 4, 5 };
              for (int n = 1, p1 = 0, p2 = 4; n <= 10; ++n, ++p1, ++p2)
              {
              p1 %= positions.Count;
              p2 %= positions.Count;
              Console.WriteLine("{0,2} {1} {2}", n, positions[p1], positions[p2]);
              }

              THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

              B Offline
              B Offline
              BillWoodruff
              wrote on last edited by
              #6

              +5 for this wonderful code "haiku" :)

              “I have diligently numbered the days of pure and genuine happiness which have fallen to my lot: They amount to 14.” Abd-Ar Rahman III, Caliph of Cordoba, circa 950CE.

              C 1 Reply Last reply
              0
              • B BillWoodruff

                +5 for this wonderful code "haiku" :)

                “I have diligently numbered the days of pure and genuine happiness which have fallen to my lot: They amount to 14.” Abd-Ar Rahman III, Caliph of Cordoba, circa 950CE.

                C Offline
                C Offline
                CPallini
                wrote on last edited by
                #7

                Thank you.

                THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

                1 Reply Last reply
                0
                • C CPallini

                  List<int> positions = new List<int> { 1, 2, 3, 4, 5 };
                  for (int n = 1, p1 = 0, p2 = 4; n <= 10; ++n, ++p1, ++p2)
                  {
                  p1 %= positions.Count;
                  p2 %= positions.Count;
                  Console.WriteLine("{0,2} {1} {2}", n, positions[p1], positions[p2]);
                  }

                  THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

                  B Offline
                  B Offline
                  BillWoodruff
                  wrote on last edited by
                  #8

                  I hope this doesn't sound picky-picky, but I kept studying the line of code that writes to the Console: Console.WriteLine("{0,2} {1} {2}", n, positions[p1], positions[p2]); Thinking that {0,2} did some exotic thing I had never seen before, but it appears it actually does nothing, and changing it to {0} produces no change in the output. Or, am I missing something ? Once again, thanks for the great code example: you've expanded my understanding of what a C# 'for loop can do ! thanks, Bill

                  “I have diligently numbered the days of pure and genuine happiness which have fallen to my lot: They amount to 14.” Abd-Ar Rahman III, Caliph of Cordoba, circa 950CE.

                  P Richard DeemingR 2 Replies Last reply
                  0
                  • B BillWoodruff

                    I hope this doesn't sound picky-picky, but I kept studying the line of code that writes to the Console: Console.WriteLine("{0,2} {1} {2}", n, positions[p1], positions[p2]); Thinking that {0,2} did some exotic thing I had never seen before, but it appears it actually does nothing, and changing it to {0} produces no change in the output. Or, am I missing something ? Once again, thanks for the great code example: you've expanded my understanding of what a C# 'for loop can do ! thanks, Bill

                    “I have diligently numbered the days of pure and genuine happiness which have fallen to my lot: They amount to 14.” Abd-Ar Rahman III, Caliph of Cordoba, circa 950CE.

                    P Offline
                    P Offline
                    Pete OHanlon
                    wrote on last edited by
                    #9

                    It's putting the space before the single digit numbers. Try changing it {0,4} to see the effect in greater detail.

                    C B 2 Replies Last reply
                    0
                    • B BillWoodruff

                      I hope this doesn't sound picky-picky, but I kept studying the line of code that writes to the Console: Console.WriteLine("{0,2} {1} {2}", n, positions[p1], positions[p2]); Thinking that {0,2} did some exotic thing I had never seen before, but it appears it actually does nothing, and changing it to {0} produces no change in the output. Or, am I missing something ? Once again, thanks for the great code example: you've expanded my understanding of what a C# 'for loop can do ! thanks, Bill

                      “I have diligently numbered the days of pure and genuine happiness which have fallen to my lot: They amount to 14.” Abd-Ar Rahman III, Caliph of Cordoba, circa 950CE.

                      Richard DeemingR Offline
                      Richard DeemingR Offline
                      Richard Deeming
                      wrote on last edited by
                      #10

                      The MSDN documentation is reasonably clear (for once!):

                      http://msdn.microsoft.com/en-us/library/system.string.format%28v=vs.110%29.aspx#FormatItem[^]

                      A format item has this syntax:

                      {index[,alignment][:formatString]}

                      ... alignment Optional. A signed integer that indicates the total length of the field into which the argument is inserted and whether it is right-aligned (a positive integer) or left-aligned (a negative integer). If you omit alignment, the string representation of the corresponding argument is inserted in a field with no leading or trailing spaces.


                      "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                      "These people looked deep within my soul and assigned me a number based on the order in which I joined" - Homer

                      C B 2 Replies Last reply
                      0
                      • P Pete OHanlon

                        It's putting the space before the single digit numbers. Try changing it {0,4} to see the effect in greater detail.

                        C Offline
                        C Offline
                        CPallini
                        wrote on last edited by
                        #11

                        Exactly.

                        THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

                        1 Reply Last reply
                        0
                        • Richard DeemingR Richard Deeming

                          The MSDN documentation is reasonably clear (for once!):

                          http://msdn.microsoft.com/en-us/library/system.string.format%28v=vs.110%29.aspx#FormatItem[^]

                          A format item has this syntax:

                          {index[,alignment][:formatString]}

                          ... alignment Optional. A signed integer that indicates the total length of the field into which the argument is inserted and whether it is right-aligned (a positive integer) or left-aligned (a negative integer). If you omit alignment, the string representation of the corresponding argument is inserted in a field with no leading or trailing spaces.


                          "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                          C Offline
                          C Offline
                          CPallini
                          wrote on last edited by
                          #12

                          Richard Deeming wrote:

                          he MSDN documentation is reasonably clear (for once!):

                          :-)

                          THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

                          1 Reply Last reply
                          0
                          • P Pete OHanlon

                            It's putting the space before the single digit numbers. Try changing it {0,4} to see the effect in greater detail.

                            B Offline
                            B Offline
                            BillWoodruff
                            wrote on last edited by
                            #13

                            Thanks Pete !

                            “I have diligently numbered the days of pure and genuine happiness which have fallen to my lot: They amount to 14.” Abd-Ar Rahman III, Caliph of Cordoba, circa 950CE.

                            1 Reply Last reply
                            0
                            • Richard DeemingR Richard Deeming

                              The MSDN documentation is reasonably clear (for once!):

                              http://msdn.microsoft.com/en-us/library/system.string.format%28v=vs.110%29.aspx#FormatItem[^]

                              A format item has this syntax:

                              {index[,alignment][:formatString]}

                              ... alignment Optional. A signed integer that indicates the total length of the field into which the argument is inserted and whether it is right-aligned (a positive integer) or left-aligned (a negative integer). If you omit alignment, the string representation of the corresponding argument is inserted in a field with no leading or trailing spaces.


                              "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                              B Offline
                              B Offline
                              BillWoodruff
                              wrote on last edited by
                              #14

                              Thanks, Richard !

                              “I have diligently numbered the days of pure and genuine happiness which have fallen to my lot: They amount to 14.” Abd-Ar Rahman III, Caliph of Cordoba, circa 950CE.

                              1 Reply Last reply
                              0
                              • C CPallini

                                If n starts with 1, then

                                p1 = (n-1) % positions.Count;
                                p2 = (positions.Count + n - 2) % positions.Count;

                                THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

                                A Offline
                                A Offline
                                Andy_L_J
                                wrote on last edited by
                                #15

                                Here what I ended up using:

                                public List GetPositions(int n, int posCount)
                                {
                                int pos1 = n % posCount;
                                int pos2 = pos1 == 0 ? posCount - 1 : pos1 - 1;
                                return new List{pos1, pos2};
                                }
                                ...
                                int n = 0;
                                List positions = new List{0,1,2,3,4};
                                while( n < 10)
                                {
                                List res = GetPositions(n, positions.Count)
                                Console.WriteLine("Count{0}: Pos1 {1} - Pos2 {2}", n, res[0], res[1]);
                                n++;
                                }

                                Thanks to you and G for your help clearing the fog!

                                I don't speak Idiot - please talk slowly and clearly "I have sexdaily. I mean dyslexia. Fcuk!" Driven to the arms of Heineken by the wife

                                C 1 Reply Last reply
                                0
                                • A Andy_L_J

                                  Here what I ended up using:

                                  public List GetPositions(int n, int posCount)
                                  {
                                  int pos1 = n % posCount;
                                  int pos2 = pos1 == 0 ? posCount - 1 : pos1 - 1;
                                  return new List{pos1, pos2};
                                  }
                                  ...
                                  int n = 0;
                                  List positions = new List{0,1,2,3,4};
                                  while( n < 10)
                                  {
                                  List res = GetPositions(n, positions.Count)
                                  Console.WriteLine("Count{0}: Pos1 {1} - Pos2 {2}", n, res[0], res[1]);
                                  n++;
                                  }

                                  Thanks to you and G for your help clearing the fog!

                                  I don't speak Idiot - please talk slowly and clearly "I have sexdaily. I mean dyslexia. Fcuk!" Driven to the arms of Heineken by the wife

                                  C Offline
                                  C Offline
                                  CPallini
                                  wrote on last edited by
                                  #16

                                  You are welcome.

                                  THESE PEOPLE REALLY BOTHER ME!! How can they know what you should do without knowing what you want done?!?! -- C++ FQA Lite

                                  1 Reply Last reply
                                  0
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes


                                  • Login

                                  • Don't have an account? Register

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • Categories
                                  • Recent
                                  • Tags
                                  • Popular
                                  • World
                                  • Users
                                  • Groups