Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
r""" Tuples """ #***************************************************************************** # Copyright (C) 2007 Mike Hansen <mhansen@gmail.com>, # # Distributed under the terms of the GNU General Public License (GPL) # # This code is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # The full text of the GPL is available at: # # http://www.gnu.org/licenses/ #***************************************************************************** from __future__ import absolute_import
from .combinat import CombinatorialClass from sage.interfaces.all import gap from sage.rings.all import ZZ
def Tuples(S, k): """ Returns the combinatorial class of ordered tuples of S of length k.
An ordered tuple of length k of set is an ordered selection with repetition and is represented by a list of length k containing elements of set.
EXAMPLES::
sage: S = [1,2] sage: Tuples(S,3).list() [[1, 1, 1], [2, 1, 1], [1, 2, 1], [2, 2, 1], [1, 1, 2], [2, 1, 2], [1, 2, 2], [2, 2, 2]] sage: mset = ["s","t","e","i","n"] sage: Tuples(mset,2).list() [['s', 's'], ['t', 's'], ['e', 's'], ['i', 's'], ['n', 's'], ['s', 't'], ['t', 't'], ['e', 't'], ['i', 't'], ['n', 't'], ['s', 'e'], ['t', 'e'], ['e', 'e'], ['i', 'e'], ['n', 'e'], ['s', 'i'], ['t', 'i'], ['e', 'i'], ['i', 'i'], ['n', 'i'], ['s', 'n'], ['t', 'n'], ['e', 'n'], ['i', 'n'], ['n', 'n']]
::
sage: K.<a> = GF(4, 'a') sage: mset = [x for x in K if x!=0] sage: Tuples(mset,2).list() [[a, a], [a + 1, a], [1, a], [a, a + 1], [a + 1, a + 1], [1, a + 1], [a, 1], [a + 1, 1], [1, 1]] """
class Tuples_sk(CombinatorialClass): def __init__(self, S, k): """ TESTS::
sage: T = Tuples([1,2,3],2) sage: T == loads(dumps(T)) True """
def __repr__(self): """ TESTS::
sage: repr(Tuples([1,2,3],2)) 'Tuples of [1, 2, 3] of length 2' """
def __iter__(self): """ EXAMPLES::
sage: S = [1,2] sage: Tuples(S,3).list() [[1, 1, 1], [2, 1, 1], [1, 2, 1], [2, 2, 1], [1, 1, 2], [2, 1, 2], [1, 2, 2], [2, 2, 2]] sage: mset = ["s","t","e","i","n"] sage: Tuples(mset,2).list() [['s', 's'], ['t', 's'], ['e', 's'], ['i', 's'], ['n', 's'], ['s', 't'], ['t', 't'], ['e', 't'], ['i', 't'], ['n', 't'], ['s', 'e'], ['t', 'e'], ['e', 'e'], ['i', 'e'], ['n', 'e'], ['s', 'i'], ['t', 'i'], ['e', 'i'], ['i', 'i'], ['n', 'i'], ['s', 'n'], ['t', 'n'], ['e', 'n'], ['i', 'n'], ['n', 'n']] """ yield [] return
def cardinality(self): """ EXAMPLES::
sage: S = [1,2,3,4,5] sage: Tuples(S,2).cardinality() 25 sage: S = [1,1,2,3,4,5] sage: Tuples(S,2).cardinality() 25 """
def UnorderedTuples(S,k): """ Returns the combinatorial class of unordered tuples of S of length k.
An unordered tuple of length k of set is a unordered selection with repetitions of set and is represented by a sorted list of length k containing elements from set.
EXAMPLES::
sage: S = [1,2] sage: UnorderedTuples(S,3).list() [[1, 1, 1], [1, 1, 2], [1, 2, 2], [2, 2, 2]] sage: UnorderedTuples(["a","b","c"],2).list() [['a', 'a'], ['a', 'b'], ['a', 'c'], ['b', 'b'], ['b', 'c'], ['c', 'c']] """
class UnorderedTuples_sk(CombinatorialClass): def __init__(self, S, k): """ TESTS::
sage: T = Tuples([1,2,3],2) sage: T == loads(dumps(T)) True """
def __repr__(self): """ TESTS::
sage: repr(UnorderedTuples([1,2,3],2)) 'Unordered tuples of [1, 2, 3] of length 2' """
def list(self): """ EXAMPLES::
sage: S = [1,2] sage: UnorderedTuples(S,3).list() [[1, 1, 1], [1, 1, 2], [1, 2, 2], [2, 2, 2]] sage: UnorderedTuples(["a","b","c"],2).list() [['a', 'a'], ['a', 'b'], ['a', 'c'], ['b', 'b'], ['b', 'c'], ['c', 'c']] """
def cardinality(self): """ EXAMPLES::
sage: S = [1,2,3,4,5] sage: UnorderedTuples(S,2).cardinality() 15 """ |