Gdy otrzymasz listę wartości i dodatnią liczbę całkowitą n
, twój kod powinien wypisać iloczyn kartezjański listy razem z n
czasem.
Na przykład w pseudokodzie funkcja może być podobna do:
for x1 in list:
for x2 in list:
for x3 in list:
...
for xn in list:
print x1, x2, x3, ... , xn
Przykład:
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
Wbudowane funkcje (lub funkcje z importowanych bibliotek), które obliczają iloczyn kartezjański (lub moc) są niedozwolone, ponieważ wynikowy kod jest nieco nudny.
Wejścia i wyjścia powinny być ograniczone, ale można je przyjąć dowolną rozsądną metodą.
kolejność danych wyjściowych nie ma znaczenia, ale duplikaty nie są dozwolone.
Po raz pierwszy zadaję pytanie, więc jeśli zrobiłem coś okropnie złego, proszę, powiedz mi.
Odpowiedzi:
Haskell , 21 bajtów
Wypróbuj online!
źródło
Common Lisp , 146 bajtów
Wypróbuj online!
bez golfa
źródło
R , 41 bajtów
Wypróbuj online!
combn
zdecydowanie nie jest wbudowanym produktem kartezjańskim, ponieważ oblicza wszystkien
kombinacje danych wejściowych.R , 40 bajtów
Wypróbuj online!
expand.grid
jest prawdopodobnie wbudowanym produktem kartezjańskim.źródło
Perl 6 , 16 bajtów
Spróbuj
Wydane:
źródło
K (ngn / k) , 10 bajtów
Wypróbuj online!
{
}
jest funkcją z argumentamix
iy
#x
długośćx
y##x
długośćx
powtarzanychy
czasów!y##x
wszystkie krotki długości y powyżej 0,1, ..., długość (x) -1 jako transponowana macierz+
transponowaćx@
elementyx
tych wskaźnikówźródło
APL (Dyalog Classic) ,
1812 bajtówWypróbuj online!
-6 bajtów dzięki @ngn!
źródło
⍳
z argumentem wektora do generowania indeksów, a następnie⍺[ ]
, aby uzyskać odpowiednie wartościRANK ERROR
kiedy próbowałem to zrobić.⍺[↑,⍳⍵⍴≢⍺]
Perl 5 , 33 bajtów
Wypróbuj online!
źródło
Python 2 ,
6958 bajtówWypróbuj online!
Pobiera listę
a
i liczbę całkowitąn
; zwraca listę list.źródło
Rubin , 53 bajty
Wypróbuj online!
Podejście rekurencyjne, nie tak krótkie, ale z pewnością pozbawione jakichkolwiek wbudowanych elementów.
Kuszące jest stosowanie metod permutacji, ale to chyba się nie liczy, a dokumenty faktycznie nie podają żadnych gwarancji poprawności zamówienia, choć wydaje się, że działa w praktyce:
Rubin , 35 bajtów
Wypróbuj online!
źródło
Prolog (SWI) , 72 bajty
Wypróbuj online!
źródło
Rakieta, 92 bajty
Wypróbuj online
Nie golfił
źródło
Galaretka ,
1197 bajtówWypróbuj online!
Wyjaśnienie
źródło
Pure Bash (bez zewnętrznych narzędzi), 57
Dane wejściowe podano jako parametry wiersza polecenia; 1st is
n
, 2nd to lista rozdzielona przecinkami.Wypróbuj online!
źródło
Java 10, 19 + 135 = 154 bajtów
Wypróbuj online
Nie golfił
Podziękowanie
źródło
Object
iList
w for-each pętli dovar
do -4 bajtów. Ponadto, można następnie zmienićSet<List>f
sięList<List>f
iSet o=new HashSet();
abyvar o=new Stack();
za dodatkową -1 bajt. Wypróbuj online.Oracle SQL, 177 bajtów
Utwórz typ kolekcji (31 bajtów):
Następnie użyj zapytania (146 bajtów):
Zakładając, że parametry wejściowe znajdują się w tabeli
i
z kolumnamia
ib
:SQL Fiddle
Wyniki :
źródło
Bash , 61 bajtów
Wypróbuj online! Znalazłem powtarzanie ciągów i łączenie list przecinkami zaskakująco trudne do zrobienia w bash.
źródło
JavaScript (węzeł) , 75 bajtów
Funkcja rekurencyjna, która wysyła listę do konsoli. Gdzie
a
jest pusta tablica ii
wynosi 0 (nie jestem pewien, czy nadal się kwalifikuje):Wypróbuj online!
źródło
(m,n,a=[],i=0)=>
JavaScript (SpiderMonkey) , 52 bajty
Wypróbuj online!
źródło
J , 17 bajtów
Jak to działa?
n
Wyliczam wszystkie cyfry-cyfry w systemie liczbowym o podstawie długości listy.Wypróbuj online!
źródło
CJam , 26 bajtów
Wypróbuj online!
Gdyby tylko CJam miał jeden znak polecenia dla kartezjańskiego produktu i spłaszczania.
źródło
Oktawa , 38 bajtów
Anonimowa funkcja, która pobiera wektor wiersza wartości i liczbę całkowitą.
Wypróbuj online!
źródło
Pari / GP , 46 bajtów
Wypróbuj online!
źródło