เปรียบเทียบสองรายการตามค่าสูงสุด


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.



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 Yep ตัวป้องกันลายใน 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

Huskขนาด 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(-*)) แลมบ์ดาที่ค้นหาผลลัพธ์สูงสุดและใช้เพื่อกำหนดอินพุตที่จะส่งคืน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.