AUTHORS:
- Franco Saliola (2008-12-17) : merged into sage
EXAMPLES:
sage: Alphabet("ab")
Ordered Alphabet ['a', 'b']
sage: Alphabet([0,1,2])
Ordered Alphabet [0, 1, 2]
sage: Alphabet(name="PP")
Ordered Alphabet of Positive Integers
sage: Alphabet(name="NN")
Ordered Alphabet of Natural Numbers
Returns an object representing an ordered alphabet.
EXAMPLES:
sage: Alphabet("ab")
Ordered Alphabet ['a', 'b']
sage: Alphabet([0,1,2])
Ordered Alphabet [0, 1, 2]
sage: Alphabet(name="positive integers")
Ordered Alphabet of Positive Integers
sage: Alphabet(name="PP")
Ordered Alphabet of Positive Integers
sage: Alphabet(name="natural numbers")
Ordered Alphabet of Natural Numbers
sage: Alphabet(name="NN")
Ordered Alphabet of Natural Numbers
Returns an object representing an ordered alphabet.
EXAMPLES:
sage: Alphabet("ab")
Ordered Alphabet ['a', 'b']
sage: Alphabet([0,1,2])
Ordered Alphabet [0, 1, 2]
sage: Alphabet(name="positive integers")
Ordered Alphabet of Positive Integers
sage: Alphabet(name="PP")
Ordered Alphabet of Positive Integers
sage: Alphabet(name="natural numbers")
Ordered Alphabet of Natural Numbers
sage: Alphabet(name="NN")
Ordered Alphabet of Natural Numbers
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: A = OrderedAlphabet_Finite([0,1,2])
sage: 2 in A
True
sage: 17 in A
False
sage: B = OrderedAlphabet_Finite("abc")
sage: "b" in B
True
sage: "z" in B
False
Returns True if the elements of other appear among the elements of self in the same respective order, and False otherwise.
The ordering of the alphabet is taken into consideration.
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: OrderedAlphabet_Finite('abc') >= OrderedAlphabet_Finite('daefbgc')
False
sage: OrderedAlphabet_Finite('abc') >= OrderedAlphabet_Finite('abc')
True
sage: OrderedAlphabet_Finite('abc') >= OrderedAlphabet_Finite('ac')
True
sage: OrderedAlphabet_Finite('abc') >= OrderedAlphabet_Finite('cba')
False
sage: OrderedAlphabet_Finite('abc') >= OrderedAlphabet_Finite([1, 2, 3])
False
Builds an ordered alphabet from an iterable. The order is that given by the order the items appear in the iterable. There must be no duplicates.
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: A = OrderedAlphabet_Finite([0,1,2])
sage: A == loads(dumps(A))
True
sage: A = OrderedAlphabet_Finite("abc")
sage: A == loads(dumps(A))
True
TESTS:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: OrderedAlphabet_Finite('aba')
...
ValueError: duplicate elements in alphabet
sage: OrderedAlphabet_Finite(33)
...
TypeError: cannot build an alphabet from 33
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: type(iter(OrderedAlphabet_Finite("abc")))
<type 'generator'>
sage: list(OrderedAlphabet_Finite("abc")) # indirect doctest
['a', 'b', 'c']
sage: list(OrderedAlphabet_Finite([10, 17, 3])) # indirect doctest
[10, 17, 3]
Returns True if the elements of self appear among the elements of other in the same respective order, and False otherwise.
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: OrderedAlphabet_Finite('abc') <= OrderedAlphabet_Finite('daefbgc')
True
sage: OrderedAlphabet_Finite('abc') <= OrderedAlphabet_Finite('abc')
True
sage: OrderedAlphabet_Finite('abc') <= OrderedAlphabet_Finite('ac')
False
sage: OrderedAlphabet_Finite('abc') <= OrderedAlphabet_Finite([1, 2, 3])
False
sage: OrderedAlphabet_Finite('abc') <= OrderedAlphabet_Finite("bca")
False
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: A = OrderedAlphabet_Finite([0,1,2])
sage: len(A)
3
sage: B = OrderedAlphabet_Finite("abc")
sage: len(B)
3
sage: len(OrderedAlphabet_Finite(""))
0
sage: len(OrderedAlphabet_Finite(range(25)))
25
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: OrderedAlphabet_Finite([0,1,2]).__repr__()
'Ordered Alphabet [0, 1, 2]'
sage: OrderedAlphabet_Finite("cba").__repr__()
"Ordered Alphabet ['c', 'b', 'a']"
Returns the index of letter in self.
INPUT:
OUTPUT:
integer – the integer mapping for the letter
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: OrderedAlphabet_Finite('abcd').rank('a')
0
sage: OrderedAlphabet_Finite('abcd').rank('d')
3
sage: OrderedAlphabet_Finite('abcd').rank('e')
...
IndexError: letter not in alphabet: 'e'
sage: OrderedAlphabet_Finite('abcd').rank('')
...
IndexError: letter not in alphabet: ''
Returns the letter in position n of the alphabet self.
INPUT:
OUTPUT:
letter – the (n+1)-th object output by iter(self)
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: OrderedAlphabet_Finite('abcd').unrank(0)
'a'
sage: OrderedAlphabet_Finite('abcd').unrank(3)
'd'
sage: OrderedAlphabet_Finite('abcd').unrank(5)
...
IndexError: list index out of range
Returns NotimplementedError since it is not clear how to define this for infinite ordered alphabets.
TESTS:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Infinite
sage: A1 = OrderedAlphabet_Infinite()
sage: A2 = OrderedAlphabet_Infinite()
sage: A1.__le__(A2)
...
NotImplementedError
Returns NotimplementedError since it is not clear how to define this for infinite ordered alphabets.
TESTS:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Infinite
sage: A1 = OrderedAlphabet_Infinite()
sage: A2 = OrderedAlphabet_Infinite()
sage: A1.__le__(A2)
...
NotImplementedError
Returns the number of elements in self.
OUTPUT:
+Infinity
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Infinite
sage: OrderedAlphabet_Infinite().cardinality()
+Infinity
Returns NotImplementedError since we cannot list all the nonnegative integers.
TESTS:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Infinite
sage: OrderedAlphabet_Infinite().list()
...
NotImplementedError
The alphabet of nonnegative integers, ordered in the usual way.
TESTS:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_NaturalNumbers
sage: NN = OrderedAlphabet_NaturalNumbers()
sage: NN == loads(dumps(NN))
True
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_NaturalNumbers
sage: A = OrderedAlphabet_NaturalNumbers()
sage: 2 in A
True
sage: 17 in A
True
sage: 0 in A
True
sage: -1 in A
False
sage: "z" in A
False
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_NaturalNumbers
sage: it = iter(OrderedAlphabet_NaturalNumbers())
sage: type(it)
<type 'generator'>
sage: it.next()
0
sage: it.next()
1
sage: it.next()
2
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_NaturalNumbers
sage: OrderedAlphabet_NaturalNumbers().__repr__()
'Ordered Alphabet of Natural Numbers'
Returns the letter following n in the alphabet self.
INPUT:
OUTPUT:
n+1
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_NaturalNumbers
sage: NN = OrderedAlphabet_NaturalNumbers()
sage: NN.next(0)
1
sage: NN.next(117)
118
sage: NN.next(-1)
...
ValueError: letter(=-1) not in the alphabet
Returns the index of letter in self.
INPUT:
OUTPUT:
integer – the integer mapping for the letter
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_NaturalNumbers
sage: NN = OrderedAlphabet_NaturalNumbers()
sage: NN.rank(0)
0
sage: NN.rank(17)
17
TESTS:
sage: NN.rank(-1)
...
ValueError: letter(=-1) not in the alphabet
sage: NN.rank("a")
...
ValueError: letter(=a) not in the alphabet
Returns the letter in position n in self, which in this case is n.
INPUT:
OUTPUT:
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_NaturalNumbers
sage: NN = OrderedAlphabet_NaturalNumbers()
sage: NN.unrank(0)
0
sage: NN.unrank(17)
17
TESTS:
sage: NN.unrank(-1)
...
ValueError: -1 is not a nonnegative integer
sage: NN.unrank("a")
...
ValueError: a is not a nonnegative integer
The alphabet of nonnegative integers, ordered in the usual way.
TESTS:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_PositiveIntegers
sage: PP = OrderedAlphabet_PositiveIntegers()
sage: PP == loads(dumps(PP))
True
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_PositiveIntegers
sage: A = OrderedAlphabet_PositiveIntegers()
sage: 2 in A
True
sage: 17 in A
True
sage: 0 in A
False
sage: -1 in A
False
sage: "z" in A
False
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_PositiveIntegers
sage: it = iter(OrderedAlphabet_PositiveIntegers())
sage: type(it)
<type 'generator'>
sage: it.next()
1
sage: it.next()
2
sage: it.next()
3
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_PositiveIntegers
sage: OrderedAlphabet_PositiveIntegers().__repr__()
'Ordered Alphabet of Positive Integers'
Returns the letter following n in the alphabet self.
INPUT:
OUTPUT:
n+1
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_PositiveIntegers
sage: PP = OrderedAlphabet_PositiveIntegers()
sage: PP.next(1)
2
sage: PP.next(117)
118
sage: PP.next(0)
...
ValueError: letter(=0) not in the alphabet
Returns the index of letter in self.
INPUT:
OUTPUT:
letter-1
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_PositiveIntegers
sage: OrderedAlphabet_PositiveIntegers().rank(1)
0
sage: OrderedAlphabet_PositiveIntegers().rank(8)
7
TESTS:
sage: OrderedAlphabet_PositiveIntegers().rank(-1)
...
TypeError: -1 not in alphabet
Returns the i-th letter in self, where the first letter is the 0-th letter.
INPUT:
OUTPUT:
i+1
EXAMPLES:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_PositiveIntegers
sage: OrderedAlphabet_PositiveIntegers().unrank(0)
1
sage: OrderedAlphabet_PositiveIntegers().unrank(7)
8
Generic class for ordered alphabets.
Returns the string representation of the alphabet.
TESTS:
sage: from sage.combinat.words.alphabet import OrderedAlphabet_Finite
sage: OrderedAlphabet_Finite([1, 3, 2]).string_rep()
doctest:1: DeprecationWarning: string_rep is deprecated, use __repr__ instead!
'Ordered Alphabet [1, 3, 2]'