Zadanie
Biorąc pod uwagę dwie listy znaków, wypisz ich iloczyn kartezjański, tj. Listę par każdej litery z pierwszej listy z każdą literą z drugiej listy.
Przykład
"123456"
i "abcd"
podaj:
[["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"]]
Wejście
Dwie listy znaków lub ciągów. Używane znaki będą alfanumeryczne, a-z, A-Z, 0-9
a znak może występować zarówno wielokrotnie, jak i na obu wejściach jednocześnie.
Wynik
Iloczyn kartezjański list wejściowych. To jest lista każdej możliwej uporządkowanej pary znaku z pierwszej listy i znaku z drugiej listy. Każda para jest listą lub łańcuchem lub podobnym składającym się z dwóch znaków lub dwóch łańcuchów o długości jeden. Długość wyjściowa będzie równa iloczynowi długości wejściowych.
Pary muszą być wymienione w kolejności; najpierw wyświetla pierwszy znak pierwszej listy z pierwszą z drugiej listy, a następnie wszystkie pary pierwszego znaku z pierwszej listy. Ostatnia para składa się z ostatniego znaku pierwszej listy wraz z ostatnim znakiem drugiej listy.
Wynikiem musi być płaska lista par; nie macierz 2D, w której pary są pogrupowane według pierwszego lub drugiego elementu.
Przypadki testowe
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"]]
źródło
["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]
prawidłowy format wyjściowy?code-golf
wygrywającą najkrótszą odpowiedź. W przypadku remisu pierwszą odpowiedzią na osiągnięcie tego wyniku jest zazwyczaj zwycięzca (obecnie ten ). Daj mu jeszcze co najmniej kilka dni, zanim przyjmie odpowiedź, jeśli w ogóle. I zapoznaj się tutaj z wytycznymi dotyczącymi odpowiedzi na własne pytanie.Odpowiedzi:
05AB1E , 1 bajt
Wypróbuj online!
źródło
Haskell , 12 bajtów
Wypróbuj online!
źródło
Mathematica, 12 bajtów
Pobiera na wejściu dwie listy znaków.
źródło
Tuples@*List
Alternatywnie, jeśli dozwolone są dowolne głowy:Tuples@*f
APL (Dyalog) , 4 bajty
Wypróbuj online!
,
spłaszczyć∘.
kartezjański,
powiązanieźródło
flatten
był to dobry opis, ponieważ spłaszczanie spowodowałoby niepoprawny wynik, myślę, że „zacieśnij” lub „zmniejsz rangę” albo coś podobnego powinno działać. (Spłaszczony [1,2] x [1,2] to [1,1,1,2,2,1,2,2])Rubinowy ,
3018 bajtów-12 bajtów z Jordanii, przypominając mi o sposobie wykorzystania specyfikacji na moją korzyść!
Pobiera listy znaków jako dane wejściowe.
Wypróbuj online!
źródło
.chars
.Perl 6 , 4 bajty
Jest to tylko odniesienie do wbudowanego operatora wielu produktów
X
. Działa na listach wszelkiego rodzaju, nie tylko postaciach.źródło
Galaretka , 1 bajt
Wypróbuj online!
źródło
Oktawa, 32 bajty
Wypróbuj online!
źródło
Tcl , 60 bajtów
Posługiwać się:
źródło
JavaScript (ES6),
45363433 bajtówWymaga przeglądarki Firefox. Pobiera oba dane wejściowe jako ciągi znaków lub tablice poszczególnych znaków.
<space>
.Spróbuj
źródło
x+y
jest prawidłowy format wyjściowy?function
już przegrałeś! Rzucę kilka wskazówek na twoją odpowiedź później, ale w międzyczasie spójrz na moje oryginalne rozwiązanie mapowania tablic w historii edycji; powinieneś być w stanie po prostu to zerwać i zastąpić funkcje strzałek funkcjami „prawdziwymi”.Bash, 18 lat
Można to zrobić za pomocą rozszerzeń nawiasów:
Wypróbuj online .
źródło
Brachylog , 5 bajtów
Wypróbuj online!
Wyjaśnienie
Dość oczywiste
źródło
QBIC , 29 bajtów
Drukuje ciągi 2-znakowe ze wszystkimi kombinacjami w jednym wierszu.
Wyjaśnienie
źródło
Pyth , 3 bajty
Pomnożenie dwóch łańcuchów działa jak produkt kartezjański.
Przetestuj online!
źródło
*E
wymagałoby zamiany kolejności ciągów wejściowych :( pyth.herokuapp.com/…MATL , 2 bajty
*
jest ogólnym operatorem produktów, a przedrostekZ
oznacza, że jest to produkt kartezjański i może przyjmować dwa ciągi argumentów.Wypróbuj online!
źródło
Właściwie 1 bajt
Wypróbuj online!
∙
to polecenie produktu kartezjańskiego.źródło
Ohm , 1 bajt
Wypróbuj online!
Dosłownie tylko wbudowane
źródło
J, 3 bajty
To jest czasownik z katalogu w J. Musimy Ravel (
,
) wynik, aby uczynić go jednowymiarowym.Wypróbuj online!
źródło
Common Lisp, 63 bajty
Wypróbuj online!
źródło
Clojure, 21 bajtów
źródło
PHP , 69 bajtów
Wypróbuj online!
źródło
Python 2 , 39 bajtów
Wypróbuj online!
Alternatywne rozwiązanie,
3430 bajtów-4 bajty dzięki Andersowi Kaseorgowi.
Jest wbudowany w to ...
źródło
from itertools import*;product
Cheddar , 52 bajty
Wypróbuj online!
źródło
05AB1E , 10 bajtów
Wypróbuj online!
Jest to bez wbudowanego i niewątpliwie nie będzie konkurencyjne.
źródło
Siatkówka , 49 bajtów
Wypróbuj online! Pobiera dane w osobnych wierszach. Wyjaśnienie:
Każdy znak w pierwszym ciągu generuje oddzielną linię poprzedzoną drugim ciągiem.
Oryginalny drugi ciąg zostaje usunięty.
Dla każdego znaku w pierwszym ciągu każdy znak w drugim ciągu generuje osobny wiersz poprzedzony pierwszym znakiem.
Pozostałe znaki z pierwszego ciągu są usuwane.
źródło
q / kdb +, 5 bajtów
Rozwiązanie:
Przykład:
źródło
Węgiel ,
87 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Objaśnienie: Zmienne
θ
iη
pośrednio odnoszą się do dwóch ciągów wejściowych.F
Komenda pętle nad każdym charakterem pierwszego wejścia, natomiastE
komenda odwzorowuje nad każdym charakterze drugiego wejścia łącząc zmiennej pętliι
a zmienna mapaκ
, którego rezultatem jest domyślnie drukowane na oddzielnych liniach.źródło
R , 29 bajtów
Wypróbuj online!
Zauważ, że macierz R jest wypełniana według kolumn, więc wynik jest w kolejności podanej przez specyfikację.
Jeśli pozwala się
factors
na wejście i wyjście, jest wbudowany ... ale trzeba wyodrębnić wynikowe poziomy z czynnika, aby ostatecznie przekroczył 29 bajtów.R 11 bajtów
Wypróbuj online!
źródło
Japt ,
52 bajtyJapt ma teraz metodę dla produktu kartezjańskiego.
Pobiera dane wejściowe jako 2 tablice ciągów znaków.
Spróbuj
źródło
C # 7,
7863 bajtówźródło