Porównaj dwie listy według ich maksimum

14

Biorąc pod uwagę dwie różne listy nieujemnych liczb całkowitych, zwróć listę, która ma najwyższe maksimum (np [4, 2], [3, 3, 1] -> [4, 2].).

Jeśli oba mają takie same maksimum, zwróć listę, która zawiera więcej wystąpień tego maksimum (np [4, 2, 4], [4, 3, 3, 3, 1, 3] -> [4, 2, 4].).

Jeśli po tych porównaniach są one równe, wykonaj to samo porównanie, ale z ich kolejnym najwyższym elementem (np [2, 3, 4, 4], [4, 4, 3, 3, 1] -> [4, 4, 3, 3, 1].).

Jeśli po tych wszystkich porównaniach nadal są one uważane za równe, wypisz dłuższą listę (np [4, 3, 2, 1, 0], [1, 2, 3, 4] -> [4, 3, 2, 1, 0].).

Ustaw swój kod tak krótko, jak to możliwe.

Przypadki testowe

[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
źródło

Odpowiedzi:

5

Pyth, 4 bajty

eo_S

Wypróbuj online

Wyjaśnienie

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

źródło
4

Galaretka , 4 bajty

NÞÞṪ

Wypróbuj online!

Jak to działa

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
źródło
2

Haskell, 37 35 bajtów

import Data.Lists
argmax$sortOn(0-)

Dane wejściowe są traktowane jako lista dwóch elementów, np ( argmax$sortOn(0-) ) [[4,4,4,4,2,4], [4,4,4,4,3,2]].

Znajdź element na liście wejściowej, który jest maksymalny po sortowaniu, negując wartości (tj. Malejącą kolejność).

nimi
źródło
2

Czysty , 42 bajty

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

Wypróbuj online!

Obrzydliwe
źródło
2
To interesująca składnia. Rozumiem, że oznacza to „wróć, ajeśli strażnik wzorów jest prawdziwy, a binaczej”?
Laikoni
@Laikoni Yep. Strażniki wzorów w Clean są składniowo podobne do stylu C if ... else if ..., w którym można je zagnieżdżać / łączyć. I tak jak możesz pominąć else if(true), możesz pominąć ostatni warunek strażnika. (jednak tylko raz w linii)
Οurous
1

JavaScript (ES7), 52 bajty

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

Ta metoda działa bez sortowania tablic. Zamiast tego oblicza sumę 10 000 podniesionych do elementów każdej tablicy. Największa suma reprezentuje tablicę z najwyższym wynikiem. (To rozwiązanie zakłada, że ​​żadna tablica nie ma więcej niż 10 000 elementów).

Przypadki testowe

Rick Hitchcock
źródło
0

Python 2 , 79 bajtów

lambda*a:max(a,key=lambda l:sum(zip(map(l.count,s(l)),s(l)),())[::-1])
s=sorted

Wypróbuj online!

ovs
źródło
0

Ruby 149 bajtów

->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}

Wypróbuj online!

Asone Tuhid
źródło
0

Łuska , 3 bajty

►Ö_

Wypróbuj online!

To przesłanie w zasadzie pobiera dwuelementową listę list jako dane wejściowe i pobiera maksimum ( ), posortowane według ich wartości posortowanych w kolejności malejącej ( Ö_).

Pan Xcoder
źródło
0

JavaScript (ES6), 98 bajtów

(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

gsortuje kopię swojego parametru w odwrotnej kolejności (ponieważ sortmutuje tablicę), a hrekurencyjnie wykonuje elementarne porównanie tablic.

Neil
źródło
0

Perl 6 , 17 bajtów

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

Przetestuj (Lambda Lambda Lambda)

  • -* lambda, która numerycznie neguje dane wejściowe
  • *.sort(-*) lambda, która używa, która wykorzystuje wyniki zastosowania tego do porównania elementów
  • *.max(*.sort(-*)) lambda, która znajduje maksimum tych wyników i używa tego, aby określić, które dane wejściowe zwrócić.
Brad Gilbert b2gills
źródło
0

J, 20 bajtów

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

Nie golfowany:

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

Zasadniczo odpowiedź na pytanie Pytona, przetłumaczona bezładnie na J.

Wypróbuj online!

Jonasz
źródło