Wie man zwei Wortlisten kombiniert und permutiert

1780
FernandoSBS

Ich möchte die Wörter aus einer Liste bis zu 3-mal kombinieren und / oder verteilen. Zum Beispiel:

Wenn ich eine Liste habe mit:

apple orange cafe 

und noch eine Liste mit:

11 22 33 

es sollte Kombinationen erzeugen wie:

11appleorange22 33orange11cafe2211 orangecafe3333apple1133 

Die Logik ist das Wort aus jeder Liste kann bis zu 3 Mal wiederholt werden, nicht mehr. Aber in beliebiger Reihenfolge und Permutation. Wie kann ich das erreichen?

0
Nach Ihrer Logik "112233112233112233appleorangeangecafeappleorangecafeappleorangecafe" wäre Ihre längste Kombination aus Ihrem Beispiel, richtig? nixda vor 10 Jahren 0
genau richtig. FernandoSBS vor 10 Jahren 0
@nixda wo bist du? FernandoSBS vor 10 Jahren 0
Benötigen Sie eine Software oder könnte es Code sein? Andy vor 10 Jahren 0
Benötigen Sie eine Software. Weißt du, ich habe es eine Stunde lang versucht zu googeln und kann nicht glauben, dass ich kein Programm finden konnte, das das macht, was ich will. Es gibt eine Website, die fast alles tut (aber nur kombinieren, keine Permute), aber die Wortanzahl begrenzt. Ich glaube, es muss eine lokale Software sein. FernandoSBS vor 10 Jahren 0

2 Antworten auf die Frage

1
Paulo Almeida

Wenn Sie einen Linux-Computer haben (oder Mac OS X), erstellen Sie eine Datei testmit folgendem Inhalt:

apple orange cafe 11 22 33 

gefolgt von sechs leeren Zeilen. Dann führe das aus:

cat test test test|shuf|head -n 18|grep -v ^$|paste -s -d"\0" 

Katze verkettet die Dateien, shuf die Linien schlurft, Kopf ruft die ersten 18 Zeilen (so können Sie Ihre maximale Zeichenfolge haben), grep leere Zeilen und schließt Paste zusammen Leime die Linie.

BEARBEITEN : Sorry, das Windows-Tag ist erst nach dem Posten aufgefallen. Sie können Cygwin dafür installieren, aber Sie können genauso gut das Prinzip übernehmen und in etwas anderes implementieren.

Wie kann ich das mit Powershell machen? auch, was ist mit den leeren Zeilen, wenn ich eine Liste mit 30 Wörtern habe, dann muss ich am Ende 30 leere Zeilen einfügen? FernandoSBS vor 10 Jahren 0
Wahrscheinlich, aber ich wüsste nicht wie. Möglicherweise können Sie dies auch mit Excel tun (Zeilen mischen, transponieren, zusammenführen). Paulo Almeida vor 10 Jahren 0
Ja, bei dieser Methode müssten Sie am Ende so viele leere Zeilen einfügen, wie Sie Wörter haben. Wenn Sie sie jedoch auf andere Weise implementieren, können Sie nur die Wörter haben und eine Zufallszahl von ihnen abrufen. Ich wusste nur keine unmittelbare Möglichkeit, dies auf der Kommandozeile zu tun. Paulo Almeida vor 10 Jahren 0
ok also wie kann man es in eine Textdatei ausgeben? FernandoSBS vor 10 Jahren 0
Leiten Sie unter Linux die Ausgabe um, indem Sie an den Befehl "> Dateiname" anhängen. Paulo Almeida vor 10 Jahren 0
und wenn ich will, dass einige worte nur am anfang verwendet werden und sich auch nicht wiederholen? FernandoSBS vor 10 Jahren 0
Wird es auch alle möglichen Kombinationen erstellen, indem Sie einfach diesen Befehl ausführen? FernandoSBS vor 10 Jahren 0
Wenn Sie Wörter hinzufügen, ist es einfacher, ein Skript zu schreiben und zuerst diese konstanten Wörter und dann das Ergebnis des Mischbefehls auszugeben. Und nein, es erstellt nicht alle möglichen Kombinationen (es sei denn, Sie führen es in einer Schleife aus und speichern neue Permutationen, wenn sie kommen, aber das ist dumm; Sie können ein Skript dafür schreiben). Paulo Almeida vor 10 Jahren 0
Ich muss alle Kombinationen herstellen. Kann ich Ihren Befehl verwenden oder ist es besser von vorne zu beginnen? FernandoSBS vor 10 Jahren 0
1
STTR

Befehlszeile, Eq cat test test test|shuf|head -n 18|grep -v ^$|paste -s -d"\0":

powershell $r=New-Object Random;1..3^|%^|select -f 18^|%{[array]$A+=$_};1..$A.Count^|%{$A[$r.Next(0,$A.Count-1)]}^|?{$_.Length -ne 0}^|%{$S+=$_};$S 

cat test test test ungefähre Korrespondenz `` 1..3 ^ |% `

shuf ungefähre Übereinstimmung (Powershell-Shuffle-Strings in Pipe):

$r=New-Object Random; ... %{[array]$A+=$_};1..$A.Count^|%{$A[$r.Next(0,$A.Count-1)]} 

head -n 18 ungefähre Korrespondenz select -f 18

grep -v ^$ ungefähre Korrespondenz ?{$_.Length -ne 0}

paste -s -d"\0" ungefähre Korrespondenz %{$S+=$_};$S

Wenn Befehlszeile sehen:

cat test test test|shuf|head -n 18|grep -v ^$|paste -s -d"\0" 

stellte sich den Dateityp vor - test:

1 2 3 5  7 8 

Datei verwenden test:

apple orange cafe 11 22 33 

shuffle1.ps1:

$r=New-Object Random;1..3|%|select -f 18|%{[array]$A+=$_};1..$A.Count|%{$A[$r.Next(0,$A.Count-1)]}|?{$_.Length -ne 0}|%{$S+=$_};$S 

Zum Generieren von Text aus Vorlagen eignen sich eher andere Sprachen.

Es braucht einen Spezialisten für Common Lisp und C. Vielleicht ist Haskell ein Experte.

Wenn nötig mathematische symbolische Berechnung, dann ist es wahrscheinlich Maxima.

Sie können jedoch immer alle Werkzeuge ausführen, die nicht für bestimmte Aufgaben konzipiert sind.))).

Es wäre sehr schön, wenn Sie Ihr Problem vollständig beschreiben. Architektonisch.

sollte dies alles in einem Powershell-Skript stehen? Gibt es alle Kombinationen aus? FernandoSBS vor 10 Jahren 0
Entschuldigung, aber ich verstehe deinen Beitrag nicht. Könntest du bitte jeden Schritt besser erklären? FernandoSBS vor 10 Jahren 0
Ich habe ein Passwort für eine Rar-Datei vergessen und versuche, es mit den gebräuchlichen Wörtern herauszufinden, die ich verwende. FernandoSBS vor 10 Jahren 0
@FernandoSBS verwendet 'Passware Kit Professional' ... STTR vor 10 Jahren 1
tolles Programm. Der einzige Nachteil ist, dass ich nicht NUR die Wörter in einer Wortliste verwenden kann, da ich die Anzahl der Zeichen festlegen muss. FernandoSBS vor 10 Jahren 0