Una matriz irregular es una matriz en la que cada elemento es una matriz de un número desconocido de enteros positivos.
Por ejemplo, los siguientes son matrices irregulares:
[[1,2,3],[4],[9,10]] Shape: 3,1,2
[[1],[2],[3]] Shape: 1,1,1
[[1,2,3,4,5,6,8]] Shape: 7
Los siguientes no son arreglos irregulares:
[1] Each element will be an array
[] The array will contain at least 1 element
[[1,2,3],[]] Each subarray will contain at least 1 integer
Debe ingresar una matriz irregular y devolver una matriz irregular con los enteros mezclados
- La matriz de salida debe tener la misma forma que la matriz de entrada. Definimos la forma de la matriz como la longitud de cada submatriz.
- Cada número entero debe tener la misma probabilidad de aparecer en cada ubicación posible.
- Puede suponer que el idioma incorporado al azar es aleatorio.
Por ejemplo, si pasara:, [[4],[1,2,3],[4]]
entonces [[1],[4,4,2],[3]]
sería una salida válida, pero [[4,1,3],[3],[4]]
o [[4],[4],[1,2,3]]
no.
code-golf
array-manipulation
random
Nathan Merrill
fuente
fuente
Respuestas:
Jelly, 3 bytes en la página de códigos de Jelly
Explicación:
Debido a que el programa está incompleto (
ṁ
no tiene un segundo argumento establecido), el valor predeterminado es usar la entrada del programa; por lo tantoṁ
, la salida tiene el mismo patrón de sublista que la entrada.Pruébalo en línea!
fuente
F
yṁ
funcionan para varias capas de aplanamiento, no solo una.)ṁ
puede ser cualquier cosa, no solo una lista plana. Por ejemplo: tio.run/nexus/jelly#@/9wZ@P///@jow11FIxidRSijXUUTEC0qY6CWWzs/…PowerShell v2 +, 86 bytes
Funciona a través de la manipulación de cadenas. La entrada se pasa como una cadena que representa la matriz, en cualquier formato que funcione para su idioma. ;-)
-split
s la entrada en no dígitos,sort
s basada en elrandom
bloque de secuencia de comandos (que asignará un peso aleatorio diferente para cada entrada a la clasificación), almacena eso en$a
. Luego,split
ingresamos nuevamente, esta vez en dígitos, y para cada salida el valor actual (generalmente corchetes y comas) concatenado en cadena con el número correspondiente de$a
. Eso se-join
vuelve a unir en una cadena y la salida es implícita.Ejemplos
fuente
Python 2 , 89 bytes
Pruébalo en línea!
fuente
shuffle(r=sum(x,[]))
?JavaScript (ES6),
7875 bytesEsta es la primera vez que recuerdo haberlo usado
.splice()
en un desafío de código de golf ...Puede jugar golf en dos bytes barajando la matriz de antemano:
Sin embargo, esto parece poner el último entero primero la mayoría de las veces, por lo que voy a suponer que los enteros no están distribuidos uniformemente.
fuente
sort
no funciona correctamente cuando se le da una clave de comparación inconsistente. Incluso si el lenguaje aleatorio es aleatorio, su tipo funcionará mal en esta situación, y eso es lo que está creando el sesgo que está viendo. Como tal, creo que la segunda solución es incorrecta.Ruby, 47 bytes
fuente
Brachylog , 17 bytes
Pruébalo en línea!
Explicación
Básicamente, creamos una lista de sublistas con elementos variables que tienen la misma "forma" que la entrada, y luego declaramos que si concatenamos todo en una sola lista, debe resultar en una combinación aleatoria de la concatenación de la entrada en una sola lista .
fuente
Perl, 37 bytes
36 bytes de código +
-p
bandera.Para ejecutarlo:
Explicaciones:
fuente
05AB1E , 17 bytes
Pruébalo en línea!
Estoy esperando la solución 05AB1E o 2sable usando algunos elementos incorporados de desmoldeo / moldeado que aún no conozco :).
fuente
APL, 35 bytes
Apenas estoy golpeando a Perl, tiene que haber algo que me falta.
P.ej:
Explicación:
⍳¨⍴¨⍵
: Para cada submatriz, obtenga una lista de los índices{⍵+⊃⌽⍺}\
: Comenzando con el primer subconjunto, agregue el último valor en el conjunto a cada valor en el siguiente conjunto.⊃¨
: obtener los primeros elementos de las matrices, que son los lugares de inicio(⍳⍴Z←∊⍵)∊
: almacena la matriz aplanada enZ
. Genere un vector de bits donde los que marcan los lugares donde deberían comenzar las sub-matrices.?⍨⍴Z
: genera una permutación aleatoria deZ
.Z[
...]
: permutarZ
.⊂⍨
: Divide la permutación en sub-matrices de acuerdo con el vector de bits.fuente
A⊣(∊A)←(∊A)[?⍨≢∊A←⎕]
Pyth, 15 bytes
Un programa que toma la entrada de una lista e imprime el resultado.
Banco de pruebas
Cómo funciona
fuente
PHP , 105 bytes
reducido a 105 bytes gracias a
user59178
.Respuesta original:
PHP , 132 bytes
fuente
$m=array_merge(...$i=$_GET[i]);
es 25 bytes más corto que$i=$_GET['i'];$m=call_user_func_array('array_merge',$i);
y hace lo mismo. Además, puede soltar{}
después de laforeach
para guardar 2 bytes más.Golpetazo,
6358 bytesEDICIONES:
Nota:
Bash realmente no admite matrices multidimensionales (solo se pueden simular, hasta cierto punto), por lo que, en su lugar, este programa aceptará una representación de texto "serializado" de una matriz resistente, como se muestra en la descripción de la tarea, por ejemplo:
[[1,2,3],[4],[9,10]]
y proporcionará resultados en el mismo formatoGolfed
Prueba
Una buena ventaja es que puedes alimentarlo con matrices resistentes de una profundidad arbitraria:
y seguirá funcionando correctamente.
Pruébalo en línea!
fuente
Octava, 60 bytes
fuente
MATLAB , 84 bytes
fuente
Java, 368 bytes
El método
static int[][] f( int[][] r ){...}
resuelve el desafío. decidí rodar mi propia interfaz funcional para evitar una importación y agregar un método predeterminado para facilitar su usofuente
Mathematica, 67 Bytes
Explicación: Esto baraja la lista de posiciones de todos los enteros en la matriz desigual 2D.
Union@@
es la abreviatura deFlatten@
Nota: Los corchetes
{}
se usan en lugar de los corchetes[]
.fuente