比较两个列表的最大值


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]

Answers:


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

@Laikoni是的。Clean的模式防护在语法上类似于C样式if ... else if ...,您可以在其中嵌套/链接它们。就像您可以忽略一样else if(true),您可以跳过最后一个警卫条件。(但是,每行仅一次)
很有可能

1

JavaScript(ES7),52个字节

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

此方法无需对数组进行排序即可工作。取而代之的是,它计算每个数组元素的总和10,000。总和最大表示得分最高的数组。(此解决方案假定两个数组都没有超过10,000个元素。)

测试用例




0

Ruby 149字节

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

在线尝试!


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(-*))

测试一下 (Lambda Lambda Lambda)

  • -* 在数字上取反输入的lambda
  • *.sort(-*) 使用的lambda使用将其应用到比较元素的结果
  • *.max(*.sort(-*)) lambda查找这些结果的最大值,并使用该值确定要返回的输入。

0

J,20个字节

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

取消高尔夫:

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

本质上是Pyth答案,毫不费力地翻译成J。

在线尝试!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.