Générer la séquence look-and-say présentée dans QuizKnock en Python

La vidéo de Quiz Knock postée l'autre jour [Université de Tokyo] Défiez l'examen d'entrée de Google au siège de Google! a présenté ** Séquence Look-and-Say **. Il s'agit d'une séquence de nombres qui change selon la règle selon laquelle le premier terme est 1 et les nombres lus à partir du terme précédent sont disposés dans le terme suivant, comme indiqué ci-dessous.

1   =1 vaut 1(One 1)  → 1 1
1 1 =2 1s(Two 1s) → 2 1
2 1 =2 est 1,1 vaut 1(One 2, One 1) → 1 2 1 1
1 2 1 1 =1 vaut 1,2 est 1,2 1s...

Je connaissais l'existence de ce nombre de lignes pour la première fois dans cette vidéo, et j'ai trouvé que c'était intéressant J'ai écrit un programme en Python qui génère cette séquence de nombres.

def lookAndSay(initialValues, maxIteration=None):
    x = initialValues
    yield x

    iteration = 1

    while True:
        if maxIteration is not None and iteration >= maxIteration:
            break

        new_x = []
        prev = x[0]
        count = 1

        for n in x[1:]:
            if n == prev:
                count += 1
            else:
                new_x.append(count)
                new_x.append(prev)
                prev = n
                count = 1
        new_x.append(count)
        new_x.append(prev)

        x = new_x
        yield x
        
        iteration += 1

Si vous faites comme ci-dessous, une séquence Look-and-say avec le premier terme comme 1 sera générée jusqu'au 10ème terme et sortie.

>>> for li in lookAndSay([1], 10):
...     print(li)
...
[1]
[1, 1]
[2, 1]
[1, 2, 1, 1]
[1, 1, 1, 2, 2, 1]
[3, 1, 2, 2, 1, 1]
[1, 3, 1, 1, 2, 2, 2, 1]
[1, 1, 1, 3, 2, 1, 3, 2, 1, 1]
[3, 1, 1, 3, 1, 2, 1, 1, 1, 3, 1, 2, 2, 1]
[1, 3, 2, 1, 1, 3, 1, 1, 1, 2, 3, 1, 1, 3, 1, 1, 2, 2, 1, 1]

Faites-nous savoir dans les commentaires s'il existe un meilleur moyen!

Recommended Posts

Générer la séquence look-and-say présentée dans QuizKnock en Python
Générer une vignette arrondie en Python
Trouver des erreurs en Python
Générer une distribution U en Python
Générer du code QR en Python
Générez 8 * 8 (64) cubes avec Blender Python
Obtenir l'API arXiv en Python
[Python] Générer un code QR en mémoire
Python dans le navigateur: la recommandation de Brython
Enregistrez le fichier binaire en Python
Frappez l'API Sesami en Python
Obtenez le chemin du bureau en Python
Générer le notebook Jupyter ".ipynb" en Python
Obtenez le chemin du script en Python
Dans la commande python, python pointe vers python3.8
Implémenter le modèle Singleton en Python
Accédez à l'API Web en Python
J'ai écrit la file d'attente en Python
Calculer le mois précédent en Python
Examiner la classe d'un objet avec python
Obtenez le chemin du bureau en Python
Obtenez le nom d'hôte en Python
Accéder à l'API Twitter avec Python
La première étape de Python Matplotlib
J'ai écrit la pile en Python
Maîtriser le module lowref en Python
Générer une collection de première classe en Python
Apprenez le modèle de conception "Prototype" avec Python
Apprenez le modèle de conception "Builder" avec Python
Charger le SDK Python distant avec IntelliJ
Essayez d'utiliser l'API Wunderlist en Python
Vérifiez le comportement du destroyer en Python
Générer une URL signée AWS-S3 (limitée dans le temps) en Python
Apprenez le modèle de conception "Flyweight" en Python
Essayez d'utiliser l'API Kraken avec Python
Apprenez le modèle de conception "Observer" en Python
Apprenez le modèle de conception "Memento" avec Python
Apprenez le modèle de conception "Proxy" en Python
Ecrire le test dans la docstring python
Apprenez le modèle de conception "Commande" en Python
Prenez la somme logique de List en Python (fonction zip)
Afficher Python 3 dans le navigateur avec MAMP
Tweet à l'aide de l'API Twitter en Python
Apprenez le modèle de conception "Visiteur" avec Python
Apprenez le modèle de conception "Bridge" avec Python
Vérifiez si l'URL existe en Python
Apprenez le modèle de conception "Mediator" avec Python
Générer automatiquement un commentaire de chaîne de document Python avec Emacs
Associez l'ensemble de tables dans les modèles de python.py
Apprenez le modèle de conception "Décorateur" avec Python
Exécuter l'interpréteur Python dans le script
Le résultat de l'installation de python sur Anaconda
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
Module pour générer le mot N-gramme en Python
MongoDB avec Python pour la première fois
Apprenez le modèle de conception "Iterator" avec Python
Principes de base pour exécuter NoxPlayer en Python
Apprenez le modèle de conception «Stratégie» avec Python