2つのリストを最大値で比較する


14

負でない整数の2つの異なるリストが与えられた場合、最大値が最大のリスト(例えば[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-)

入力は、2つの要素のリストとして取得され( 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場合に戻る」ことを意味すると考えていますか?
ライコニ

@ライコニうん。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

この方法は、配列並べ替えなくても機能します。代わりに、各配列の要素で発生した10,000の合計を計算します。最大の合計は、最高スコアの配列を表します。(このソリューションでは、どちらの配列にも10,000を超える要素がないと想定しています。)

テストケース







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

gsort配列hの要素ごとの比較を再帰的に実行しながら、パラメーターのコピーを逆順に並べ替えます(配列を変更するため)。


0

Perl 6、17バイト

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

テストする (ラムダラムダラムダ)

  • -* 入力を数値的に否定するラムダ
  • *.sort(-*) 要素を比較するためにそれを適用した結果を使用するラムダ
  • *.max(*.sort(-*)) それらの結果の最大値を検出し、それを使用して返す入力を決定するラムダ。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.