#10134: Provide the enumeration of word morphisms from a range of integers
-------------------------------+--------------------------------------------
Reporter: slabbe | Owner: slabbe
Type: enhancement | Status: needs_work
Priority: major | Milestone: sage-4.6.1
Component: combinatorics | Keywords:
Author: Sébastien Labbé | Upstream: N/A
Reviewer: | Merged:
Work_issues: |
-------------------------------+--------------------------------------------
Changes (by abmasse):
* status: needs_review => needs_work
Comment:
Hi Sébastien!
I took a look at your patch. It should be easy to review but I still have
some comments:
1. I dislike the parameter name `l` for two reasons. First, it might be
confused with the digit `1`. Second, because it is not significant. I
suggest you use the name `lengths` or `order_iterating`, well, anything
else more significant.
1. The possible values for `l` are quite confusing. List means
something, tuple, something else... I don't know if there's a more
understandable interface that could be offered. Maybe there could be a
parameter `lengths_interval` or `fixed_lengths`, etc. that could
distinguish the different cases.
1. The sentence "The length of the list must be the number of letters in
the alphabet, and the `i`-th integer of `l` determines the length of the
word mapped to by the `i`-th letter of the (ordered) alphabet" is not very
clear. Maybe it would be better to describe it with mathematical
expressions (although it's harder to read in terminal mode). I would
suggest something simpler such as : "If `l` is a list, then it describes
the length of the images for each letter of the morphism."
I know my ideas aren't very clear, but maybe it could still inspire you
into improving the docstring. I'll wait for your answer to resume the
review. Note also that I get some doctest failures:
{{{
**********************************************************************
File
"/Users/alexandre/Applications/sage/devel/sage-t10134/sage/combinat/words/words.py",
line 1138:
sage: for m in W.iter_morphisms((0, 3), min_length=0): print m
Expected:
WordMorphism: a->, b->
WordMorphism: a->a, b->
WordMorphism: a->b, b->
WordMorphism: a->, b->a
WordMorphism: a->, b->b
WordMorphism: a->aa, b->
WordMorphism: a->ab, b->
WordMorphism: a->ba, b->
WordMorphism: a->bb, b->
WordMorphism: a->a, b->a
WordMorphism: a->a, b->b
WordMorphism: a->b, b->a
WordMorphism: a->b, b->b
WordMorphism: a->, b->aa
WordMorphism: a->, b->ab
WordMorphism: a->, b->ba
WordMorphism: a->, b->bb
Got:
WordMorphism: a->, b->aaa
WordMorphism: a->, b->aab
WordMorphism: a->, b->aba
WordMorphism: a->, b->abb
WordMorphism: a->, b->baa
WordMorphism: a->, b->bab
WordMorphism: a->, b->bba
WordMorphism: a->, b->bbb
**********************************************************************
File
"/Users/alexandre/Applications/sage/devel/sage-t10134/sage/combinat/words/words.py",
line 1159:
sage: for m in W.iter_morphisms( (2, 4) ): print m
Expected:
WordMorphism: a->a, b->a
WordMorphism: a->a, b->b
WordMorphism: a->b, b->a
WordMorphism: a->b, b->b
WordMorphism: a->aa, b->a
WordMorphism: a->aa, b->b
WordMorphism: a->ab, b->a
WordMorphism: a->ab, b->b
WordMorphism: a->ba, b->a
WordMorphism: a->ba, b->b
WordMorphism: a->bb, b->a
WordMorphism: a->bb, b->b
WordMorphism: a->a, b->aa
WordMorphism: a->a, b->ab
WordMorphism: a->a, b->ba
WordMorphism: a->a, b->bb
WordMorphism: a->b, b->aa
WordMorphism: a->b, b->ab
WordMorphism: a->b, b->ba
WordMorphism: a->b, b->bb
Got:
WordMorphism: a->aa, b->aaaa
WordMorphism: a->aa, b->aaab
WordMorphism: a->aa, b->aaba
WordMorphism: a->aa, b->aabb
WordMorphism: a->aa, b->abaa
WordMorphism: a->aa, b->abab
WordMorphism: a->aa, b->abba
WordMorphism: a->aa, b->abbb
WordMorphism: a->aa, b->baaa
WordMorphism: a->aa, b->baab
WordMorphism: a->aa, b->baba
WordMorphism: a->aa, b->babb
WordMorphism: a->aa, b->bbaa
WordMorphism: a->aa, b->bbab
WordMorphism: a->aa, b->bbba
WordMorphism: a->aa, b->bbbb
WordMorphism: a->ab, b->aaaa
WordMorphism: a->ab, b->aaab
WordMorphism: a->ab, b->aaba
WordMorphism: a->ab, b->aabb
WordMorphism: a->ab, b->abaa
WordMorphism: a->ab, b->abab
WordMorphism: a->ab, b->abba
WordMorphism: a->ab, b->abbb
WordMorphism: a->ab, b->baaa
WordMorphism: a->ab, b->baab
WordMorphism: a->ab, b->baba
WordMorphism: a->ab, b->babb
WordMorphism: a->ab, b->bbaa
WordMorphism: a->ab, b->bbab
WordMorphism: a->ab, b->bbba
WordMorphism: a->ab, b->bbbb
WordMorphism: a->ba, b->aaaa
WordMorphism: a->ba, b->aaab
WordMorphism: a->ba, b->aaba
WordMorphism: a->ba, b->aabb
WordMorphism: a->ba, b->abaa
WordMorphism: a->ba, b->abab
WordMorphism: a->ba, b->abba
WordMorphism: a->ba, b->abbb
WordMorphism: a->ba, b->baaa
WordMorphism: a->ba, b->baab
WordMorphism: a->ba, b->baba
WordMorphism: a->ba, b->babb
WordMorphism: a->ba, b->bbaa
WordMorphism: a->ba, b->bbab
WordMorphism: a->ba, b->bbba
WordMorphism: a->ba, b->bbbb
WordMorphism: a->bb, b->aaaa
WordMorphism: a->bb, b->aaab
WordMorphism: a->bb, b->aaba
WordMorphism: a->bb, b->aabb
WordMorphism: a->bb, b->abaa
WordMorphism: a->bb, b->abab
WordMorphism: a->bb, b->abba
WordMorphism: a->bb, b->abbb
WordMorphism: a->bb, b->baaa
WordMorphism: a->bb, b->baab
WordMorphism: a->bb, b->baba
WordMorphism: a->bb, b->babb
WordMorphism: a->bb, b->bbaa
WordMorphism: a->bb, b->bbab
WordMorphism: a->bb, b->bbba
WordMorphism: a->bb, b->bbbb
**********************************************************************
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10134#comment:2>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.