Finding permutations of any 3-digit number

Arrangements, sorting, packing, partitions, critical path analysis, networks, graphs, ...
nisargshah95
Posts: 5
Joined: Sat Jan 07, 2012 7:50 pm

Finding permutations of any 3-digit number

Now I was working on this problem in school where I had to list out all possible permutations of a given three digit number. Here's my code -

Code: Select all

Output "Enter a three-digit number: "
Input no
hundreds_digit=no/100,
ones_digit=no%10,
tens_digit=no/10-10*hundreds_digit
Now I've got the one's, ten's and the hundred's digit. The problem is, how do I display their different combinations other than manually write all six possible ways (that would be worse) like

Code: Select all

Output hundreds_digit, tens_digit, ones_digit
Output hundreds_digit, ones_digit, tens_digit
And so on...

Any help will be appreciated.

jaap
Posts: 540
Joined: Tue Mar 25, 2008 3:57 pm
Contact:

Re: Finding permutations of any 3-digit number

You'll need to use some data structure like an array or a list (or even a string) so that you can access those digits individually by index number, rather than by specific variable names for each digit. That way the digits will be something like digit, digit, and digit (or digit, digit, digit depending on the programming language).

This allows you to use a variable for the index, i.e. digit[index] where index is a variable with the value 1, 2, or 3 (or 0, 1, 2 as noted above). It gives much more flexibility.To do what you want, you can then use three nested for-loops, with if statements to avoid repeating a digit in one number.

If you then want to go on to make it work for numbers of any length, you will probably want to look at recursion.
Jaap's Puzzle Page nisargshah95
Posts: 5
Joined: Sat Jan 07, 2012 7:50 pm

Re: Finding permutations of any 3-digit number

Expand
I'm using C++. If I use an array to store each digit in each index then I'll have to input one digit and then other digit. What I mean to say is that I cannot input the whole number at a time. I'm in 12th grade so I haven't learnt advanced methods. Still I'll try considering your suggestion. Thanks.

jaap
Posts: 540
Joined: Tue Mar 25, 2008 3:57 pm
Contact:

Re: Finding permutations of any 3-digit number

nisargshah95 wrote:I'm using C++. If I use an array to store each digit in each index then I'll have to input one digit and then other digit. What I mean to say is that I cannot input the whole number at a time. I'm in 12th grade so I haven't learnt advanced methods. Still I'll try considering your suggestion. Thanks.
You can adjust your code like this:

Code: Select all

int no;
// Input no - whatever code you use for inputting no goes here
// Assumption: At this point no is an integer between 100 and 999 inclusive.
int digits;
digits = no/100;
digits = no%10;
digits = no/10-10*digits;
Jaap's Puzzle Page nisargshah95
Posts: 5
Joined: Sat Jan 07, 2012 7:50 pm

Re: Finding permutations of any 3-digit number

Yeah! That's what I was exactly going to suggest before I saw your post. And now I've solved my problem. Did the following -

Code: Select all

seq={ones_digit,tens_digit,hundreds_digit}

for (int i=0;i<=2;i++)
Output seq[i], seq[(i+1)%3], seq[(i+2)%3]
Output seq[i], swap(seq[(i+1)%3],seq[(i+2)%3]) //Where 'swap' will swap the last two digits and return a two-digit number.
Thanks for helping me out!