programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
• Campbell Ritchie
• Paul Clapham
• Ron McLeod
• Jeanne Boyarsky
• Tim Cooke
Sheriffs:
• Liutauras Vilda
• paul wheaton
• Henry Wong
Saloon Keepers:
• Tim Moores
• Tim Holloway
• Stephan van Hulst
• Carey Brown
• Frits Walraven
Bartenders:
• Piet Souris
• Himai Minh

# Determine logical pattern for loop

Greenhorn
Posts: 6
• Number of slices to send:
Optional 'thank-you' note:
I'm trying to write a loop that will print to the buffer based on the following conditions:

The example above is a dumbed down version of what I'm trying to do, I'm mainly interested in the logic. Please assume that variables a and b will have an infinite amount of numbers -- for the sake of this example. The main point that i'm trying to illustrate is the pattern in the variables a and b; a starts with 0 and 1, and then every other two numbers are found in the variable a, and the opposite for b. I'm trying to figure out how to write logic that will print out values a or b based on the pattern described above inside a loop.

Bartender
Posts: 6109
6
• Number of slices to send:
Optional 'thank-you' note:
.

Jeff Verdegan
Bartender
Posts: 6109
6
• Number of slices to send:
Optional 'thank-you' note:

bob fissle wrote:I'm trying to write a loop that will print to the buffer based on the following conditions:

The example above is a dumbed down version of what I'm trying to do, I'm mainly interested in the logic. Please assume that variables a and b will have an infinite amount of numbers -- for the sake of this example. The main point that i'm trying to illustrate is the pattern in the variables a and b; a starts with 0 and 1, and then every other two numbers are found in the variable a, and the opposite for b. I'm trying to figure out how to write logic that will print out values a or b based on the pattern described above inside a loop.

OHH! Now I think I get it.

What you want is for a and b to be Collections, not ints. For instance, a could be a Set containing 0, 1, 4, 5, etc., and b could be a Set containing the other numbers. Then your loop body is just

Further, if every possible value of i will be in either a or b--that is, no skipped values--then you don't even need the b set.

bob fissle
Greenhorn
Posts: 6
• Number of slices to send:
Optional 'thank-you' note:
Sorry for the confusion, I'll try to elaborate a bit more. Here's few examples of what I would want as output within the context of a loop...

I'm hoping the example above illustrates the output that I'm seeking more clearly. As far as logic goes, I'm trying to determine a way to replicate the above. However, I DON'T want to hardcode all possible values for variables a and b. Meaning, I don't want to create an Integer Array List for a and b and than check if the current value of i is in the Array List. I'm wondering if there's a slick way to replicate the pattern shown above. Is this possible?

I DON'T want to do this

Jeff Verdegan
Bartender
Posts: 6109
6
• Number of slices to send:
Optional 'thank-you' note:

bob fissle wrote:
I DON'T want to hardcode all possible values for variables a and b

So, is there a pattern, a set of rules, that determines which numbers are in set A and which are in set B? If so, write code that matches that pattern. If you need help with that, you'll have to spell out the rules clearly and precisely.

And if there's not some pattern, then just read the numbers from a file or user input or whatever is appropriate at runtime.

I it's clear that the only two possibilities are either rules to describe the pattern, or else providing the actual values explicitly. I hope it's also clear that this fact has nothing to do with Java and is simply a universal truth derived from common logic.

bob fissle
Greenhorn
Posts: 6
• Number of slices to send:
Optional 'thank-you' note:

Jeff Verdegan wrote:

bob fissle wrote:
So, is there a pattern, a set of rules, that determines which numbers are in set A and which are in set B? If so, write code that matches that pattern. If you need help with that, you'll have to spell out the rules

That's the main issue that I'm having, determining a way to code the "rule"/pattern.

Here's the pattern again:

a = 0,1,4,5,8,9,12,13,16,17 and son on..
b = 2,3,6,7,10,11,14,15,18,19 and so on..

a starts the pattern with 0 and 1 and includes other next set of consecutive numbers -- i hope that makes sense. Does this pattern make sense? If so, is there a way to place this pattern into code?

Jeff Verdegan
Bartender
Posts: 6109
6
• Number of slices to send:
Optional 'thank-you' note:

