# HG changeset patch
# User Sebastien Labbe <slabqc at gmail.com>
# Date 1271618803 -7200
# Node ID 431d538522b2442e9469b6bac4337559855e2c5e
# Parent 828e5ca876f0acb873268f5054de6d90b219be64
#8604: corrections after reviewer's comments
diff --git a/sage/combinat/words/nfactor_enumerable_word.py b/sage/combinat/words/nfactor_enumerable_word.py
a
|
b
|
class Word_nfactor_enumerable(Word_class |
453 | 453 | g.delete_vertex(v) |
454 | 454 | return g |
455 | 455 | |
456 | | def _left_special_factors_iterator(self, n=None): |
| 456 | def left_special_factors_iterator(self, n=None): |
457 | 457 | r""" |
458 | 458 | Returns an iterator over the left special factors (of length n). |
459 | 459 | |
… |
… |
class Word_nfactor_enumerable(Word_class |
466 | 466 | - ``n`` - integer (optional, default: None). If None, it returns |
467 | 467 | an iterator over all left special factors. |
468 | 468 | |
469 | | EXAMPLES: |
| 469 | EXAMPLES:: |
470 | 470 | |
471 | 471 | sage: alpha, beta, x = 0.54, 0.294, 0.1415 |
472 | 472 | sage: w = words.CodingOfRotationWord(alpha, beta, x)[:40] |
473 | | sage: sorted(w._left_special_factors_iterator(3)) |
| 473 | sage: sorted(w.left_special_factors_iterator(3)) |
474 | 474 | [word: 000, word: 010] |
475 | | sage: sorted(w._left_special_factors_iterator(4)) |
| 475 | sage: sorted(w.left_special_factors_iterator(4)) |
476 | 476 | [word: 0000, word: 0101] |
477 | | sage: sorted(w._left_special_factors_iterator(5)) |
| 477 | sage: sorted(w.left_special_factors_iterator(5)) |
478 | 478 | [word: 00000, word: 01010] |
479 | 479 | """ |
480 | 480 | if n is None: |
481 | 481 | for i in range(self.length()): |
482 | | for w in self._left_special_factors_iterator(i): |
| 482 | for w in self.left_special_factors_iterator(i): |
483 | 483 | yield w |
484 | 484 | else: |
485 | 485 | g = self.rauzy_graph(n) |
… |
… |
class Word_nfactor_enumerable(Word_class |
505 | 505 | |
506 | 506 | A list of words. |
507 | 507 | |
| 508 | .. WARNING:: |
| 509 | |
| 510 | This may not halt for infinite words having an infinite number |
| 511 | of such factors. Use the iterator version of this function |
| 512 | instead. |
| 513 | |
508 | 514 | EXAMPLES:: |
509 | 515 | |
510 | 516 | sage: alpha, beta, x = 0.54, 0.294, 0.1415 |
… |
… |
class Word_nfactor_enumerable(Word_class |
516 | 522 | 3 [word: 000, word: 010] |
517 | 523 | 4 [word: 0000, word: 1010] |
518 | 524 | """ |
519 | | return list(self._left_special_factors_iterator(n)) |
| 525 | return list(self.left_special_factors_iterator(n)) |
520 | 526 | |
521 | | def _right_special_factors_iterator(self, n=None): |
| 527 | def right_special_factors_iterator(self, n=None): |
522 | 528 | r""" |
523 | 529 | Returns an iterator over the right special factors (of length n). |
524 | 530 | |
… |
… |
class Word_nfactor_enumerable(Word_class |
531 | 537 | - ``n`` - integer (optional, default: None). If None, it returns |
532 | 538 | an iterator over all right special factors. |
533 | 539 | |
534 | | EXAMPLES: |
| 540 | EXAMPLES:: |
535 | 541 | |
536 | 542 | sage: alpha, beta, x = 0.61, 0.54, 0.3 |
537 | 543 | sage: w = words.CodingOfRotationWord(alpha, beta, x)[:40] |
538 | | sage: sorted(w._right_special_factors_iterator(3)) |
| 544 | sage: sorted(w.right_special_factors_iterator(3)) |
539 | 545 | [word: 010, word: 101] |
540 | | sage: sorted(w._right_special_factors_iterator(4)) |
| 546 | sage: sorted(w.right_special_factors_iterator(4)) |
541 | 547 | [word: 0101, word: 1010] |
542 | | sage: sorted(w._right_special_factors_iterator(5)) |
| 548 | sage: sorted(w.right_special_factors_iterator(5)) |
543 | 549 | [word: 00101, word: 11010] |
544 | 550 | """ |
545 | 551 | if n is None: |
546 | 552 | for i in range(self.length()): |
547 | | for w in self._right_special_factors_iterator(i): |
| 553 | for w in self.right_special_factors_iterator(i): |
548 | 554 | yield w |
549 | 555 | else: |
550 | 556 | g = self.rauzy_graph(n) |
… |
… |
class Word_nfactor_enumerable(Word_class |
570 | 576 | |
571 | 577 | A list of words. |
572 | 578 | |
| 579 | .. WARNING:: |
| 580 | |
| 581 | This may not halt for infinite words having an infinite number |
| 582 | of such factors. Use the iterator version of this function |
| 583 | instead. |
| 584 | |
573 | 585 | EXAMPLES:: |
574 | 586 | |
575 | 587 | sage: w = words.ThueMorseWord()[:30] |
… |
… |
class Word_nfactor_enumerable(Word_class |
580 | 592 | 3 [word: 001, word: 010, word: 101, word: 110] |
581 | 593 | 4 [word: 0110, word: 1001] |
582 | 594 | """ |
583 | | return list(self._right_special_factors_iterator(n)) |
| 595 | return list(self.right_special_factors_iterator(n)) |
584 | 596 | |
585 | | def _bispecial_factors_iterator(self, n=None): |
| 597 | def bispecial_factors_iterator(self, n=None): |
586 | 598 | r""" |
587 | 599 | Returns an iterator over the bispecial factors (of length n). |
588 | 600 | |
… |
… |
class Word_nfactor_enumerable(Word_class |
594 | 606 | - ``n`` - integer (optional, default: None). If None, it returns |
595 | 607 | an iterator over all bispecial factors. |
596 | 608 | |
597 | | EXAMPLES: |
| 609 | EXAMPLES:: |
598 | 610 | |
599 | 611 | sage: w = words.ThueMorseWord()[:30] |
600 | 612 | sage: for i in range(10): |
601 | | ... for u in w._bispecial_factors_iterator(i): |
| 613 | ... for u in w.bispecial_factors_iterator(i): |
602 | 614 | ... print i,u |
603 | 615 | 0 word: |
604 | 616 | 1 word: 1 |
… |
… |
class Word_nfactor_enumerable(Word_class |
615 | 627 | |
616 | 628 | :: |
617 | 629 | |
618 | | sage: for u in w._bispecial_factors_iterator(): u |
| 630 | sage: for u in w.bispecial_factors_iterator(): u |
619 | 631 | word: |
620 | 632 | word: 1 |
621 | 633 | word: 0 |
… |
… |
class Word_nfactor_enumerable(Word_class |
631 | 643 | """ |
632 | 644 | if n is None: |
633 | 645 | for i in range(self.length()): |
634 | | for w in self._bispecial_factors_iterator(i): |
| 646 | for w in self.bispecial_factors_iterator(i): |
635 | 647 | yield w |
636 | 648 | else: |
637 | 649 | g = self.rauzy_graph(n) |
… |
… |
class Word_nfactor_enumerable(Word_class |
657 | 669 | |
658 | 670 | A list of words. |
659 | 671 | |
| 672 | .. WARNING:: |
| 673 | |
| 674 | This may not halt for infinite words having an infinite number |
| 675 | of such factors. Use the iterator version of this function |
| 676 | instead. |
| 677 | |
660 | 678 | EXAMPLES:: |
661 | 679 | |
662 | 680 | sage: w = words.FibonacciWord()[:30] |
… |
… |
class Word_nfactor_enumerable(Word_class |
678 | 696 | 8 [word: 10010110] |
679 | 697 | 9 [] |
680 | 698 | """ |
681 | | return list(self._bispecial_factors_iterator(n)) |
| 699 | return list(self.bispecial_factors_iterator(n)) |
682 | 700 | |
683 | 701 | def number_of_left_special_factors(self, n): |
684 | 702 | r""" |