Wenn Sie eine Werteliste und eine positive Ganzzahl erhalten n
, sollte Ihr Code das kartesische Produkt der Liste mit sich selbst n
mal ausgeben .
Im Pseudocode könnte Ihre Funktion beispielsweise ähnlich sein wie:
for x1 in list:
for x2 in list:
for x3 in list:
...
for xn in list:
print x1, x2, x3, ... , xn
Beispiel:
repeated_cart([1,2,3], 3)
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3
Eingebaute Funktionen (oder Funktionen aus importierten Bibliotheken), die das kartesische Produkt (oder die Leistung) berechnen, sind nicht zulässig, da der resultierende Code etwas langweilig ist.
Ein- und Ausgänge sollten abgegrenzt werden, können aber mit jeder vernünftigen Methode durchgeführt werden.
Die Reihenfolge, in der die Ausgabe erfolgt, spielt keine Rolle, Duplikate sind jedoch nicht zulässig.
Dies ist mein erstes Mal, dass ich eine Frage stelle. Wenn ich also etwas schrecklich Falsches getan habe, sag es mir bitte.
Antworten:
Haskell , 21 Bytes
Probieren Sie es online aus!
quelle
Common Lisp , 146 Bytes
Probieren Sie es online aus!
ungolfed
quelle
R 41 Bytes
Probieren Sie es online aus!
combn
ist definitiv kein eingebautes kartesisches Produkt, da es allen
Kombinationen seiner Eingabe berechnet .R , 40 Bytes
Probieren Sie es online aus!
expand.grid
ist wahrscheinlich ein kartesisches Produkt eingebaut.quelle
Perl 6 , 16 Bytes
Versuch es
Erweitert:
quelle
K (ngn / k) , 10 Bytes
Probieren Sie es online aus!
{
}
ist eine Funktion mit Argumentenx
undy
#x
die Länge vonx
y##x
die Länge derx
wiederholteny
Zeiten!y##x
alle Länge-y-Tupel über 0,1, ..., Länge (x) -1 als transponierte Matrix+
transponierenx@
Elementex
an diesen Indizesquelle
APL (Dyalog Classic) ,
18 bis12 ByteProbieren Sie es online aus!
-6 Bytes dank @ngn!
quelle
⍳
mit einem Vektor Argumente Indizes zu erzeugen und dann⍺[ ]
die entsprechenden Werte zu erhaltenRANK ERROR
als ich das versucht habe.⍺[↑,⍳⍵⍴≢⍺]
Perl 5 , 33 Bytes
Probieren Sie es online aus!
quelle
Python 2 ,
6958 BytesProbieren Sie es online aus!
Nimmt eine Liste
a
und eine ganze Zahln
; Gibt eine Liste von Listen zurück.quelle
Ruby , 53 Bytes
Probieren Sie es online aus!
Rekursiver Ansatz, nicht so kurz, aber garantiert frei von Einbauten.
Es ist verlockend, Permutationsmethoden zu verwenden, aber dies zählt wahrscheinlich nicht, und die Dokumente geben tatsächlich keine Garantie für die Richtigkeit der Bestellung an, obwohl dies in der Praxis zu funktionieren scheint:
Ruby , 35 Bytes
Probieren Sie es online aus!
quelle
Prolog (SWI) , 72 Bytes
Probieren Sie es online aus!
quelle
Schläger, 92 Bytes
Probieren Sie es online aus
Ungolfed
quelle
Gelee ,
1197 BytesProbieren Sie es online aus!
Erläuterung
quelle
Pure Bash (keine externen Dienstprogramme), 57
Die Eingabe erfolgt als Befehlszeilenparameter. 1. ist
n
, 2. ist eine durch Kommas getrennte Liste.Probieren Sie es online aus!
quelle
Java 10, 19 + 135 = 154 Bytes
Probieren Sie es online aus
Ungolfed
Danksagung
quelle
Object
undList
in den for-each-Schleifen aufvar
-4 Bytes ändern . Außerdem können Sie dann für ein zusätzliches -1-ByteSet<List>f
zuList<List>f
undSet o=new HashSet();
nach wechselnvar o=new Stack();
. Probieren Sie es online aus.Oracle SQL, 177 Bytes
Erstellen Sie einen Sammlungstyp (31 Byte):
Verwenden Sie dann die Abfrage (146 Byte):
Angenommen, die Eingabeparameter befinden sich in der Tabelle
i
mit den Spaltena
undb
:SQL Fiddle
Ergebnisse :
quelle
Bash , 61 Bytes
Probieren Sie es online aus! Ich fand es überraschend schwierig, Strings zu wiederholen und Listen mit Kommas zu verbinden.
quelle
Javascript (Knoten) , 75 Bytes
Rekursive Funktion, die die Liste an die Konsole ausgibt. Wo
a
ist ein leeres Array undi
ist 0 (nicht sicher, ob dies noch qualifiziert ist):Probieren Sie es online aus!
quelle
(m,n,a=[],i=0)=>
JavaScript (SpiderMonkey) , 52 Bytes
Probieren Sie es online aus!
quelle
J , 17 Bytes
Wie es funktioniert?
Ich
n
zähle alle -stelligen Zahlen in einem Zahlensystem mit der Länge der Liste auf.Probieren Sie es online aus!
quelle
CJam , 26 Bytes
Probieren Sie es online aus!
Wenn CJam nur ein Zeichen Befehle für kartesisches Produkt und Abflachung hätte.
quelle
Oktave , 38 Bytes
Anonyme Funktion, die einen Zeilenvektor mit Werten und eine Ganzzahl verwendet.
Probieren Sie es online aus!
quelle
Pari / GP , 46 Bytes
Probieren Sie es online aus!
quelle