Ich möchte ein Programm schreibt, dass jede mögliche Kombination zu einer anderen Zeile einer text Datei
Ich soll ein Programm schreiben, das würde zu drucken jede Kombination von Variablen in eine text-Datei, erstellen Sie eine Wortliste. Jede Antwort, die geschrieben werden sollen, in einer separaten Zeile und schreiben Sie alle Ergebnisse zum 1 Ziffer, 2 Ziffern und 3 Ziffern zu einer einzigen text-Datei.
Gibt es eine einfache Möglichkeit, die ich können schreiben, ein python-Programm, die dies erreichen können? Hier ist ein Beispiel der Ausgabe, die ich erwarte, wenn der Druck aller die binäre Zahl-Kombinationen möglich für 1, 2, und 3 Ziffern:
Output:
0
1
00
01
10
11
000
001
010
011
100
101
110
111
- zunächst ist es super einfach, wenn Sie irgendwelche Programmier-Erfahrungen überhaupt. zweitens, warum würden Sie wollen sogar, dies zu tun? Ich kann mir nicht vorstellen, dass es eine guten Grund für dies alles. Vielleicht, wenn Sie uns sagen, warum, wir können helfen, Steuern Sie besser.
- Ich habe keine Programmierkenntnisse, andere als Verständnis der grundlegenden Konzepte dahinter. Dies ist vor allem wegen meiner eigenen Neugier, mir helfen zu verstehen die Programmierung besser aus theoretischer Sicht.
- Dies ist definitiv nicht der Weg, um zu gewinnen besseres Verständnis der theoretischen Konzepte der Programmierung. Wenn Sie das tun wollen, Lesen Sie einige Bücher, das Internet durchsuchen und versuchen zu lösen das problem auf eigene Faust. Es scheint mir, dass Sie nur möchten, dass wir Ihre Hausaufgaben für Sie.
- Hat Ihr Lehrer Ihnen erlauben, die Verwendung von python 2.6 oder 3.0? Wenn ja, wird die standard-library kommt die Rettung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Naive Lösung, die das problem löst und ist allgemein genug für jede Anwendung, die Sie haben könnten, ist diese:
Grundsätzlich, das allmählich baut sich einen Baum im Speicher, der alle Kombinationen, und dann gibt Sie zurück. Es ist Speicher-intensiv, aber, und so ist unpraktisch für groß angelegte Kombinationen.
Andere Lösung für das problem ist in der Tat zu verwenden, zu zählen, aber dann transformieren die erzeugten zahlen in einer Liste von Wörtern aus der Wortliste. Dazu müssen wir zunächst eine Funktion (genannt
number_to_list()
):Dies ist in der Tat, ein system für die Umwandlung von dezimalen zahlen zu anderen Basen. Wir schreiben dann die Funktion zählen; das ist relativ einfach, und machen den Kern der Anwendung:
Dies ist ein Python-generator, so dass es ein generator ermöglicht die Verwendung weniger RAM. Es ist ein wenig Arbeit zu tun, nachdem Sie die Zahl in eine Liste von Wörtern; dies ist, da diese Listen müssen Polsterung, so dass Sie auf die gewünschte Länge. Es würde werden wie folgt verwendet:
Wie Sie sehen können, erhalten Sie eine Liste von Listen. Jede dieser sub-Listen enthält, eine Sequenz der ursprünglichen Worte; Sie könnten dann etwas tun, wie
map(''.join, list(combinations('01', 3)))
abrufen, die Folgendes Ergebnis:Könntest du dann schreiben Sie diese auf die Festplatte; eine bessere Idee, jedoch wäre die Nutzung der eingebauten Optimierungen, die Generatoren haben, und tun Sie etwas wie dieses:
Diese wird nur so viel RAM wie nötig (genug, um eine Kombination). Ich hoffe, das hilft.
Sollte es nicht allzu schwer sein, in den meisten Sprachen. Tut der folgende pseudo-code helfen?
Eine basic-Funktion zu produzieren, die alle Permutationen einer Liste ist unten gegeben. In diesem Ansatz, Permutationen verzögert erstellt mithilfe von Generatoren.