bob fissle wrote:

That's the main issue that I'm having, determining a way to code the "rule"/pattern.

If you can't describe it clearly and precisely in English, then it's impossible to write code for it in any language.

Here's the pattern again:

a = 0,1,4,5,8,9,12,13,16,17 and son on..
b = 2,3,6,7,10,11,14,15,18,19 and so on..

I don't see any pattern, or any "and so on". I have no idea which set 20, 21, 22, 23 go into, or why.

a starts the pattern with 0 and 1 and includes other next set of consecutive numbers

It's clear that A starts with 0, 1 and includes the numbers that are listed consecutively after A, but that doesn't mean anything.

EDIT: Okay, now I see the pattern. I was just slow to pick up on it.

Yes, that's quite easy to code, but I'm going to leave it up to you to describe the pattern in English and/or algebraic terms first. It will be a good exercise.

Ranch Hand
Posts: 253
• 1
• Number of slices to send:
Optional 'thank-you' note:
Are you really looking for the pattern 0,1,4,5,8,9...? or 2,3,6,7,...? One thought that occurs to me is that if you use i/2 you get 0,0,2,2,4,4... and 1,1,3,3,... and you can then test whether (i/2) % 2 is zero or not. Of course, that assumes the exact pattern that you showed.

bob fissle
Greenhorn
Posts: 6
• Number of slices to send:
Optional 'thank-you' note:

Jon Swanson wrote:Are you really looking for the pattern 0,1,4,5,8,9...? or 2,3,6,7,...? One thought that occurs to me is that if you use i/2 you get 0,0,2,2,4,4... and 1,1,3,3,... and you can then test whether (i/2) % 2 is zero or not. Of course, that assumes the exact pattern that you showed.

Perfect! Thanks Jon!!

Ranch Hand
Posts: 58
• Number of slices to send:
Optional 'thank-you' note:

bob fissle wrote:I'm trying to write a loop that will print to the buffer based on the following conditions:

The example above is a dumbed down version of what I'm trying to do, I'm mainly interested in the logic. Please assume that variables a and b will have an infinite amount of numbers -- for the sake of this example. The main point that i'm trying to illustrate is the pattern in the variables a and b; a starts with 0 and 1, and then every other two numbers are found in the variable a, and the opposite for b. I'm trying to figure out how to write logic that will print out values a or b based on the pattern described above inside a loop.

I believe there are four AP(Arithmetic Progression) series, stating from 0,1,2 and 3 respectively. The constant difference is 4 in each case.
Series 1: 0,4,8,12 .. prints a
Series 2: 1,5,9,13 ...prints a
Series 3: 2,6,10,14 ..prints b
Series 4: 3,7,11,15 .. prints b
Please check if the following code works.

Ranch Hand
Posts: 30
• Number of slices to send:
Optional 'thank-you' note:

Jeff Verdegan
Bartender
Posts: 6109
6
• Number of slices to send:
Optional 'thank-you' note:

Sebanti Sanyal wrote:
Please check if the following code works.

Sebanti, please remember that this site is NotACodeMill(⇐click), and, as it states clearly at the top of the topics page, We're all here to learn, so when responding to others, please focus on helping them discover their own solutions, instead of simply providing answers. Doing somebody's work for him is not helpful.

Thanks!

Jeff Verdegan
Bartender
Posts: 6109
6
• Number of slices to send:
Optional 'thank-you' note:

Runrioter Wung wrote:
... some code...

Runrioter, please remember that this site is NotACodeMill(⇐click), and, as it states clearly at the top of the topics page, We're all here to learn, so when responding to others, please focus on helping them discover their own solutions, instead of simply providing answers. Doing somebody's work for him is not helpful.

Thanks!

Marshal
Posts: 75615
354
• Number of slices to send:
Optional 'thank-you' note:
Thank you for noticing, Jeff. I know it is a bit late in the day, but I have edited the code slightly. The hard part is seeing the pattern.

I challenge you to re-write your solution using the >> and & operators instead of / and %.

Jeff Verdegan
Bartender
Posts: 6109
6
• Number of slices to send:
Optional 'thank-you' note:

Campbell Ritchie wrote:The hard part is seeing the pattern.

Actually, I think describing it in English is the hard part.