Für ein Spiel, wo man Anagramme aus einer Reihe loser Buchstaben finden musste, implementierte ich einen Permutationsalgorithmus, um alle möglichen Anagramme zu finden und diese bei bekannten Buchstabenpositionen zu filtern (-match
ist übrigens toll). Aber für längere Wörter erwies sich dies als sehr fehleranfällig, da das Überfliegen einer großen Liste von Kauderwelsch nicht wirklich die richtigen Worte enthüllt, die darin verborgen waren. SoPowershell, Art der Schnittmenge integriert?
Ich dachte, dass wenn ich eine große Liste von englischen Wörtern haben würde (sollte irgendwo erhältlich sein) Ich konnte nur meine Liste von Permutationen mit der Liste der richtigen Worte schneiden und bekommen (hoffentlich) alle wirklichen Worte aus der Permutationsliste.
Da viele Betreiber in PS arbeiten anders mit Sammlungen dachte ich, ich könnte etwas nur tun, wie
$wordlist -contains $permlist
und die Kreuzung zurück. Leider ist es nicht so einfach. Andere Optionen, die ich gedacht, der wäre über eine Liste zu durchlaufen und machen einen -contains
für jedes Element:
$permlist | ? { $wordlist -contains $_ }
Dies ist wahrscheinlich funktionieren würde, ist aber auch sehr langsam, ich denke, (vor allem, wenn $wordlist
ist das Ergebnis einer gc wordlist.txt
). Oder ich könnte einen gigantischen regulären Ausdruck erstellen:
Aber das wäre wahrscheinlich auch nicht sehr schnell. Ich könnte vielleicht auch findstr
mit oben genannten gigantischen Regex verwenden, aber das fühlt sich einfach falsch an.
Gibt es eingebaute Lösungen, die ich verwenden könnte und die besser sind als meine bisherigen Versuche? Sonst würde ich die Wortliste wahrscheinlich in eine Hashtabelle einfügen und den iterativen -contains
Ansatz verwenden, der dann schnell genug sein sollte.
Ok, das wäre über meinen Ansatz gewesen. Definitiv nicht hübsch. (Und definitiv nicht gut geeignet für den unverpackten Gebrauch von der cmdline selbst). – Joey