Tarea
Dadas dos listas de caracteres, genera su producto cartesiano, es decir, la lista de emparejamientos de cada letra de la primera lista con cada letra de la segunda lista.
Ejemplo
"123456"
y "abcd"
dar:
[["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
Dos listas de caracteres o cadenas. Los caracteres utilizados serán alfanuméricos.a-z, A-Z, 0-9
y un carácter puede aparecer varias veces y en ambas entradas al mismo tiempo.
Salida
El producto cartesiano de las listas de entrada. Es decir, una lista de cada posible par ordenado de un personaje de la primera lista y un personaje de la segunda lista. Cada par es una lista o cadena o similar de dos caracteres, o de dos cadenas de longitud uno. La longitud de la salida será igual al producto de las longitudes de las entradas.
Los pares deben estar listados en orden; primero enumera el primer carácter de la primera lista con el primero de la segunda lista, seguido de todos los pares del primer carácter de la primera lista. El último par consiste en el último carácter de la primera lista junto con el último carácter de la segunda lista.
La salida debe ser una lista plana de pares; no es una matriz 2D donde los pares se agrupan por su primer o segundo elemento.
Casos de prueba
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"]]
fuente
["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]
un formato de salida válido?code-golf
por lo tanto, la respuesta más corta gana. En caso de empate, la primera respuesta para alcanzar esa puntuación suele ser la ganadora (actualmente esta ). Sin embargo, déle otros días, al menos, antes de aceptar una respuesta, si es que lo hace. Y vea aquí las pautas para responder su propia pregunta.Respuestas:
05AB1E , 1 byte
Pruébalo en línea!
fuente
Haskell , 12 bytes
Pruébalo en línea!
fuente
Mathematica, 12 bytes
Toma dos listas de caracteres como entrada.
fuente
Tuples@*List
Alternativamente, si se permiten cabezas arbitrarias:Tuples@*f
APL (Dyalog) , 4 bytes
Pruébalo en línea!
,
aplanar∘.
el cartesiano,
concatenaciónfuente
flatten
sea una buena descripción aquí, ya que el aplanamiento produciría un resultado incorrecto, creo que "apretar" o "reducir rango" o algo similar debería funcionar. (Aplanado [1,2] x [1,2] es [1,1,1,2,2,1,2,2])Rubí ,
3018 bytes-12 bytes de Jordan recordándome una forma de usar las especificaciones para mi ventaja.
Toma listas de caracteres como entrada.
Pruébalo en línea!
fuente
.chars
.Perl 6 , 4 bytes
Esto es solo una referencia al operador integrado de productos cruzados
X
. Funciona en listas de cualquier tipo, no solo en personajes.fuente
Jalea , 1 byte
Pruébalo en línea!
fuente
Octava, 32 bytes
Pruébalo en línea!
fuente
Tcl , 60 bytes
Utilizar:
fuente
JavaScript (ES6),
45363433 bytesRequiere Firefox Toma ambas entradas como cadenas o como matrices de caracteres individuales.
<space>
.Intentalo
fuente
x+y
un formato de salida válido?function
, ya has perdido! Lanzaré algunos consejos sobre su respuesta más tarde, pero, mientras tanto, eche un vistazo a mi solución de mapeo de matriz original en el historial de edición; deberías poder arrancar eso y reemplazar las funciones de flecha con funciones "reales".Bash, 18
Esto se puede hacer con expansiones de llaves:
Pruébalo en línea .
fuente
Brachylog , 5 bytes
Pruébalo en línea!
Explicación
Bastante autoexplicativo
fuente
QBIC , 29 bytes
Esto imprime cadenas de 2 caracteres con todas las combinaciones en una línea cada una.
Explicación
fuente
Pyth , 3 bytes
Multiplicar dos cadenas solo actúa como el producto cartesiano.
¡Pruébalo en línea!
fuente
*E
requeriría intercambiar el orden de las cadenas de entrada :( pyth.herokuapp.com/…MATL , 2 bytes
*
es el operador general de los productos y el prefijo loZ
convierte en el producto cartesiano y puede tomar dos cadenas como argumentos.Pruébalo en línea!
fuente
En realidad , 1 byte
Pruébalo en línea!
∙
es el comando del producto cartesiano.fuente
Ohm , 1 byte
Pruébalo en línea!
Literalmente solo el incorporado
fuente
J, 3 bytes
Este es el verbo Catálogo en J. Necesitamos Ravel (
,
) el resultado para hacerlo 1 dimensional.Pruébalo en línea!
fuente
Lisp común, 63 bytes
Pruébalo en línea!
fuente
Clojure, 21 bytes
fuente
PHP , 69 bytes
Pruébalo en línea!
fuente
Python 2 , 39 bytes
Pruébalo en línea!
Solución alternativa,
3430 bytes-4 bytes gracias a Anders Kaseorg.
Hay una función incorporada para esto ...
fuente
from itertools import*;product
Cheddar , 52 bytes
Pruébalo en línea!
fuente
05AB1E , 10 bytes
Pruébalo en línea!
Esto es sin el incorporado, y sin duda no será competitivo.
fuente
Retina , 49 bytes
Pruébalo en línea! Toma entrada en líneas separadas. Explicación:
Cada carácter en la primera cadena genera una línea separada con el prefijo de la segunda cadena.
La segunda cadena original se elimina.
Para cada carácter en la primera cadena, cada carácter en la segunda cadena genera una línea separada con el primer carácter como prefijo.
Los caracteres sobrantes de la primera cadena se eliminan.
fuente
q / kdb +, 5 bytes
Solución:
Ejemplo:
fuente
Carbón ,
87 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación: Las variables
θ
eη
implícitamente se refieren a las dos cadenas de entrada. ElF
comando recorre cada carácter de la primera entrada, mientras que elE
comando asigna sobre cada carácter de la segunda entrada que concatena la variable de bucleι
y la variable del mapaκ
, cuyo resultado se imprime implícitamente en líneas separadas.fuente
R , 29 bytes
Pruébalo en línea!
Tenga en cuenta que la matriz R se llena por columna, por lo que el resultado está en el orden dictado por la especificación.
Si se permite tener
factors
entrada y salida, hay una función incorporada ... pero es necesario extraer los niveles resultantes del factor para que al final sea más de 29 bytes.R , 11 bytes
Pruébalo en línea!
fuente
Japt ,
52 bytesJapt ahora tiene un método para el producto cartesiano.
Toma la entrada como 2 matrices de cadenas de caracteres.
Intentalo
fuente
C # 7,
7863 bytesfuente