[PYTHON] Trouvez tous les modèles pour extraire un nombre spécifique de l'ensemble

Aperçu

Trouvez l'algorithme pour écrire tous les motifs du petit ensemble extrait de l'ensemble de 5 J'ai fait référence à ici.

(Une addition) Il existe une bibliothèque pratique, alors utilisons-la. Merci de me l'avoir dit.

from itertools import combinations
list(combinations([1,2,4,3],3))
>>[(1, 2, 4), (1, 2, 3), (1, 4, 3), (2, 4, 3)]

Le langage utilisé est le python. 4.png

algorithme

Tous les motifs à retirer 2 à 3 (s'il ne disparaît pas même s'il est retiré) 5.png

Créez une fonction appelée "choix" pour en extraire une de l'ensemble complet. Si vous en retirez un avec «choix», augmentez la profondeur de un et appelez à nouveau «choix». Lorsque la profondeur atteint le nombre à retirer, elle reviendra. Vous pouvez maintenant générer tous les modèles.

Si vous voulez le retirer et le faire disparaître, exécutez simplement "choix" et passez l'ensemble entier en excluant celui sélectionné au "choix" suivant.

Un problème est le suivant Il y a un problème que les mêmes motifs de [rouge, vert] et [vert, rouge] sont mélangés. Il n'y a pas d'aide pour cela ici, alors vérifiez si le même élément existe, et si c'est le cas, supprimez-en un. S'il vous plaît laissez-moi savoir s'il existe une meilleure façon.

programme


import copy

class Allpattern():
    def __init__(self,n,r):
        self.n = n  #n Parmi ceux-ci, r tous les modèles à supprimer
        self.r = r
        self.pattern = []
        used = [0] * self.n
        hoge =[]
        for i in range(r):
            hoge.append(used)
            
    def make(self):
        """
        list1 = [1 ,・ ・ ・ ・, n]Faire l'ensemble
        """
        list1=[]
        for i in range(self.n):
            list1.append(i+1)
        
        """
        choice_list: Une liste pour mettre les choix
        depth       :Nombre de choix
        """
        choice_list = []
        depth = 0
        self.choice(list1,depth,choice_list)
        
    def choice(self,list1,depth,choice_list):
        for i in list1:
            list2 = copy.deepcopy(list1)
            list2.remove(i)                           #Choisissez une fois et ne choisissez plus jamais
            choice_list2 = copy.deepcopy(choice_list)
            choice_list2.append(i)
            if depth+1 >= self.r:
                self.work(choice_list2)
            else:
                self.choice(list2,depth+1,choice_list2)
            
    def work(self,choice_list):
        """
Il est appelé lorsque la sélection de r est terminée.
        """        
        choice_list.sort()
        if self.pattern.count(choice_list) == 0:
            self.pattern.append(choice_list)
        
    def disp(self):
        for i in self.pattern:
            print(i)
        
if __name__ == '__main__' :
    hoge = Allpattern(5,3)
    hoge.make()
    hoge.disp()
    
    

Résultat d'exécution

[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
[1, 3, 4]
[1, 3, 5]
[1, 4, 5]
[2, 3, 4]
[2, 3, 5]
[2, 4, 5]
[3, 4, 5]

Recommended Posts

Trouvez tous les modèles pour extraire un nombre spécifique de l'ensemble
Trouvez une ligne directrice pour le nombre de processus / threads à définir sur le serveur d'applications
Extraire la valeur la plus proche d'une valeur à partir d'un élément de liste en Python
Comment extraire la chaîne de caractères souhaitée à partir d'une ligne 4 commandes
Trouvez le nombre de jours dans un mois
Comment extraire le coefficient de la formule minute
Comment publier un ticket depuis l'API Shogun
Python --Lisez des données à partir d'un fichier de données numériques pour trouver des matrices, des valeurs propres et des vecteurs propres distribués co-distribués
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
Comment trouver la quantité moyenne d'informations (entropie) de la distribution de probabilité d'origine à partir de l'échantillon
Extraire uniquement le son d'un instrument spécifique du fichier MIDI et en faire un fichier séparé
Comment obtenir uniquement les données nécessaires du groupe de données structurées à l'aide d'une méthode polyvalente
J'ai essayé de trouver la tendance du nombre de navires dans la baie de Tokyo à partir d'images satellites.
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Définir une tâche pour définir l'environnement de fabric dans YAML
Comment trouver le nombre optimal de clusters pour les k-moyennes
Soit Code Jour 64 à partir de zéro "287. Trouver le numéro en double"
[python] Remplacez le nom du fichier image par un numéro de série
Un programme qui supprime des caractères spécifiques du texte saisi
Obtenez le nombre d'éléments spécifiques dans la liste python
Comment extraire un index autre qu'un index spécifique avec Numpy
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Après tout, l'histoire du retour de Linux à Windows
Extraire une langue spécifique du Wiktionnaire
J'ai essayé de trier les objets de l'image du plat de steak-② Tri des numéros de chevauchement
Extraire l'index de la set list d'origine correspondant à la liste des sous-ensembles.
Comment obtenir toutes les valeurs possibles dans une expression régulière
Lire tout le contenu de proc / [pid] ~ De setgroups à wchan ~
TensorFlow Pour apprendre d'un grand nombre d'images ... ~ (presque) solution ~
À partir d'un livre que le programmeur peut apprendre ... (Python): trouver la valeur la plus fréquente
Lire tout le contenu de proc / [pid] ~ De cwd à loginuid ~
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Lire tout le contenu de proc / [pid] ~ De map_files à numa_maps ~
Lire tout le contenu de proc / [pid] ~ De oom_adj à sessionid ~
J'ai essayé de couper une image fixe de la vidéo
Un script qui renvoie 0, 1 attaché au premier Python prime
Lire tout le contenu de proc / [pid] ~ De attr à cpuset ~
[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle
Une histoire sur la création d'un programme qui augmentera le nombre d'abonnés Instagram de 0 à 700 en une semaine
Extraire des données spécifiques d'un JSON complexe
Extraire des pages des vidages Wikipedia
[Python] Qu'est-ce qu'un argument formel? Comment définir la valeur initiale
Utilisez shutil pour supprimer tous les dossiers avec un petit nombre de fichiers
J'ai essayé de vérifier la meilleure façon de trouver un bon partenaire de mariage
[Python] Un programme qui calcule le nombre de chaussettes jumelées
Je souhaite envoyer un signal uniquement du sous-thread au thread principal
Comment connaître le nombre de processeurs sans utiliser la commande sar
[Mémo Python] Je souhaite obtenir un nombre hexadécimal à 2 chiffres à partir d'un nombre décimal
Extraire les lignes qui correspondent aux conditions d'un fichier texte avec python
Commande pour rechercher le fichier d'en-tête cible dans le répertoire d'inclusion de GCC, Clang
[Python] Comment utiliser la fonction enumerate (extraire le numéro d'index et l'élément)
Comment trouver une colonne d'un type spécifique (str, float, etc.) à partir d'une colonne dans un DataFrame
[Environnement de développement] Comment créer un ensemble de données proche de la base de données de production
Comment lire une vidéo tout en regardant le nombre d'images (Mac)
Let Code Day 66 "438. Find All Anagrams in a String" en partant de zéro
TensorFlow Pour apprendre d'un grand nombre d'images ... (Problème non résolu) → 12/18 Résolu