Als recht neu zu clojure kämpfe ich immer noch mit seinen Funktionen. Wenn ich 2 Listen haben, sagen: „1234“ und „ABCD“ ich alle möglich zu machen, müssen Listen der Länge bestellt 4. Ausgabe ich haben will für Länge ist 4:clojure - geordnete paarweise Kombination von 2 Listen
("1234" "123d" "12c4" "12cd" "1b34" "1b3d" "1bc4" "1bcd"
"a234" "a23d" "a2c4" "a2cd" "ab34" "ab3d" "abc4" "abcd")
die 2^n in Reihe abhängig von den Eingaben.
Ich habe eine der folgenden Funktionen geschrieben, um per Zufallsauswahl eine einzelne Zeichenfolge/Liste zu generieren. Das Argument [par] wäre so etwas wie [ "1234" "ABCD"]
(defn make-string [par] (let [c1 (first par) c2 (second par)] ;version 3 0.63 msec
(apply str (for [loc (partition 2 (interleave c1 c2))
:let [ch (if (< (rand) 0.5) (first loc) (second loc))]]
ch))))
Der Ausgang 16 wird 1 von Listen sein oben bestellt. Jede der zwei Eingabelisten hat immer die gleiche Länge, sagen wir 2,3,4,5, bis zu 2^38 oder innerhalb des verfügbaren RAM. In der obigen Funktion habe ich versucht, es zu ändern, um alle geordneten Listen zu erzeugen, aber gescheitert. Hoffentlich kann mir jemand helfen. Vielen Dank.
Vielen Dank für Ihre unkomplizierte Lösung für mein Problem. Es hilft auch, meine clojure zu verbessern. – Brian