Сравните два списка по максимуму


14

Если даны два разных списка неотрицательных целых чисел, вернуть список с максимальным максимумом (например, [4, 2], [3, 3, 1] -> [4, 2]).

Если они оба имеют одинаковый максимум, вернуть список, который содержит больше экземпляров этого максимума (например [4, 2, 4], [4, 3, 3, 3, 1, 3] -> [4, 2, 4]).

Если после этих сравнений они равны, проведите такое же сравнение, но со своим следующим наивысшим элементом (например [2, 3, 4, 4], [4, 4, 3, 3, 1] -> [4, 4, 3, 3, 1]).

Если после всех этих сравнений они все еще считаются равными, выведите более длинный список (например [4, 3, 2, 1, 0], [1, 2, 3, 4] -> [4, 3, 2, 1, 0]).

Сделайте ваш код как можно короче.

Тестовые случаи

[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]

Ответы:


5

Pyth, 4 байта

eo_S

Попробуйте онлайн

объяснение

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


4

Желе , 4 байта

NÞÞṪ

Попробуйте онлайн!

Как это устроено

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.

2

Haskell, 37 35 байт

import Data.Lists
argmax$sortOn(0-)

Ввод принимается как список из двух элементов, например ( argmax$sortOn(0-) ) [[4,4,4,4,2,4], [4,4,4,4,3,2]].

Найдите элемент во входном списке, который является максимальным после сортировки путем отрицания значений (т. Е. В порядке убывания).


2

Чисто , 42 байта

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

Попробуйте онлайн!


2
Да, это интересный синтаксис. Я так понимаю, это означает «вернуть, aесли паттерн-охранник истинен и bиначе»?
Лайкони

@ Laikoni Да. Узорные паттерны в Clean синтаксически похожи на C-стиль if ... else if ..., где вы можете вкладывать / цеплять их. И так же, как вы можете опустить else if(true), вы можете пропустить последнее условие охраны. (однако, только один раз в каждой строке)
Οurous

1

JavaScript (ES7), 52 байта

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

Этот метод работает без сортировки массивов. Вместо этого он вычисляет сумму 10000, поднятую для элементов каждого массива. Самая большая сумма представляет массив с наибольшим количеством очков. (Это решение предполагает, что ни один массив не содержит более 10 000 элементов.)

Контрольные примеры





0

Шелуха , 3 байта

►Ö_

Попробуйте онлайн!

Это представление в основном принимает двухэлементный список списков в качестве входных данных и получает максимум ( ), отсортированный по их значениям, отсортированным по убыванию ( Ö_).



0

JavaScript (ES6), 98 байт

(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

gсортирует копию своего параметра в обратном порядке (поскольку sortмутирует массив), а hрекурсивно выполняет поэлементное сравнение массивов.


0

Perl 6 , 17 байт

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

Проверьте это (лямбда лямбда лямбда)

  • -* лямбда, которая численно отрицает вход
  • *.sort(-*) лямбда, которая использует результаты применения этого для сравнения элементов
  • *.max(*.sort(-*)) Лямбда, которая находит максимум этих результатов и использует его, чтобы определить, какой вход вернуть.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.