Se le dará dos matrices / Listas / vectores de enteros no negativos A y B . Su tarea es dar salida al entero más alto de N que aparece tanto en A y B , y también es único en tanto A y B .
Puede suponer que hay al menos uno de esos números.
Se permite cualquier método / formato de entrada y salida razonable .
Estas lagunas están prohibidas.
Este es el código de golf , por lo que gana el código más corto en cada lenguaje de programación.
Casos de prueba:
A, B -> Salida [6], [1, 6] -> 6 [1, 2, 3, 4], [4, 5, 6, 7] -> 4 [0, 73, 38, 29], [38, 29, 73, 0] -> 73 [1, 3, 4, 6, 6, 9], [8, 7, 6, 3, 4, 3] -> 4 [2, 2, 2, 6, 3, 5, 8, 2], [8, 7, 5, 8] -> 5 [12, 19, 18, 289, 19, 17], [12, 19, 18, 17, 17, 289] -> 289 [17, 29, 39, 29, 29, 39, 18], [19, 19, 18, 20, 17, 18] -> 17 [17, 29, 39, 29, 29, 39, 18, 18], [19, 19, 18, 20, 17, 18] -> 17
fuente
[email protected]/d
) y tomando la entrada como una lista de dos listas.Python 3 ,
615654 bytesGuardado 7 bytes gracias a @ Mr.Xcoder , @ pizzapants184 y @ovs
Pruébalo en línea!
fuente
05AB1E ,
98 bytes-1 byte gracias a Erik the Outgolfer
Pruébalo en línea!
fuente
Casco , 7 bytes
Toma la entrada como una lista de dos listas, también funciona para cualquier número de listas (si es posible, devuelve el número más alto que ocurre exactamente una vez en cada una). Pruébalo en línea!
Explicación
Esta es la primera respuesta de Husk para (ab) usar la nueva función "máximo por"
►
.fuente
Bash + coreutils, 60 bytes
Pruébalo en línea
Bash, 89 bytes
TIO
fuente
sort -rn
consed q
al final en lugar detail -1
afeitarse 1 byte. Gran descubrimiento con porgrep -wf
cierto. +1Jalea , 11 bytes
Pruébalo en línea!
fuente
`
!J, 23 bytes
(-.-.@~:#])
elimina de una lista cualquier elemento repetido&
hacer esto a ambos args([-.-.)
Queremos que A se cruce con B. Esta es la frase equivalente: "A menos (A menos B)">./
Toma el máximoPruébalo en línea!
fuente
e.~#]
. Golf esto ha demostrado ser difícil ... He intentado utilizar/.
tecla o ningún éxito (((1=#)/.~#~.)
para la primera parte, que es de 2 bytes ya por mi cuenta)PowerShell , 94 bytes
Pruébalo en línea!
Toma entrada
$a
y$b
como matrices. Construye un elementofilter
quegroup
es el conjunto de elementos de la matriz de entrada y extrae solo aquellos con uncount
-eq
ual1
(es decir, solo aquellos que son únicos en la matriz de entrada).La siguiente línea construye el algoritmo. Primero nosotros
sort
$a
, luego sacamos aquellos que son-in
los elementos únicos de$b
. Esos son entonces únicos,[-1]
se elige el más grande , y tomamos el.Name
mismo. Eso queda en la tubería y la salida es implícita.fuente
Javascript (ES6),
102867571 bytesGracias @justinMariner por pasar de 102 a 86
Gracias @tsh por pasar de 86 a 75
Gracias @Arnauld por pasar de 75 a 71
Pruébalo en línea!
fuente
e
aparezca solo una vez ena
yb
.lastIndexOf
así, eso es bastante inteligente. Puede reducir esto a 86 bytes: ¡ Pruébelo en línea! . Consulte los consejos de JS para obtener más información.(g=x=>x.filter(y=>y==e).length==1)
es más corto.Haskell ,
5753 bytesPruébalo en línea!
UPD: Gracias @Laikoni
fuente
f
como operador infijo y escribir en[1|...]==[1]
lugar desum[1|...]==1
guardar algunos bytes.!
conand
guarda dos bytes más: ¡ Pruébelo en línea!Wolfram Language (Mathematica) , 40 bytes
Pruébalo en línea!
Cómo funciona
Tally@#
da una lista de los elementos únicos de la primera entrada, junto con sus conteos: por ejemplo,Tally[{2,2,2,6,3,5,8,2}]
rendimientos{{2,4},{6,1},{3,1},{5,1},{8,1}}
.Tally@#2
hace lo mismo para la segunda lista y⋂
encuentra pares presentes en ambos. Luego seleccionamos (conCases
) pares que terminan en1
, tomando el primer elemento de cada resultado, lo que nos da una lista de todos los gemelos únicos. Finalmente,Max
devuelve el gemelo único más grande.fuente
Röda , 48 bytes
Pruébalo en línea!
Inspirado por la respuesta jq170727 de jq .
Explicación:
fuente
F # (.NET Core) ,
117115114111108 bytes115114 bytesOtra solución con
countBy
este tiempo:Pruébalo en línea!
117111 bytesPruébalo en línea!
100% F #! Cualquier ayuda es bienvenida!
¡6 bytes ganados gracias a la notación de prefijo!
108 bytes
@
es la función concat! Gracias @ Ayb4btu por este algoritmo.Pruébalo en línea!
fuente
C # (.NET Core) ,
8584 bytesPruébalo en línea!
Solución ingenua con LINQ (
using System;using System.Linq;
+ 31 caracteres por lo que 116 bytes con encabezado)84! ¡Olvidé el curry!
fuente
Pip ,
1716 bytesEsta es una función que toma dos listas como argumentos. Pruébalo en línea!
Explicación
fuente
APL (Dyalog) , 18 caracteres = 23 bytes *
Un cuerpo completo del programa. Solicita una lista de listas de STDIN. Funciona con cualquier cantidad de listas. Salidas a STDOUT.
Pruébalo en línea!
⎕
solicitud de entrada evaluada de STDIN{
...}⌸¨
para cada lista, llame a la siguiente función para cada elemento único en esa lista, utilizando el elemento único como argumento izquierdo (⍺
) y la lista de índices de su aparición como argumento derecho (⍵
):≢⍵
el recuento de índices (es decir, el número de ocurrencias)1=
igual a 1⍺⍴⍨
use eso para remodelar el elemento específico (es decir, da una lista vacía si no es única)Ahora tenemos dos listas de elementos únicos para cada lista de entrada (aunque cada elemento es una lista, y hay listas vacías como residuo de los elementos no únicos).
∩/
intersección (reducción)∊
ϵ nlist (aplanar)⌈/
max (reducción)* en Clásico, contando
⌸
como⎕U2338
.fuente
MATL , 13 bytes
Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
fuente
PHP, 98 bytes
Proporcionar matrices como parámetros GET
a
yb
.fuente
Java 8, 133 bytes
Explicación:
Pruébalo aquí
fuente
R , 73 bytes
Pruébalo en línea!
Las computadoras se
A
cruzanB
, luego el máximo de la diferencia entre eso y los elementos duplicados deA
yB
.fuente
JavaScript ES5,
122121114 bytesSoy nuevo aquí, así que no sé si puedo eliminar la definición de la función y simplemente poner su contenido (lo que me ahorraría 17 bytes)
Aquí está el ejemplo de trabajo:
122121114122 a 121 bytes: inicialización de ajuste en un para
121 a 114 bytes:
b
tiene que ser una cadenafuente
b
y guardarb=''+b,
?f=(a,b)=>{for(b=''+b,i=a.sort().length;--i+1;)if(a[i]!=a[i+1]&&a[i]!=a[i-1]&&!(b.split(a[i]).length-2))return a[i]}
.SQLite , 118 bytes
Pruébalo en línea!
¡Primera vez en SQL, cualquier ayuda es bienvenida!
fuente
Jq 1.5 , 76 bytes
Expandido
Pruébalo en línea!
Aquí hay otra solución que tiene la misma longitud:
Expandido
Pruébalo en línea!
fuente
APL, 47 bytes
Declara una función anónima que toma dos vectores, elimina elementos duplicados y luego encuentra el elemento más grande en la intersección de los resultados.
A←⍺
yB←⍵
almacenar los argumentos pasados a la función enA
yB
.a=b
devuelve un vector con 1 en cada índice en el quea
es igual ab
. Sia
es un escalar (es decir, una sola cantidad y no un vector), devuelve un vector con 1 donde sea queb
esté el elementoa
y 0 cuando no lo esté. Por ejemplo:{+/⍵=A}
: función anónima anidada; encontrar las ocurrencias del argumento en vectorA
y sumarlas, es decir, encontrar el número de ocurrencias del argumento enA
1={+/⍵=A}¨A
: aplica la función anónima anidada a cada elemento en A y encuentra las que son iguales a 1, es decir, elementos únicos((1={+/⍵=A}¨A)/A←⍺)
: después de encontrar la ubicación de los elementos únicos, seleccione solo estos elementos en el vector original (/
selecciona de los elementos de argumento correctos cuyas ubicaciones corresponden a 1 en el argumento izquierdo)R←((1={+/⍵=A}¨A)/A←⍺)∩(1={+/⍵=B}¨B)/B←⍵
: repite el proceso para el segundo argumento; ahora que tenemos solo los elementos únicos, encuentre la intersección, es decir, elementos comunes y almacénelos en un vectorR
R[⍒R]
: acceder a los elementos deR
en orden decreciente1↑R[⍒R]
: toma el primer elemento deR
cuando se ordena en orden decrecienteCaso de prueba:
fuente
J , 30 bytes
Cómo funciona:
Comienzo con la prueba donde las dos listas se superponen
=/
(inserta la prueba de igualdad entre todos los miembros de las listas:Más de un 1 en la misma columna significa que el número no es único para el argumento izquierdo (6 en este caso); en la fila - por el argumento correcto (3)
Luego, sumo todas las filas y todas las columnas para encontrar dónde están los duplicados:
Encuentro el producto cartesiano de las listas anteriores y establezco los miembros mayores de 1 a 0.
Enmascaro la matriz de igualdad c con m para encontrar los elementos únicos que son comunes a ambas listas y multiplico el argumento izquierdo por esto.
Luego aplano la lista y encuentro el elemento max:
Pruébalo en línea!
fuente
C # (.NET Core) ,
66 + 31 = 9765 + 31 = 96 bytesPruébalo en línea!
+31 bytes para
using System;using System.Linq;
Me inspiré en la respuesta de @ aloisdg. Sin embargo, en lugar de buscar valores únicos en ambas matrices, invertí el orden de las operaciones para que
intersect
sea primero, y luego encuentre el valor máximo de los elementos que ocurren dos veces cuando las matrices se concatenan y están en su intersección. Puedo usar<3
comoCount
será al menos 2 para cualquier valor, ya que estará en ambas matrices.Expresiones de gratitud
-1 byte gracias a @aloisdg y su sugerencia de usar
Func
curry.fuente
Octava ,
5756 bytesFunción anónima que toma como entrada una matriz de celdas de dos matrices numéricas.
Pruébalo en línea!
Explicación
Para cada (
cellfun(@(x)...)
) de las dos matrices de entrada, esto crea una matriz de comparaciones de igualdad por pares entre sus entradas (x.'==x
); mantiene (x(...)
) solo las entradas para las que la suma de la columna es1
(sum(...)==1
); y empaqueta el resultado en una celda ({...}
). Se calcula la intersección (intersect
) de los dos resultados ({:}
) ymax(...)
se toma el máximo ( ).fuente
Wolfram Language (Mathematica) , 49 bytes
Pruébalo en línea!
fuente