Confronta due elenchi per il loro massimo


14

Dati due diversi elenchi di numeri interi non negativi, restituisce l'elenco che ha il massimo più alto (ad es [4, 2], [3, 3, 1] -> [4, 2].).

Se entrambi hanno lo stesso massimo, restituisce l'elenco che contiene più istanze di questo massimo (ad es [4, 2, 4], [4, 3, 3, 3, 1, 3] -> [4, 2, 4].).

Se, dopo questi confronti, sono uguali, fai lo stesso confronto ma con l'elemento successivo più alto (ad es [2, 3, 4, 4], [4, 4, 3, 3, 1] -> [4, 4, 3, 3, 1].).

Se, dopo tutti questi confronti, sono ancora considerati uguali, visualizza l'elenco più lungo (ad es [4, 3, 2, 1, 0], [1, 2, 3, 4] -> [4, 3, 2, 1, 0].).

Rendi il tuo codice il più breve possibile.

Casi test

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

Risposte:


5

Pyth, 4 byte

eo_S

Provalo online

Spiegazione

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


4

Gelatina , 4 byte

NÞÞṪ

Provalo online!

Come funziona

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 byte

import Data.Lists
argmax$sortOn(0-)

L'input viene preso come un elenco di due elementi, ad es ( argmax$sortOn(0-) ) [[4,4,4,4,2,4], [4,4,4,4,3,2]].

Trova l'elemento nella lista di input che è il massimo dopo l'ordinamento negando i valori (cioè l'ordine decrescente).


2

Pulito , 42 byte

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

Provalo online!


2
Huh, questa è una sintassi interessante. Presumo che significhi "ritorna ase la protezione del modello è vera e bnon"?
Laikoni,

@Laikoni Yep. Le protezioni dei motivi in ​​Clean sono sintatticamente simili a quelle in stile C if ... else if ..., dove è possibile nidificarle / incatenarle. E proprio come puoi omettere else if(true), puoi saltare l'ultima condizione di guardia. (tuttavia, solo una volta per riga)
Οuroso

1

JavaScript (ES7), 52 byte

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

Questo metodo funziona senza ordinare le matrici. Invece, calcola la somma di 10.000 raccolti per gli elementi di ciascun array. La somma più grande rappresenta l'array con il punteggio più alto. (Questa soluzione presuppone che nessuno dei due array abbia più di 10.000 elementi.)

Casi test




0

Rubino 149 byte

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

Provalo online!


0

Buccia , 3 byte

►Ö_

Provalo online!

Questa presentazione prende sostanzialmente un elenco di liste di due elementi come input e recupera il massimo ( ), ordinato in base ai loro valori ordinati in ordine decrescente ( Ö_).



0

JavaScript (ES6), 98 byte

(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

gordina una copia del suo parametro in ordine inverso (poiché sortmuta l'array), mentre hricorsivamente esegue il confronto elementwise degli array.


0

Perl 6 , 17 byte

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

Provalo (Lambda Lambda Lambda)

  • -* lambda che nega numericamente l'input
  • *.sort(-*) lambda che utilizza che utilizza i risultati dell'applicazione per confrontare gli elementi
  • *.max(*.sort(-*)) lambda che trova il massimo di tali risultati e lo utilizza per determinare quale input restituire.

0

J, 20 byte

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

Ungolfed:

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

Essenzialmente la risposta di Pyth, tradotta senza motivo in J.

Provalo online!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.