Compare dos listas por su máximo

14

Dadas dos listas diferentes de enteros no negativos, devuelve la lista que tiene el máximo más alto (p [4, 2], [3, 3, 1] -> [4, 2]. Ej .).

Si ambos tienen el mismo máximo, devuelva la lista que contiene más instancias de este máximo (por ejemplo [4, 2, 4], [4, 3, 3, 3, 1, 3] -> [4, 2, 4]).

Si, después de estas comparaciones, son iguales, haga la misma comparación pero con su siguiente elemento más alto (p [2, 3, 4, 4], [4, 4, 3, 3, 1] -> [4, 4, 3, 3, 1]. Ej .).

Si, después de todas estas comparaciones, todavía se consideran iguales, envíe la lista más larga (por ejemplo [4, 3, 2, 1, 0], [1, 2, 3, 4] -> [4, 3, 2, 1, 0]).

Haz tu código lo más corto posible.

Casos de prueba

[4, 4, 4, 4, 2, 4], [4, 4, 4, 4, 3, 2] -> [4, 4, 4, 4, 2, 4]
[0], [] -> [0]
[0, 0], [0] -> [0, 0]
[1], [0, 0] -> [1]
[4, 4, 4, 4, 4, 2], [4, 4, 4, 4, 4] -> [4, 4, 4, 4, 4, 2]
[1, 0], [0, 0, 0] -> [1, 0]
0WJYxW9FMN
fuente

Respuestas:

5

Pyth, 4 bytes

eo_S

Pruébalo en línea

Explicación

eo_S
 o  NQ    Order the inputs...
  _S      ... by their reversed sorted values...
e         ... and take the last.

fuente
4

Jalea , 4 bytes

NÞÞṪ

Pruébalo en línea!

Cómo funciona

NÞÞṪ  Main link. Argument: [u, v] (pair of vectors)

  Þ   Sort [u, v], using the link to the left as key.
NÞ      Sort u (or v) by the negatives of its values.
        This sorts the vector in descending order.
   Ṫ  Tail; select the last, lexicographically larger vector.
Dennis
fuente
2

Haskell, 37 35 bytes

import Data.Lists
argmax$sortOn(0-)

La entrada se toma como una lista de dos elementos, por ejemplo ( argmax$sortOn(0-) ) [[4,4,4,4,2,4], [4,4,4,4,3,2]].

Encuentre el elemento en la lista de entrada que es el máximo después de ordenar negando los valores (es decir, orden descendente).

nimi
fuente
2

Limpio , 42 bytes

import StdEnv
s=sortBy(>)
?a b|s a>s b=a=b

Pruébalo en línea!

Οurous
fuente
2
Eh, esa es una sintaxis interesante. ¿Supongo que significa "regresar asi el patrón de protección es verdadero y de botra manera"?
Laikoni
@Laikoni Sí. Los protectores de patrones en Clean son sintácticamente similares a un estilo C if ... else if ..., donde puedes anidarlos / encadenarlos. Y al igual que puede omitir else if(true), puede omitir la última condición de guardia. (sin embargo, solo una vez por línea)
Οurousado
1

JavaScript (ES7), 52 bytes

(a,b,m=d=>d.map(n=>N+=1e4**n,N=0)&&N)=>m(a)>m(b)?a:b

Este metodo funciona sin ordenar las matrices. En cambio, calcula la suma de 10,000 generada para los elementos de cada matriz. La suma más grande representa la matriz con la puntuación más alta. (Esta solución supone que ninguna matriz tiene más de 10,000 elementos).

Casos de prueba

Rick Hitchcock
fuente
0

Ruby 149 bytes

->n,m{(n+m).sort.reverse.map{|i|r=((a=n.index(i))&&m.index(i)?(b=n.count(i))==(c=m.count(i))?nil:b>c ?n:m:a ?n:m);return r if r};n.size>m.size ? n:m}

Pruébalo en línea!

Asone Tuhid
fuente
0

Casco , 3 bytes

►Ö_

Pruébalo en línea!

Este envío básicamente toma una lista de dos elementos de listas como entrada y recupera el máximo ( ), ordenado por sus valores ordenados en orden descendente ( Ö_).

Sr. Xcoder
fuente
0

JavaScript (ES6), 98 bytes

(a,b,g=a=>[...a].sort((a,b)=>b-a),h=([a,...b],[c,...d])=>a==c?h(b,d):a<c|!(1/a))=>h(g(a),g(b))?b:a

gordena una copia de su parámetro en orden inverso (ya que sortmuta la matriz), mientras hrealiza recursivamente la comparación por elementos de las matrices.

Neil
fuente
0

Perl 6 , 17 bytes

*.max(*.sort(-*))

Pruébalo (Lambda Lambda Lambda)

  • -* lambda que niega numéricamente la entrada
  • *.sort(-*) lambda que usa que usa los resultados de aplicar eso para comparar elementos
  • *.max(*.sort(-*)) lambda que encuentra el máximo de esos resultados y lo usa para determinar qué entrada devolver.
Brad Gilbert b2gills
fuente
0

J, 20 bytes

[:{.]\:[:#.[:>\:~&.>

Sin golf:

[: {. ] \: [: #. [: > \:~&.>

Esencialmente, la respuesta de Pyth, traducida de manera imprecisa en J.

Pruébalo en línea!

Jonás
fuente