[PYTHON] Finden Sie alle Muster, um eine bestimmte Zahl aus dem Satz zu extrahieren

Überblick

Finden Sie den Algorithmus, um alle Muster der kleinen Menge zu schreiben, die aus der Menge von 5 extrahiert wurden Ich habe auf [hier] verwiesen (http://www.nct9.ne.jp/m_hiroi/linux/clang04.html#ans09).

(Zusatz) Es gibt eine praktische Bibliothek, also lasst es uns benutzen. Danke, dass du es mir gesagt hast.

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

Die verwendete Sprache ist Python. 4.png

Algorithmus

Alle Muster 2 bis 3 herausnehmen (wenn es nicht verschwindet, auch wenn es herausgenommen wird) 5.png

Erstellen Sie eine Funktion namens "Auswahl", um eine aus dem gesamten Satz zu extrahieren. Wenn Sie eine mit "Auswahl" herausnehmen, erhöhen Sie die Tiefe um eins und rufen Sie erneut "Auswahl" auf. Wenn die Tiefe die herauszunehmende Zahl erreicht, kommt sie zurück. Jetzt können Sie alle Muster generieren.

Wenn Sie es herausnehmen und verschwinden möchten, führen Sie einfach "Auswahl" aus und übergeben Sie den gesamten Satz mit Ausnahme des ausgewählten an die nächste "Auswahl".

Ein Problem ist dies Es besteht das Problem, dass die gleichen Muster von [rot, grün] und [grün, rot] gemischt werden. Hier gibt es keine Hilfe dafür. Überprüfen Sie daher, ob es dasselbe Element gibt, und löschen Sie gegebenenfalls eines. Bitte lassen Sie mich wissen, ob es einen besseren Weg gibt.

Programm


import copy

class Allpattern():
    def __init__(self,n,r):
        self.n = n  #n Davon sind alle Muster herauszunehmen
        self.r = r
        self.pattern = []
        used = [0] * self.n
        hoge =[]
        for i in range(r):
            hoge.append(used)
            
    def make(self):
        """
        list1 = [1 ,・ ・ ・ ・, n]Mach das ganze Set
        """
        list1=[]
        for i in range(self.n):
            list1.append(i+1)
        
        """
        choice_Liste: Eine Liste, in der Sie Ihre Auswahl treffen können
        depth       :Anzahl der Auswahlmöglichkeiten
        """
        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)                           #Einmal wählen und nie wieder wählen
            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):
        """
Es wird aufgerufen, wenn die Auswahl von r abgeschlossen ist.
        """        
        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()
    
    

Ausführungsergebnis

