Tarefa
Dadas duas listas de caracteres, produza seu produto cartesiano, ou seja, a lista de pares de cada letra da primeira lista com cada letra da segunda lista.
Exemplo
"123456"
e "abcd"
dê:
[["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"]]
Entrada
Duas listas de caracteres ou seqüências de caracteres. Os caracteres usados serão alfanuméricos a-z, A-Z, 0-9
e um caractere pode ocorrer várias vezes e em ambas as entradas ao mesmo tempo.
Resultado
O produto cartesiano das listas de entrada. Ou seja, uma lista de cada par ordenado possível de um personagem da primeira lista e um caractere da segunda lista. Cada par é uma lista ou sequência ou similar de dois caracteres ou de duas seqüências de comprimento um. O comprimento da saída será igual ao produto dos comprimentos das entradas.
Os pares devem ser listados em ordem; primeiro listando o primeiro caractere da primeira lista com o primeiro da segunda lista, seguido por todos os pares do primeiro caractere da primeira lista. O último par consiste no último caractere da primeira lista, juntamente com o último caractere da segunda lista.
A saída deve ser uma lista simples de pares; não é uma matriz 2D em que os pares são agrupados por seu primeiro ou segundo elemento.
Casos de teste
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"]]
fonte
["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]
um formato de saída válido?code-golf
resposta mais curta ganha. Em caso de empate, a primeira resposta para alcançar essa pontuação é geralmente o vencedor (atualmente este ). Dê mais alguns dias, pelo menos, antes de aceitar uma resposta, se for o caso. E veja aqui as diretrizes para responder sua própria pergunta.Respostas:
05AB1E , 1 byte
Experimente online!
fonte
Haskell , 12 bytes
Experimente online!
fonte
Mathematica, 12 bytes
Leva duas listas de caracteres como entrada.
fonte
Tuples@*List
Alternativamente, se são permitidos cabeças arbitrárias:Tuples@*f
APL (Dyalog) , 4 bytes
Experimente online!
,
aplainar∘.
o cartesiano,
concatenaçãofonte
flatten
seja uma boa descrição aqui, já que o achatamento produziria o resultado incorreto, acho que "apertar" ou "reduzir a classificação" ou algo semelhante deve funcionar. (Achatado [1,2] x [1,2] é [1,1,1,2,2,1,2,2])Ruby ,
3018 bytes-12 bytes da Jordânia, lembrando-me de uma maneira de usar as especificações em meu proveito!
Leva listas de caracteres como entrada.
Experimente online!
fonte
.chars
.Perl 6 , 4 bytes
Esta é apenas uma referência ao operador interno de produtos cruzados
X
. Funciona em listas de qualquer tipo, não apenas em caracteres.fonte
Geléia , 1 byte
Experimente online!
fonte
Oitava, 32 bytes
Experimente online!
fonte
Tcl , 60 bytes
Usar:
fonte
JavaScript (ES6),
45363433 bytesRequer Firefox. Recebe as duas entradas como seqüências de caracteres ou como matrizes de caracteres individuais.
<space>
.Tente
fonte
x+y
um formato de saída válido?function
, você já perdeu! Vou apontar algumas dicas para sua resposta mais tarde, mas, enquanto isso, dê uma olhada na minha solução original de mapeamento de matriz no histórico de edições; você deve ser capaz de extrair isso e substituir as funções de seta por funções "reais".Bash, 18
Isso pode ser feito com expansões de chaves:
Experimente online .
fonte
Braquilog , 5 bytes
Experimente online!
Explicação
Bastante auto-explicativo
fonte
QBIC , 29 bytes
Isso imprime seqüências de caracteres de 2 caracteres com todas as combinações em uma linha cada.
Explicação
fonte
Pitão , 3 bytes
Multiplicar duas cordas apenas atua como o produto cartesiano.
Teste online!
fonte
*E
exigiria para trocar a ordem das cadeias de entrada :( pyth.herokuapp.com/...MATL , 2 bytes
*
é o operador geral de produtos e o prefixo oZ
torna o produto cartesiano e pode usar duas seqüências de caracteres como argumentos.Experimente online!
fonte
Na verdade , 1 byte
Experimente online!
∙
é o comando do produto cartesiano.fonte
Ohm , 1 byte
Experimente online!
Literalmente apenas o built-in
fonte
J, 3 bytes
Este é o verbo Catalog em J. Precisamos Ravel (
,
) do resultado para torná-lo unidimensional.Experimente online!
fonte
Lisp comum, 63 bytes
Experimente online!
fonte
Clojure, 21 bytes
fonte
PHP , 69 bytes
Experimente online!
fonte
Python 2 , 39 bytes
Experimente online!
Solução alternativa,
3430 bytes-4 bytes graças a Anders Kaseorg.
Há um built-in para isso ...
fonte
from itertools import*;product
Cheddar , 52 bytes
Experimente online!
fonte
05AB1E , 10 bytes
Experimente online!
Isso é sem o built-in e, sem dúvida, não será competitivo.
fonte
Retina , 49 bytes
Experimente online! Recebe entrada em linhas separadas. Explicação:
Cada caractere na primeira string gera uma linha separada prefixada pela segunda string.
A segunda sequência original é excluída.
Para cada caractere na primeira string, cada caractere na segunda string gera uma linha separada prefixada com o primeiro caractere.
Os caracteres restantes da primeira string são excluídos.
fonte
q / kdb +, 5 bytes
Solução:
Exemplo:
fonte
Carvão ,
87 bytesExperimente online! Link é a versão detalhada do código. Explicação: As variáveis
θ
e seη
referem implicitamente às duas cadeias de entrada. OF
comando faz um loop sobre cada caractere da primeira entrada, enquanto oE
comando mapeia cada caractere da segunda entrada concatenando a variável de loopι
e a variável de mapaκ
, cujo resultado é impresso implicitamente em linhas separadas.fonte
R , 29 bytes
Experimente online!
Observe que a matriz R é preenchida por coluna, portanto, o resultado está na ordem ditada pela especificação.
Se houver permissão
factors
para entrada e saída, existe um built-in ... mas é preciso extrair os níveis resultantes do fator, de modo que no final seriam mais de 29 bytes.R , 11 bytes
Experimente online!
fonte
Japonês ,
52 bytesJapt agora tem um método para o produto cartesiano.
Recebe entrada como 2 matrizes de cadeias de caracteres.
Tente
fonte
C # 7,
7863 bytesfonte