Aufgabe
Geben Sie bei zwei gegebenen Zeichenlisten ihr kartesisches Produkt aus, dh die Liste der Paare jedes Buchstabens aus der ersten Liste mit jedem Buchstaben aus der zweiten Liste.
Beispiel
"123456"
und "abcd"
gib:
[["1","a"],["1","b"],["1","c"],["1","d"],["2","a"],["2","b"],["2","c"],["2","d"],["3","a"],["3","b"],["3","c"],["3","d"],["4","a"],["4","b"],["4","c"],["4","d"],["5","a"],["5","b"],["5","c"],["5","d"],["6","a"],["6","b"],["6","c"],["6","d"]]
Eingang
Zwei Listen mit Zeichen oder Zeichenfolgen. Die verwendeten Zeichen sind alphanumerisch a-z, A-Z, 0-9
und ein Zeichen kann sowohl mehrfach als auch in beiden Eingaben gleichzeitig vorkommen.
Ausgabe
Das kartesische Produkt der Eingabelisten. Das heißt, eine Liste jedes möglichen geordneten Paars eines Zeichens aus der ersten Liste und eines Zeichens aus der zweiten Liste. Jedes Paar ist eine Liste oder Zeichenfolge oder Ähnliches mit zwei Zeichen oder zwei Zeichenfolgen mit der Länge eins. Die Länge der Ausgabe entspricht dem Produkt der Länge der Eingaben.
Die Paare müssen der Reihe nach aufgelistet sein. erstes Auflisten des ersten Zeichens der ersten Liste mit dem ersten der zweiten Liste, gefolgt von allen Paarungen des ersten Zeichens der ersten Liste. Das letzte Paar besteht aus dem letzten Zeichen der ersten Liste und dem letzten Zeichen der zweiten Liste.
Die Ausgabe muss eine flache Liste von Paaren sein. keine 2D-Matrix, in der Paare nach ihrem ersten oder zweiten Element gruppiert sind.
Testfälle
inputs output
"123456", "abcd" [["1","a"],["1","b"],["1","c"],["1","d"],["2","a"],["2","b"],["2","c"],["2","d"],["3","a"],["3","b"],["3","c"],["3","d"],["4","a"],["4","b"],["4","c"],["4","d"],["5","a"],["5","b"],["5","c"],["5","d"],["6","a"],["6","b"],["6","c"],["6","d"]]
"abc", "123" [["a","1"],["a","2"],["a","3"],["b","1"],["b","2"],["b","3"],["c","1"],["c","2"],["c","3"]]
"aa", "aba" [["a","a"],["a","b"],["a","a"],["a","a"],["a","b"],["a","a"]]
quelle
["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]
Ist das Ausgabeformat gültig?code-golf
kürzeste Antwort markiert . Im Falle eines Unentschieden ist die erste Antwort, die diese Punktzahl erreicht, normalerweise der Gewinner (derzeit diese ). Nehmen Sie sich wenigstens ein paar Tage Zeit, bevor Sie eine Antwort annehmen, wenn überhaupt. Und siehe hier für Richtlinien auf Ihre eigene Frage zu beantworten.Antworten:
05AB1E , 1 Byte
Probieren Sie es online!
quelle
Haskell , 12 Bytes
Probieren Sie es online!
quelle
Mathematica, 12 Bytes
Nimmt zwei Listen von Zeichen als Eingabe.
quelle
Tuples@*List
Alternativ, wenn beliebige Köpfe erlaubt sind:Tuples@*f
APL (Dyalog) , 4 Bytes
Probieren Sie es online!
,
ebnen∘.
der kartesische,
Verkettungquelle
flatten
hier eine gute Beschreibung ist, da eine Verflachung zu einem falschen Ergebnis führen würde. Ich denke, dass "Verschärfen" oder "Verringern" oder ähnliches funktionieren sollte. (Abgeflacht [1,2] x [1,2] ist [1,1,1,2,2,1,2,2])Ruby ,
3018 Bytes-12 Bytes aus Jordanien, die mich daran erinnern, wie ich die Spezifikation zu meinem Vorteil nutzen kann!
Nimmt Listen von Zeichen als Eingabe.
Probieren Sie es online!
quelle
.chars
.Gelee , 1 Byte
Probieren Sie es online!
quelle
Oktave, 32 Bytes
Probieren Sie es online!
quelle
Tcl , 60 Bytes
Verwenden:
quelle
Perl 6 , 4 Bytes
Dies ist nur ein Hinweis auf den integrierten produktübergreifenden Operator
X
. Es funktioniert auf Listen jeder Art, nicht nur auf Zeichen.quelle
JavaScript (ES6),
45363433 ByteBenötigt Firefox. Nimmt beide Eingaben als Zeichenfolgen oder als Arrays einzelner Zeichen.
<space>
.Versuch es
quelle
x+y
ein gültiges Ausgabeformat?function
, im Golfsport wettbewerbsfähig zu sein. Bis Sie getippt haben , haben Sie bereits verloren! Ich werde später ein paar Hinweise auf Ihre Antwort werfen, aber in der Zwischenzeit einen Blick auf meine ursprüngliche Array-Mapping-Lösung im Bearbeitungsverlauf werfen. Sie sollten in der Lage sein, das einfach abzureißen und die Pfeilfunktionen durch "echte" Funktionen zu ersetzen.Bash, 18
Dies kann mit Klammererweiterungen erfolgen:
Probieren Sie es online aus .
quelle
Brachylog , 5 Bytes
Probieren Sie es online!
Erläuterung
Ziemlich selbsterklärend
quelle
QBIC , 29 Bytes
Dies druckt 2-Zeichen-Zeichenfolgen mit allen Kombinationen in jeweils einer Zeile.
Erläuterung
quelle
Pyth , 3 Bytes
Das Multiplizieren von zwei Zeichenketten wirkt nur als kartesisches Produkt.
Online testen!
quelle
*E
müsste die Reihenfolge der Eingabezeichenfolgen vertauscht werdenMATL , 2 Bytes
*
ist der allgemeine Operator für Produkte und das PräfixZ
macht es zum kartesischen Produkt und kann zwei Zeichenfolgen als Argumente verwenden.Probieren Sie es online!
quelle
Eigentlich 1 Byte
Probieren Sie es online!
∙
ist der kartesische Produktbefehl.quelle
Ohm , 1 Byte
Probieren Sie es online!
Wörtlich nur das eingebaute
quelle
J, 3 Bytes
Dies ist das Katalogverb in J. Wir müssen Ravel (
,
das Ergebnis ), um es eindimensional zu machen.Probieren Sie es online!
quelle
Common Lisp, 63 Bytes
Probieren Sie es online!
quelle
Clojure, 21 Bytes
quelle
PHP , 69 Bytes
Probieren Sie es online!
quelle
Python 2 , 39 Bytes
Probieren Sie es online!
Alternative Lösung,
3430 Bytes-4 Bytes dank Anders Kaseorg.
Es ist ein eingebautes für diese ...
quelle
from itertools import*;product
Cheddar , 52 Bytes
Probieren Sie es online!
quelle
05AB1E , 10 Bytes
Probieren Sie es online!
Dies ist ohne die eingebaute und wird zweifellos nicht wettbewerbsfähig sein.
quelle
Netzhaut , 49 Bytes
Probieren Sie es online! Nimmt Eingaben in separaten Zeilen vor. Erläuterung:
Jedes Zeichen in der ersten Zeichenfolge generiert eine separate Zeile, der die zweite Zeichenfolge vorangestellt wird.
Die ursprüngliche zweite Zeichenfolge wird gelöscht.
Für jedes Zeichen in der ersten Zeichenfolge generiert jedes Zeichen in der zweiten Zeichenfolge eine separate Zeile, der das erste Zeichen vorangestellt ist.
Die verbleibenden Zeichen aus der ersten Zeichenfolge werden gelöscht.
quelle
q / kdb + 5 Bytes
Lösung:
Beispiel:
quelle
Kohle ,
87 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung: Die Variablen
θ
undη
beziehen sich implizit auf die beiden Eingabezeichenfolgen. DerF
Befehl durchläuft jedes Zeichen der ersten Eingabe, während derE
Befehl jedes Zeichen der zweiten Eingabe durchläuft, wobei die Schleifenvariableι
und die Zuordnungsvariable verkettet werdenκ
, deren Ergebnis implizit in separaten Zeilen gedruckt wird.quelle
R 29 Bytes
Probieren Sie es online!
Beachten Sie, dass die R-Matrix spaltenweise gefüllt ist, sodass das Ergebnis in der von der Spezifikation vorgegebenen Reihenfolge angezeigt wird.
Wenn erlaubt zu haben
factors
für Ein- und Ausgabe zu haben, gibt es einen eingebauten ... aber man muss die resultierenden Pegel aus dem Faktor extrahieren, so dass es am Ende mehr als 29 Bytes wären.R , 11 Bytes
Probieren Sie es online!
quelle
Japt ,
52 BytesJapt hat jetzt eine Methode für das kartesische Produkt.
Nimmt die Eingabe als 2 Arrays von Zeichenketten auf.
Versuch es
quelle
C # 7,
7863 Bytesquelle