[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

Finden Sie alle Muster, um eine bestimmte Zahl aus dem Satz zu extrahieren
Suchen Sie eine Richtlinie für die Anzahl der Prozesse / Threads, die auf dem Anwendungsserver festgelegt werden sollen
Extrahieren Sie den Wert, der einem Wert am nächsten kommt, aus einem Listenelement in Python
So extrahieren Sie die gewünschte Zeichenfolge aus einem Befehl in Zeile 4
Finden Sie die Anzahl der Tage in einem Monat
So extrahieren Sie den Koeffizienten aus der Minutenformel
So veröffentlichen Sie ein Ticket über die Shogun-API
Python - Lesen Sie Daten aus einer numerischen Datendatei, um die verteilte, gemeinsam verteilte Matrix, Eigenwerte und Eigenvektoren zu finden
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
So ermitteln Sie die durchschnittliche Informationsmenge (Entropie) der ursprünglichen Wahrscheinlichkeitsverteilung aus der Stichprobe
Extrahieren Sie nur den Klang eines bestimmten Instruments aus der MIDI-Datei und machen Sie es zu einer separaten Datei
So erhalten Sie mit einer vielseitigen Methode nur die erforderlichen Daten aus der strukturierten Datengruppe
Ich habe versucht, den Trend der Anzahl der Schiffe in der Bucht von Tokio anhand von Satellitenbildern zu ermitteln.
[Python] Ein Programm, um die Anzahl der Äpfel und Orangen zu ermitteln, die geerntet werden können
Definieren Sie eine Aufgabe zum Festlegen der Fabric-Umgebung in YAML
So finden Sie die optimale Anzahl von Clustern für k-means
Lassen Sie Code Tag 64 ab Null "287. Finden Sie die doppelte Nummer"
[Python] Ändern Sie den Namen der Bilddatei in eine Seriennummer
Ein Programm, das bestimmte Zeichen aus dem eingegebenen Text entfernt
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
So extrahieren Sie mit Numpy einen anderen als einen bestimmten Index
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Immerhin die Geschichte der Rückkehr von Linux zu Windows
Extrahieren Sie eine bestimmte Sprache aus Wiktionary
Ich habe versucht, die Objekte aus dem Bild des Steak-Sets zu sortieren. ② Sortieren der Überlappungsnummern
Extrahieren Sie den Index der ursprünglichen Mengenliste, der der Liste der Teilmengen entspricht.
So erhalten Sie alle möglichen Werte in einem regulären Ausdruck
Lesen Sie den gesamten Inhalt von proc / [pid] ~ Von setgroups bis wchan ~
TensorFlow Aus einer großen Anzahl von Bildern lernen ... ~ (fast) Lösung ~
Aus einem Buch, das der Programmierer lernen kann ... (Python): Finden Sie den häufigsten Wert
Lesen Sie den gesamten Inhalt von proc / [pid] ~ Von cwd bis loginuid ~
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
Lesen Sie den gesamten Inhalt von proc / [pid] ~ Von map_files bis numa_maps ~
Lesen Sie den gesamten Inhalt von proc / [pid] ~ Von oom_adj bis sessionid ~
Ich habe versucht, ein Standbild aus dem Video auszuschneiden
Ein Skript, das 0, 1 an die erste Python-Primzahl zurückgibt
Lesen Sie den gesamten Inhalt von proc / [pid] ~ Von attr bis cpuset ~
[Python] Eine einfache Funktion zum Ermitteln der Mittelkoordinaten eines Kreises
Eine Geschichte über das Erstellen eines Programms, mit dem die Anzahl der Instagram-Follower in einer Woche von 0 auf 700 erhöht wird
Extrahieren Sie bestimmte Daten aus komplexem JSON
Extrahieren Sie Seiten aus Wikipedia-Dumps
[Python] Was ist ein formales Argument? So stellen Sie den Anfangswert ein
Verwenden Sie shutil, um alle Ordner mit einer kleinen Anzahl von Dateien zu löschen
Ich habe versucht, den besten Weg zu finden, um einen guten Ehepartner zu finden
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
Ich möchte nur ein Signal vom Sub-Thread zum Haupt-Thread senden
So ermitteln Sie die Anzahl der CPUs ohne den Befehl sar
[Python-Memo] Ich möchte eine zweistellige Hexadezimalzahl aus einer Dezimalzahl erhalten
Extrahieren Sie mit Python Zeilen, die den Bedingungen entsprechen, aus einer Textdatei
Befehl zum Durchsuchen der Zielheaderdatei aus dem Include-Verzeichnis von GCC, Clang
[Python] Verwendung der Aufzählungsfunktion (Indexnummer und Element extrahieren)
So finden Sie eine Spalte eines bestimmten Typs (str, float usw.) aus einer Spalte in einem DataFrame
[Entwicklungsumgebung] So erstellen Sie einen Datensatz in der Nähe der Produktionsdatenbank
So spielen Sie ein Video ab, während Sie die Anzahl der Bilder ansehen (Mac)
Lassen Sie Code Day 66 "438. Alle Anagramme in einer Zeichenfolge finden" von vorne beginnen
TensorFlow Aus einer großen Anzahl von Bildern lernen ... (ungelöstes Problem) → 12/18 Gelöst