Skip to content

Commit 1cf601d

Browse files
committed
-
1 parent bd97251 commit 1cf601d

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

source_py3/python_toolbox/combi/perm.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -213,13 +213,6 @@ def number(self):
213213
self.just_dapplied_rapplied_perm_space.n_unused_elements)
214214

215215

216-
@caching.CachedProperty
217-
def _net_length(self):
218-
self._perm_sequence # Calculating this would calculate `_net_length` as
219-
# a side-effect.
220-
return self._net_length
221-
222-
223216
@caching.CachedProperty
224217
def _perm_sequence(self):
225218
assert (0 <= self.number <
@@ -233,7 +226,6 @@ def _perm_sequence(self):
233226
factoradic_number = factoradic_number[
234227
:-self.just_dapplied_rapplied_perm_space.n_unused_elements
235228
]
236-
self._net_length = len(factoradic_number)
237229
unused_numbers = list(self.just_dapplied_rapplied_perm_space.sequence)
238230
result = tuple(unused_numbers.pop(factoradic_digit) for
239231
factoradic_digit in factoradic_number)
@@ -315,7 +307,10 @@ def rapply(self, sequence, result_type=None):
315307

316308
permed_generator = (sequence[i] for i in self)
317309
if result_type is not None:
318-
return result_type(permed_generator)
310+
if result_type is str:
311+
return ''.join(permed_generator)
312+
else:
313+
return result_type(permed_generator)
319314
elif isinstance(sequence, Perm):
320315
return Perm(permed_generator,
321316
sequence.just_dapplied_rapplied_perm_space)

source_py3/python_toolbox/sequence_tools/misc.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,15 @@ def get_length(sequence):
418418

419419

420420
def divide_to_slices(sequence, n_slices):
421+
'''
422+
Divide a sequence to slices.
423+
424+
Example:
425+
426+
>>> divide_to_slices(range(10), 3)
427+
[range(0, 4), range(4, 7), range(7, 10)]
428+
429+
'''
421430
assert isinstance(n_slices, numbers.Integral)
422431
assert n_slices >= 1
423432

source_py3/test_python_toolbox/test_combi/test_perm_space.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ def test_perm_spaces():
3838
some_perm = pure_0a[7]
3939
last_perm = pure_0a[-1]
4040

41+
assert first_perm.index(2) == 2
42+
assert first_perm.index(0) == 0
43+
with cute_testing.RaiseAssertor(ValueError): first_perm.index(5)
44+
45+
assert last_perm.rapply('meow') == 'woem'
46+
assert last_perm.rapply('meow', str) == 'woem'
47+
assert last_perm.rapply('meow', tuple) == tuple('woem')
48+
4149
with cute_testing.RaiseAssertor(IndexError): pure_0a[- pure_0a.length - 1]
4250
with cute_testing.RaiseAssertor(IndexError): pure_0a[- pure_0a.length - 2]
4351
with cute_testing.RaiseAssertor(IndexError): pure_0a[- pure_0a.length - 30]
@@ -159,6 +167,7 @@ def test_perm_spaces():
159167
assert pickle.loads(pickle.dumps(pure_0b[2])) == pure_0c[2]
160168
assert pickle.loads(pickle.dumps(pure_0b[3])) != pure_0b[4]
161169

170+
162171
def test_fixed_perm_space():
163172
pure_perm_space = PermSpace(5)
164173
small_fixed_perm_space = PermSpace(5, fixed_map={0: 0, 2: 2, 4: 4,})
@@ -252,6 +261,8 @@ def test_dapplied_perm_space():
252261
assert repr(dapplied_perm) == \
253262
'''<Perm: (119 / 120) ('g', 'r', 'o', 'w', 'l') => (4, 3, 2, 1, 0)>'''
254263

264+
assert dapplied_perm.index(4) == 'g'
265+
255266
assert dapplied_perm.as_dictoid['g'] == 4
256267
assert dapplied_perm.items[0] == ('g', 4)
257268

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Copyright 2009-2014 Ram Rachum.
2+
# This program is distributed under the MIT license.
3+
4+
from python_toolbox.sequence_tools import divide_to_slices
5+
6+
7+
def test():
8+
assert divide_to_slices(range(10), 3) == \
9+
[range(0, 4), range(4, 7), range(7, 10)]

0 commit comments

Comments
 (0)