Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   list question... unique values in all possible unique spots (http://www.velocityreviews.com/forums/t629955-list-question-unique-values-in-all-possible-unique-spots.html)

 ToshiBoy 08-09-2008 01:05 PM

list question... unique values in all possible unique spots

I'm wondering how to do this the most elegant way: I found this quiz
in some magazine. I've already solved it on paper, but want to write a
python program to solve it. It comes down to being able to represent
range(1,27) through a number of formulas. How do I write a loop that
will loop through this list, so that: 1. every number only occurs
once, and 2. I get every possibility of order within the list? I guess
it'd be somewhat similar to Sudoku, where you have the numbers from
1-9 in any possible order. Here it's 1-26.

 George Sakkis 08-09-2008 01:28 PM

Re: list question... unique values in all possible unique spots

On Aug 9, 9:05*am, ToshiBoy <Toshi...@gmail.com> wrote:

> I'm wondering how to do this the most elegant way: I found this quiz
> in some magazine. I've already solved it on paper, but want to write a
> python program to solve it. It comes down to being able to represent
> range(1,27) through a number of formulas. How do I write a loop that
> will loop through this list, so that: 1. every number only occurs
> once, and 2. I get every possibility of order within the list? I guess
> it'd be somewhat similar to Sudoku, where you have the numbers from
> 1-9 in any possible order. Here it's 1-26.

Search for a permutation generator function.

George

 Mensanator 08-09-2008 03:07 PM

Re: list question... unique values in all possible unique spots

On Aug 9, 8:05�am, ToshiBoy <Toshi...@gmail.com> wrote:
> I'm wondering how to do this the most elegant way: I found this quiz
> in some magazine. I've already solved it on paper, but want to write a
> python program to solve it. It comes down to being able to represent
> range(1,27) through a number of formulas. How do I write a loop that
> will loop through this list, so that: 1. every number only occurs
> once, and 2. I get every possibility of order within the list? I guess
> it'd be somewhat similar to Sudoku, where you have the numbers from
> 1-9 in any possible order. Here it's 1-26.

Python 2.6 has a permutation function:

IDLE 2.6b1
>>> import itertools
>>> for i in itertools.permutations(range(4)): print i

(0, 1, 2, 3)
(0, 1, 3, 2)
(0, 2, 1, 3)
(0, 2, 3, 1)
(0, 3, 1, 2)
(0, 3, 2, 1)
(1, 0, 2, 3)
(1, 0, 3, 2)
(1, 2, 0, 3)
(1, 2, 3, 0)
(1, 3, 0, 2)
(1, 3, 2, 0)
(2, 0, 1, 3)
(2, 0, 3, 1)
(2, 1, 0, 3)
(2, 1, 3, 0)
(2, 3, 0, 1)
(2, 3, 1, 0)
(3, 0, 1, 2)
(3, 0, 2, 1)
(3, 1, 0, 2)
(3, 1, 2, 0)
(3, 2, 0, 1)
(3, 2, 1, 0)

Bur bear in mind that permutations of size n are n!.
So the permutaions of range(1,27) is 26! which is

>>> print gmpy.fac(26)

403291461126605635584000000

That's 403 octillion.

Are you sure you want to do this?

 Mensanator 08-12-2008 12:04 AM

Re: list question... unique values in all possible unique spots

On Aug 11, 3:53*pm, Tobiah <t...@tobiah.org> wrote:
> On Mon, 11 Aug 2008 13:46:10 -0700, Tobiah wrote:
> > On Sat, 09 Aug 2008 08:07:26 -0700, Mensanator wrote:

>
> >> 403291461126605635584000000

>
> > I think it's only 4 septillion.

>
> I meant to say 403.

Whatever.

Ever tried to iterate 403 septillion times?

 bearophileHUGS@lycos.com 08-12-2008 12:34 AM

Re: list question... unique values in all possible unique spots

Mensanator:
> Ever tried to iterate 403 septillion times?

The OP is talking about formulas, like:
X + Y * Z = W
Where X, Y, Z, W distinct and in [1, 26], so you have C(26, 4)
combinations that's way less than 26!

>>> binomial(26, 4)

14950

So this can be solved with a xcombinations() generator.

Bye,
bearophile

 Mensanator 08-12-2008 04:25 AM

Re: list question... unique values in all possible unique spots

On Aug 11, 7:34*pm, bearophileH...@lycos.com wrote:
> Mensanator:
>
> > Ever tried to iterate 403 septillion times?

>
> The OP is talking about formulas, like:
> X + Y * Z = W
> Where X, Y, Z, W distinct and in [1, 26], so you have C(26, 4)
> combinations that's way less than 26!
>
> >>> binomial(26, 4)

>
> 14950
>
> So this can be solved with a xcombinations() generator.

How did you surmise it's C(26,4)?

>
> Bye,
> bearophile

 ToshiBoy 08-12-2008 05:01 AM

Re: list question... unique values in all possible unique spots