On Mon, Oct 12, 2009 at 10:09 AM, kevin parks <k...@mac.com> wrote:
>> > I don't understand why you want to flatten outlist; when I run your
>> > program I get one number per line, not one generation per line as you
>> > show above.
>
>
> That's odd. Anyway in my program I am printing the list twice. The first
> time outlist is printed it is nested one level deep. That is just
> scaffolding. Then i pick through it one item per line having flattened it
> and print it in a format that my other program can read.

In the program you posted, outlist is a list of lists where each
sub-list is a list of integers representing one generation of the
automaton. When outlist is flattened, the result is a single list of
integers. Maybe what you posted and what you tried are different?

> I been using that flatten function since 1970. Prolly pilfered from Tim
> Peters or Effbot. Remember them guys? Awesome dudes. I wonder if they even
> use python anymore.

Yes; Tim Peters lurks on this list; Fredrik Lundh still maintains PIL, at least.

> Anyway that is from way before itertools was even a
> glimmer. Additionally, your flatten function doesn't work for me actually. I
> get:
>
> NameError: global name 'chain' is not defined

from itertools import chain


>> > I don't think you will get an infinite loop. You may have a grammar
>> > that generates a stable or repeating pattern but I don't think you
>> > will be able to detect that without trying it.
>
> Yeah i don't mean an infinite loop, but more like a perpetual dance back and
> forth between to items
> that point to each other. I think I need to be careful when i define the
> rules that i don't get something like that... say if 1 goes to 4 but 4's
> rule is go to 1, for example.

That can clearly happen. There are several cases:
- every rule maps to a single symbol. In this case, each generation is
the same size as the previous generation and the pattern must repeat
at some point, as the number of patterns is limited
- all rules map to more than one symbol. In this case each generation
is longer than the previous so there can not be a repeat.
- at least one rule, but not all, maps to more than one symbol. In
this case either outcome is possible, depending on whether the
expanding rule is repeatedly hit.

Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to