Cuando se le da una lista de valores y un número entero positivo n
, su código debe generar el producto cartesiano de la lista con las n
veces.
Por ejemplo, en pseudocódigo su función podría ser similar a:
for x1 in list:
for x2 in list:
for x3 in list:
...
for xn in list:
print x1, x2, x3, ... , xn
Ejemplo:
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
Las funciones integradas (o funciones de bibliotecas importadas) que computan el producto cartesiano (o potencia) no están permitidas debido a que el código resultante es algo aburrido.
Las entradas y salidas deben delimitarse pero pueden tomarse de cualquier forma razonable.
el orden de salida no importa, pero no se permiten duplicados.
Esta es la primera vez que publico una pregunta, así que si hice algo terriblemente mal, dígamelo.
Respuestas:
Haskell , 21 bytes
Pruébalo en línea!
fuente
Lisp común , 146 bytes
Pruébalo en línea!
sin golf
fuente
R , 41 bytes
Pruébalo en línea!
combn
definitivamente no es un producto cartesiano incorporado, ya que calcula todas lasn
combinaciones de su entrada.R , 40 bytes
Pruébalo en línea!
expand.grid
Es probablemente un producto cartesiano incorporado.fuente
Perl 6 , 16 bytes
Intentalo
Expnded:
fuente
K (ngn / k) , 10 bytes
Pruébalo en línea!
{
}
es una función con argumentosx
yy
#x
el largo dex
y##x
la duración de los tiemposx
repetidosy
!y##x
todas las tuplas de longitud y superior a 0,1, ..., longitud (x) -1 como matriz transpuesta+
transponerx@
elementos dex
en esos índicesfuente
APL (Dyalog Classic) ,
1812 bytesPruébalo en línea!
-6 bytes gracias a @ngn!
fuente
⍳
con un argumento de vectores para generar índices y luego⍺[ ]
para obtener los valores correspondientesRANK ERROR
cuando intenté hacer eso.⍺[↑,⍳⍵⍴≢⍺]
Perl 5 , 33 bytes
Pruébalo en línea!
fuente
Python 2 ,
6958 bytesPruébalo en línea!
Toma una lista
a
y un número enteron
; devuelve una lista de listas.fuente
Ruby , 53 bytes
Pruébalo en línea!
Enfoque recursivo, no tan corto, pero garantizado que estará libre de elementos integrados.
Es tentador usar métodos de permutación, pero esto probablemente no cuenta, y los documentos en realidad no ofrecen garantías de la corrección del orden, aunque parece funcionar en la práctica:
Ruby , 35 bytes
Pruébalo en línea!
fuente
Prólogo (SWI) , 72 bytes
Pruébalo en línea!
fuente
Raqueta, 92 bytes
Pruébalo en línea
Sin golf
fuente
Gelatina ,
1197 bytesPruébalo en línea!
Explicación
fuente
Pure Bash (sin utilidades externas), 57
La entrada se proporciona como parámetros de línea de comandos; Primero es
n
, segundo es una lista separada por comas.Pruébalo en línea!
fuente
Java 10, 19 + 135 = 154 bytes
Pruébalo en línea
Sin golf
Expresiones de gratitud
fuente
Object
yList
en los bucles for-eachvar
para -4 bytes. Además, puede luego cambiarSet<List>f
aList<List>f
ySet o=new HashSet();
avar o=new Stack();
un byte adicional -1. Pruébalo en línea.Oracle SQL, 177 bytes
Cree un tipo de colección (31 bytes):
Luego use la consulta (146 bytes):
Suponiendo que los parámetros de entrada están en la tabla
i
con columnasa
yb
:Violín de SQL
Resultados :
fuente
Bash , 61 bytes
Pruébalo en línea! Encontré repetidamente cadenas y uniendo listas con comas sorprendentemente difíciles de hacer en bash.
fuente
Javascript (Nodo) , 75 bytes
Función recursiva que envía la lista a la consola. Donde
a
hay una matriz vacía yi
es 0 (no estoy seguro si esto aún califica)Pruébalo en línea!
fuente
(m,n,a=[],i=0)=>
JavaScript (SpiderMonkey) , 52 bytes
Pruébalo en línea!
fuente
J , 17 bytes
¿Cómo funciona?
n
Enumero todos los números de dígitos en un sistema de números con base en la longitud de la lista.Pruébalo en línea!
fuente
CJam , 26 bytes
Pruébalo en línea!
Si solo CJam tuviera comandos de un carácter para el producto cartesiano y el aplanamiento.
fuente
Octava , 38 bytes
Función anónima que toma un vector de fila de valores y un número entero.
Pruébalo en línea!
fuente
Pari / GP , 46 bytes
Pruébalo en línea!
fuente