Introducción
Considere dos matrices de la misma longitud, digamos A = [0,1,0,2]y B = [-1,1,2,2]. Supongamos que sabemos que sus contenidos son equivalentes en algún sentido, elemento por elemento:
- 0es equivalente a- -1,
- 1es equivalente a- 1,
- 0es equivalente a- 2y
- 2es equivalente a- 2.
La equivalencia es transitiva: -1y 0son equivalentes, y 0y 2son equivalentes, por lo que -1y 2también son equivalentes. La unificación de Ay Bes la matriz donde cada elemento de A(o B) ha sido reemplazado por el número más grande que es equivalente a él. En este caso, la unificación sería [2,1,2,2].
La tarea
Escriba un programa o función que tome dos matrices enteras no vacías de igual longitud y genere su unificación. También puede modificar una de las entradas en su lugar en lugar de volver. El conteo de bytes más bajo gana.
Casos de prueba
[0] [0] -> [0]
[1] [2] -> [2]
[0,-1] [-1,-1] -> [0,0]
[0,1,0] [2,1,0] -> [2,1,2]
[1,2,3] [0,0,1] -> [3,3,3]
[0,1,0,2] [-1,1,2,2] -> [2,1,2,2]
[1,0,1,-4] [-3,-1,-2,2] -> [1,0,1,2]
[1,2,3,-2] [1,0,-3,-2] -> [1,2,3,-2]
[-3,-2,-1,0,1] [-1,-1,-1,-1,-1] -> [1,1,1,1,1]
[-3,-2,-1,0,1] [2,-1,0,1,-3] -> [2,2,2,2,2]
[-3,5,5,3,1] [4,2,3,1,2] -> [4,5,5,5,5]
[4,0,2,-5,0] [0,4,-5,3,5] -> [5,5,3,3,5]
[-2,4,-2,3,2,4,1,1] [-2,4,1,2,2,3,1,-2] -> [1,4,1,4,4,4,1,1]
[-10,-20,-11,12,-18,14,-8,-1,-14,15,-17,18,18,-6,3,1,15,-15,-19,-19] [-13,6,-4,3,19,1,-10,-15,-15,11,6,9,-11,18,6,6,-5,-15,7,-11] -> [-8,14,18,14,19,14,-8,-1,-1,15,14,18,18,18,14,14,15,-1,18,18]
[20,15,2,4,-10,-4,-19,15,-5,2,13,-3,-18,-5,-6,0,3,-6,3,-17] [-18,7,6,19,-8,-4,-16,-1,13,-18,8,8,-16,17,-9,14,-2,-12,7,6] -> [20,15,20,19,-8,-4,20,15,17,20,17,17,20,17,-6,14,15,-6,15,20]

Respuestas:
JavaScript (ES6),
1009011010296 bytesMi solución inicial fue de 90 bytes:
Aunque está pasando todos los casos de prueba proporcionados, falla por algo como:
Casos de prueba
Mostrar fragmento de código
fuente
a.map...a.mapse pueden reemplazar porb.mapigual.CJam , 27 bytes
Pruébalo en línea! Banco de pruebas.
Explicación
fuente
Python 2, 91 bytes
fuente
Python, 86 bytes
Simultáneamente actualiza ambas listas reemplazando cada valor en la primera lista por el elemento correspondiente en la segunda lista si es mayor. El reemplazo se realiza con
mapelgetmétodo de un diccionario . Luego, intercambia las listas y se repite hasta que sean iguales.fuente
Pyth, 13 bytes
Pruébelo en línea: demostración
Explicación:
Comience con cada par. Extiende iterativamente cada par (lista) con listas superpuestas, deduplica los elementos y ordena. Pare una vez que este proceso converja. Imprime el máximo de cada lista.
fuente
Php,
266241213200 bytesSolución:
Uso:
u([1,2,3], [0,0,1]);devuelve la matriz deseada.No tan golfizado:
fuente
Dyalog APL ,
2928 bytes⌈/¨({∪¨,/∘.{⍵/⍨≢⍺∩⍵}⍨⍵}⍣≡,¨)La misma idea que el solución Pyth .
fuente
Mathematica, 56 bytes
fuente
Java,
273263 bytesEl método
f(int[]a,int[]b)resuelve el desafío.Primero revise ambas matrices y realice un seguimiento de los números equivalentes. Luego modifique cada elemento en la primera matriz para tener los números equivalentes almacenados.
fuente
Python, 522 bytes
Explicación
Haga una tabla de valores correspondiente a cada elemento único en ambas matrices (
ayben este caso). Por ejemplo sientonces la tabla sería:
luego aplique primero la búsqueda de profundidad, así, por ejemplo, suponga que elijo el elemento más a la izquierda en
ael valor es entonces0y0tiene las equivalencias:0y2. Como0ya ha sido visitado, vaya a2. 2 tiene las equivalencias:0. Entonces, el mejor resultado para elegir el elemento más a la izquierdaaes2. Aquí está el árbol:y quieres tomar el mayor valor allí, entonces el resultado es
2.fuente
PHP, 132 bytes
Función anónima que toma dos matrices.
Esta es mi opinión sobre 'modificar una de las matrices en su lugar', como se especifica en la salida del desafío. Esto recorre cada una de las dos matrices, registra la equivalencia si la actual es más grande que la almacenada, luego recorre la primera matriz y reemplaza todos los valores con sus equivalentes más grandes. El primer conjunto se toma por referencia (de ahí el
&$a), por lo que el conjunto pasado se modifica 'en su lugar'.fuente
Java, 170 bytes
Golfed
Sin golf
Función anónima que toma dos
int[]s como argumentos y devuelve unint[].fuente