ค่าสูงสุด () ไม่เพียงพอ


18

Intro

เพื่อนโพสต์คำถามนี้ในวันนี้ด้วยวิธีที่แตกต่างกันเล็กน้อย - "คำสั่ง [Python] เดียวสามารถกำหนดจำนวนเต็มจำนวนมากที่สุดและพวกเขาไม่เท่ากันหรือไม่"

ในขณะที่เราไม่พบวิธีการทำสิ่งนี้ภายในคำจำกัดความที่สมเหตุสมผลของ "คำสั่งเดียว" ฉันคิดว่ามันอาจเป็นปัญหาที่สนุกสำหรับการเล่นกอล์ฟ

 ท้าทาย

" ส่งคืนรายการที่ใหญ่ที่สุดของจำนวนเต็มถ้า - และ - เท่านั้น - หากไม่เท่ากับทั้งหมด "

โดยเฉพาะอย่างยิ่ง:

รับสตริงที่มีเฉพาะรายการจำนวนเต็มที่คั่นด้วยเครื่องหมายจุลภาค:

  • หากพวกเขาเท่ากันทั้งหมดคืน / ส่งออกไม่มีอะไร
  • อื่นกลับ / ส่งออกที่ใหญ่ที่สุด

กฎระเบียบ

  • การป้อนข้อมูลจะต้องเป็นสตริงที่มีเพียงรายการคั่นด้วยเครื่องหมายจุลภาคของจำนวนเต็ม
  • การส่งออกจะต้องเป็นอะไร (การส่งออกของทุกชนิดไม่ได้) หรืออื่น ๆ องค์ประกอบที่ใหญ่ที่สุดจากการป้อนข้อมูลที่แสดงเป็นมันเป็นในการป้อนข้อมูล

คอมเมนต์อาจเป็นโปรแกรมเต็มรูปแบบหรือเพียงแค่ฟังก์ชั่นให้คุณมีวิธีทดสอบ!

สมมติฐาน

  • สมมติว่าองค์ประกอบรายการอินพุตอาจมากกว่าหนึ่งหลัก แต่ไม่ใหญ่กว่า (2 32 - 1)
  • สมมติว่ารายการอินพุตมีองค์ประกอบมากกว่าหนึ่งล้านรายการ
  • สมมติว่าอินพุตจะไม่รวมค่าลบ
  • สมมติว่าอินพุตจะไม่ว่างเปล่า

เพื่อหลีกเลี่ยงข้อสงสัยคำอธิบายของการท้าทายที่ให้หลังจาก "เจาะจงมากขึ้น" จะแทนที่คำแถลงของการท้าทายที่อยู่เหนือ ("กลับมาที่ใหญ่ที่สุด ... ")

 ตัวอย่าง

(1) ทุกอย่างเท่าเทียมกัน:

Input: 1,1
Output:

(2) แตกต่าง:

Input: 1,2
Output: 2

(3) ศูนย์!:

Input: 0,0,0,0,0,0,0,1,0,0
Output: 1

(4) สุ่ม:

Input: 7,3,8,4,8,3,9,4,6,1,3,7,5
Output: 9

(5) ตัวเลขขนาดใหญ่รายการใหญ่:

Input: 627,3894,863,5195,7789,5269,8887,3262,1448,3192
Output: 8887

ตัวอย่างเพิ่มเติม:

(6) รายการที่เท่าเทียมกันขนาดใหญ่กว่าทั้งหมด:

Input: 7,7,7,7,7,7,7,7,7
Output:

(7) รายการที่เท่าเทียมกันขนาดใหญ่ขึ้นจำนวนที่มากขึ้น:

Input: 61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976,61976
Output:

(8) ไม่เท่ากันลิสต์ที่ใหญ่ขึ้นจำนวนที่มากขึ้น:

Input: 96185,482754,96185,96185,96185,96185,96185,96185,7,96185,96185,96185,96185,96185,96185,96185,96185,96185,96185,96185,96185,96185,96185,96185,96185,961185,96185,96185,96185
Output: 961185

เกณฑ์การให้คะแนน

นี่คือcode-golfดังนั้นรหัสที่มีจำนวนไบต์ที่สั้นที่สุดชนะ!


3
มันตกลงเพื่อโยนข้อผิดพลาดเมื่อรายการมีค่าเท่ากันทั้งหมดหรือไม่ และเราสามารถส่งออกค่า Null (เช่นNoneใน Python) แทนการแสดงผลอะไร? นอกจากนี้ทำไมอินพุตต้องเป็นสตริงแทนที่จะเป็นรายการ? และคุณหมายถึงอะไรโดยองค์ประกอบที่ใหญ่ที่สุดจากอินพุทที่แสดงในอินพุท
DJMcMayhem

15
ฉันขอแนะนำให้คลายข้อกำหนดการป้อนข้อมูลเพื่ออนุญาตให้อาเรย์ / รายการจำนวนเต็มเกินไป เรารับประกันได้หรือไม่ว่ารายการจะมีองค์ประกอบอย่างน้อย 2 องค์ประกอบ? เราสามารถส่งออกค่าที่สอดคล้องและไม่ใช่ตัวเลขแทนสิ่งใดถ้าจำนวนเต็มทั้งหมดเท่ากันหรือไม่
Shaggy

15
7,3,7,2กรุณาเพิ่มกรณีทดสอบที่สูงสุดที่เกิดขึ้นมากกว่าหนึ่งครั้งเช่น
nimi

3
เราจะมีกรณีทดสอบที่มีเพียงองค์ประกอบเดียวได้หรือไม่? นอกจากนี้เราสามารถรวมส่วนท้าย,ในอินพุตได้หรือไม่?
Jo King

2
ข้อมูล: ความท้าทายนี้ถูกทดลองแล้ว /// สำหรับ OP: ถึงแม้ว่ากล่องทรายจะไม่ทำงาน แต่ฉันคิดว่ามันเป็นปัญหาเล็กน้อย ปัญหาคือว่าปัญหาบางอย่างเกี่ยวกับความท้าทายนั้นไม่ปรากฏชัดเจนหากมีเพียงคนเดียวที่อ่านความท้าทายและสามารถค้นพบได้ก็ต่อเมื่อสามารถแก้ไขปัญหานั้นได้
user202729

คำตอบ:


8

R , 50 37 ไบต์

-33 ไบต์ขอบคุณ digEmAll! -13 ไบต์ขอบคุณ rturnbull!

x=scan(se=",");if(any(diff(x)))max(x)

ลองออนไลน์!


การป้อนข้อมูลไม่ (ปัจจุบัน) จะต้องมีการสตริงโชคไม่ดี
Shaggy


โอ๊ะฉันเดาว่าลิงก์ก่อนหน้าของฉันผิด นี่ควรจะถูกต้องโดยรวมความคิดของ digEmAll เข้ากับที่ฉันตั้งใจจะโพสต์ ...
Giuseppe

3
37 ไบต์โดยปรับปรุงวิธีที่เราทดสอบอาร์เรย์เพื่อความเท่าเทียมกัน
rturnbull

5

MathGolf 5 ไบต์

è▀s╞╙

ลองออนไลน์!

คำอธิบาย

è      Read whole input as int array
 ▀     Get unique elements
  s    Sort list
   ╞   Discard from left of array
    ╙  Get maximum of list

สิ่งนี้ใช้ได้เพราะทั้งตัวดำเนินการสูงสุดและการละทิ้งจากตัวดำเนินการด้านซ้ายจะไม่ทำอะไรเลยสำหรับรายการที่ว่างเปล่า ดีโอเปอเรเตอร์สูงสุดจะลบรายการและไม่มีรายการใด ๆ สำหรับรายการที่ว่างเปล่า

อาจเป็น 4 ไบต์หากอินพุตสามารถใช้เป็นรายการได้


ข้อมูลที่ป้อนต้องเป็นสตริงที่คั่นด้วยเครื่องหมายจุลภาค
Shaggy

1
@Shaggy ฉันคิดถึงสิ่งนั้น ตอนนี้ MathGolf ยังไม่มีโอเปอเรเตอร์ "แยกตัวละคร" ดังนั้นมันจะต้องใช้เวลาในการทำให้มันถูกต้อง ฉันจะเห็นสิ่งที่ฉันสามารถทำได้
maxb

5

Perl 6 , 26 23 22 ไบต์

-1 ไบต์ต้องขอบคุณ nwellnhof

{.max if .Set>1}o&EVAL

ลองออนไลน์!

ส่งคืนสลิปเปล่าถ้าทุกอย่างเท่ากัน

คำอธิบาย

                o&EVAL  # Eval the string to a list of integers
{              }         # Pass to code block
 .max            # Return the max
      if .Set>1  # If the list converted to a set has more than one element

1
เคล็ดลับคือเรียบร้อยและคุณยังสามารถบันทึกไบต์ด้วยEVAL o&EVAL
nwellnhof

จะไม่if +.Setทำงานเหรอ
Ven

@ ไม่มีหมายเลขเราต้องตรวจสอบว่ามีองค์ประกอบมากกว่าหนึ่งรายการในชุดหรือไม่
Jo King

Mh และค่าที่เหมาะสมคือ 2 ~ ไบต์ใน Perl 6 :(
Ven

5

เยลลี่ขนาด 4 ไบต์

ḟṀE?

โปรแกรมเต็มรูปแบบยอมรับอินพุตเป็นอาร์กิวเมนต์บรรทัดคำสั่ง (ไม่ต้องใส่เครื่องหมาย) ซึ่งพิมพ์เอาต์พุตที่ต้องการ

(โปรดทราบว่ามันเกี่ยวข้องกับ: การป้อนข้อมูลที่ว่างเปล่าอย่างเช่นการป้อนข้อมูลรายการเดียว7และการป้อนข้อมูลหลายรายการเช่น7,8,7เดียวกับข้อมูลจำเพาะที่ดูเหมือนว่าต้องการในปัจจุบัน)

ลองออนไลน์!

อย่างไร?

ḟṀE? - Full program: if one argument is present it is evaluated using Python
     -                 so 7,8,7 -> [7,8,7], while 7 -> 7
ḟṀE? - Main Link: list or integer OR no argument (in which case an implicit argument of 0)
   ? - if...
  E  - ...condition: all equal? (for any integer E yields 1 since the argument is
     -                           treated as a list like [integer])
ḟ    - ...then: filter discard (since it's undefined the right argument is implicitly 
     -                          equal to the left; both are treated as lists, so this
     -                          yields an empty list)
 Ṁ   - ...else: maximum (again an integer is treated as a list)
     - implicit print (Jelly's representation of an empty list is an empty string
     -                 furthermore no newline is printed in either case)

4

APL (Dyalog Classic) , 6 ไบต์

⍪⌈/~⌊/

ลองออนไลน์!

รถไฟคำนวณสูงสุด ( ⌈/) โดย ( ~) เดอะตะกั่วแดง ( ⌊/) กลายเป็นเมทริกซ์ ( )

หากอินพุตมีองค์ประกอบที่แตกต่างเพียงองค์ประกอบเดียว⌈/~⌊/จะว่างเปล่าและจะส่งกลับเมทริกซ์ 0 × 1 ซึ่งแสดงผลเป็นอะไร

มิฉะนั้น⌈/~⌊/จะเป็นเวกเตอร์ 1 องค์ประกอบและจะเป็นเมทริกซ์ 1x1 (มองไม่เห็นแยกออกจากสเกลาร์) ที่มีค่าสูงสุด




3

Python 2 , 42 41 ไบต์

a=input();print('',max(a))[len(set(a))>1]

ลองออนไลน์!


ยินดีต้อนรับสู่ PPCG :) ฉันไม่รู้จัก Python แต่ดูเหมือนว่าสิ่งนี้ต้องการอินพุตเป็นรายการ น่าเสียดายที่ (และโดยไม่จำเป็นความเห็นของฉัน) สเป็คคือ (ในปัจจุบัน) ชัดเจนมากว่าอินพุตต้องเป็นสตริง
Shaggy

@Shaggy element, element, ...โปรแกรมนี้ทำงานถ้าใส่เป็นของแบบฟอร์ม นั่นคือไม่จำเป็นต้องใส่ในวงเล็บ
Arnav Borborah

1
รายการใช้งานได้ แต่ไม่จำเป็นเพราะใน Python 2 inputโดยค่าเริ่มต้นevalสิ่งที่สตริงจะถูกส่งผ่านจาก stdin
Arnav Borborah

1
40 ไบต์ ฉันไม่ทราบว่ารายการองค์ประกอบหนึ่งสามารถมีส่วนท้ายได้,หรือไม่เนื่องจากวิธีการแก้ปัญหาของคุณเกิดข้อผิดพลาดหากอินพุตเป็นเพียงหมายเลขเดียว
Jo King

2
@ โจกิ้งมีเหตุผลที่คุณไม่สามารถเปลี่ยน!=เป็น a >เพราะอินพุตจะไม่ว่างเปล่าหรือไม่?
nedla2004

3

Haskell , 77 75 61 ไบต์

f.read.('[':).(++"]")    
f a=[0|any(/=a!!0+0)a]>>show(maximum a)

ลองออนไลน์!

('[':).(++"]")รับสาย (เช่น"1,2,1,3") และใส่ไว้ในวงเล็บ ( "[1,2,1,3]") จากนั้นreadเปลี่ยนสตริงให้เป็นรายการจำนวนเต็ม ([1,2,1,3] )

ฟังก์ชั่นfใช้เคล็ดลับนี้สำหรับเงื่อนไขที่สั้นกว่าหากหนึ่งในผลลัพธ์คือรายการที่ว่างเปล่า any(/=a!!0+0)aตรวจสอบว่ารายการaมีองค์ประกอบใด ๆ a!!0ที่ไม่ได้เท่ากับองค์ประกอบแรกของ ( +0สิ่งจำเป็นคือสิ่งที่readรู้ว่ามันต้องมองหารายการตัวเลข) หากองค์ประกอบทั้งหมดเท่ากันผลการทดสอบนี้Falseจะส่งคืนสตริงว่างเปล่า มิฉะนั้นshow(maximum a)นั่นคือจำนวนสูงสุดของรายการที่ถูกแปลงเป็นสตริงจะถูกส่งคืน


@nimi ขอบคุณที่ชี้ให้เห็น!
Laikoni

3

สีแดง 81 ไบต์

x: split input","forall x[x/1: load x/1]sort x: unique x if 1 <>length? x[last x]

เช่นเดียวกับโซลูชัน R โค้ดขนาดใหญ่กำลังจัดการกับสตริงอินพุต "1,1,2,44,1" หากเรามีบล็อกนั้นเช่น: x: [1 1 2 44 1]จากนั้นเราสามารถทำได้ใน 41 ไบต์:

sort x: unique x if 1 <>length? x[last x]

4
ยินดีต้อนรับสู่ PPCG! โดยทั่วไปเราขอลิงค์ไปยังล่ามเพื่อตรวจสอบการแก้ไขและเดนนิสหนึ่งใน mods ของเราได้ทำการตั้งค่าลองออนไลน์! เพียงเพื่อวัตถุประสงค์ดังกล่าว! มันจะจัดรูปแบบคำตอบของคุณให้คุณด้วย! หวังว่าคุณจะสนุกกับเวลาของคุณที่นี่!
Giuseppe

sort x: unique load replace/all input","" "if 1 <>length? x[last x]สำหรับ 67 ไบต์ น่าเสียดายที่inputใช้งานไม่ได้ใน TIO ถ้าคุณทำให้มันเป็น func มันใช้งานได้ดีใน TIO: 73 bytes
Galen Ivanov

3

APL (Dyalog Unicode)ขนาด 12 ไบต์

โปรแกรมเต็มรูปแบบ พร้อมต์สำหรับสตริงจาก stdin

{1≠≢∪⍵:⌈/⍵}⎕

ลองออนไลน์!

 พร้อมท์สำหรับและประเมินผลการแสดงออก (จุลภาคเชื่อมตัวเลขเข้าในรายการ)

{} ใช้แลมบ์ดานิรนามดังต่อไปนี้ ( คืออาร์กิวเมนต์รายการหมายเลข):

1≠ [ถ้า] 1 แตกต่างจาก ...

 จำนวนของ ...

 ตัวเลขที่ไม่ซ้ำใน ...

 รายการ

: แล้วก็

⌈/ ส่งคืนค่าสูงสุดจากทั้งหมด (การลดลงสูงสุด) ...

 รายการ

 [อื่น: ไม่ทำอะไรเลย]


1 ≠≢∪ที่นี่ดูเหมือนว่าจะพบเฉพาะในกรณีที่อาร์กิวเมนต์ของมันเป็นรายการไม่ใช่การซ้ำซ้อนของตัวเลขเดียวกันดังนั้นจึงไม่ใช่ 1 1 1 หรือ 22 ดังนั้น 1 ≠≢∪1 1 2 3 3 กลับจริงแม้ว่า 3 จะไม่ซ้ำกันและถ้าที่เป็นจริงจะกลับมา⌈ / ⍵สูงสุด 3 (แม้ว่ามันจะไม่กลับไม่มีผลลัพธ์) ข้อผิดพลาดของฉันอยู่ที่ไหน หรือเป็นไปได้ ':' มีความหมายต่างกัน
RosLuP

@RosLuP แม้ว่าจะมีการทำซ้ำและแม้กระทั่งการทำซ้ำจำนวนสูงสุดเรายังคงต้องพิมพ์สูงสุด เฉพาะในกรณีที่รายการมีหมายเลขที่ไม่ซ้ำกันจำนวนหนึ่งเราจะไม่พิมพ์อะไรเลย ดูกรณีตัวอย่างสุดท้ายใน OP
อดัม

ใช่ฉันเข้าใจปัญหาอย่างไม่ถูกต้อง ... ขอบคุณ
RosLuP

จะใช้งานได้ไหม ⌈/~⌊/
ngn

@ngn ไม่มันจะขึ้นบรรทัดใหม่หากองค์ประกอบทั้งหมดเท่ากัน
อดัม

3

JavaScript (Node.js) , 49/53 ไบต์

รุ่นเดิมของฉันใช้อยู่ .every() 53 ไบต์

ฟังก์ชั่นที่ส่งคืน '' จะนับเป็นไม่มีเอาต์พุตหรือไม่ แน่นอนว่าสามารถปรับปรุงได้เมื่อ ...

s=>(a=s.split`,`).every(e=>a[0]==e)?'':Math.max(...a)

ลองออนไลน์!


รุ่นปรับปรุงใช้Set()โดย Shaggyขนาด 49 ไบต์

s=>new Set(a=s.split`,`).size>1?Math.max(...a):``

ลองออนไลน์!


2
การปรับปรุงอย่างรวดเร็วมาก : tio.run/##y0osSyxOLsosKNHNy09J/Z9m@7/…
Shaggy

@Shaggy ดี! ฉันเริ่มใช้ Set แต่ไม่สามารถทำให้สั้นได้เท่าที่ควร
Chris M

2

Neim , 4 ไบต์

𝐐𝐎Ξ𝐠

คำอธิบาย:

  Ξ   If
𝐐    all elements are equal
  𝐎  not
      then
   𝐠  get greatest element

ลองออนไลน์!


2
ปัจจุบันอินพุตต้องเป็นสตริงจำนวนเต็มที่คั่นด้วยจุลภาค แต่ฉันได้ถามว่าเราสามารถใช้อาร์เรย์แทนได้หรือไม่
Shaggy

2

เสียงคู่แปดฟ 28 ไบต์

ส่งคืนค่าสูงสุด (ตัวเลขซึ่งเป็นเมทริกซ์ 1x1) หรือเมทริกซ์ว่างเปล่า (1x0)

@(a)max(a)(1+all(a(1)==a):1)

ลองออนไลน์!


2
การป้อนข้อมูลเป็นสตริงของตัวเลขคั่นด้วยเครื่องหมายจุลภาค
โจคิง

2

Japt, 16 ไบต์

นี่จะเป็น 9 ถ้าไม่ใช่สำหรับรูปแบบอินพุตที่เข้มงวดโดยไม่จำเป็น 7 ถ้าการโยนข้อผิดพลาดจะนับว่าไม่มีผลอะไร

ถือว่าสตริงมีจำนวนเต็มอย่างน้อย 2 ตัว

q, mn
â ÊÉ?Urw:P

ลองมัน


2

เสียงกระเพื่อมสามัญ 102 ไบต์

(lambda(x &aux(c(read-from-string(concatenate'string"#.`("x")"))))(or(apply'= c)(princ(apply'max c))))

ลองออนไลน์!

ขนาดส่วนใหญ่เกิดจากการป้อนข้อมูล ด้วยอินพุตเป็นรายการปกติความยาวจะลดลงเหลือ 46 ไบต์:

(lambda(x)(or(apply'= x)(princ(apply'max x))))

2

XPath 3.1, 54 ไบต์

ด้วยสตริงอินพุตเป็นไอเท็มบริบท:

let$t:=tokenize(.,',')!xs:int(.)return max($t)[$t!=$t]

อาจลดลงหนึ่งตัวอักษรหากคุณอนุญาตให้บริบทผูกส่วนนำหน้าสั้นกว่า "xs" ในเนมสเปซ XML Schema

คำอธิบาย: ใช้สตริงอินพุต tokenizes on ตัวคั่น "" ใช้xs:int()กับโทเค็นแต่ละตัวในการแปลงเป็นจำนวนเต็มคำนวณค่าสูงสุดของลำดับส่งออกค่าสูงสุดที่ระบุ$t!=$tเป็นจริง หาก A และ B เป็นลำดับดังนั้นA!=Bถ้าเป็นจริงจะมีคู่ของรายการ (จาก A, b จาก B) เช่นนั้นa!=bดังกล่าวว่า

หากอินพุตสามารถจัดหาเป็นลำดับของจำนวนเต็ม $ s แทนที่จะเป็นสตริงที่คั่นด้วยเครื่องหมายจุลภาคดังนั้นโซลูชันจะลดลง

max($s)[$s!=$s]

(15 ไบต์ - ซึ่งอาจเป็นทางออกที่สั้นที่สุดในภาษาที่ไม่ได้ออกแบบมาเพื่อวัตถุประสงค์ที่กระชับ)

หมายเหตุ : สิ่งนี้ไม่เป็นไปตามข้อกำหนด "ที่แสดงอยู่ในอินพุต" - หากมีจำนวนเต็มด้วยเลขศูนย์นำหน้าหรือเครื่องหมายบวกในอินพุตสิ่งเหล่านี้จะหายไป ฉันสงสัยว่ามันเป็นความจริงสำหรับโซลูชันอื่น ๆ เช่นกัน


2

K4 , 38 35 ไบต์

{$[1=#:t:?:(7h$","\:x)-48;;*:t@>t]}

กรณีทดสอบ:

q)k){$[1=#:t:?:(7h$","\:x)-48;;*:t@>t]}"1,2,4,4"
,4
q)k){$[1=#:t:?:(7h$","\:x)-48;;*:t@>t]}"4,4,4,4"
q)
q)k){$[1=#:t:?:(7h$","\:x)-48;;*:t@>t]}"7,3,8,4,8,3,9,4,6,1,3,7,5"
,9
q)k){$[1=#:t:?:(7h$","\:x)-48;;*:t@>t]}"7,7,7,7,7,7,7,7,7,7,7,7,7"
q)

ฉันไม่ค่อยคล่องแคล่วในตัวแปร k ใด ๆ ที่มีอยู่บน TiO ดังนั้นจึงไม่มีตัวอย่างออนไลน์ให้ใช้ฉันจะพยายามหาวิธีหนึ่ง

คำอธิบาย

หากคุณสงสัยว่าเหตุใดการดำเนินการบางอย่างจึงดำเนินการต่อหน้าผู้อื่น K4 ไม่มีลำดับความสำคัญของโอเปอเรเตอร์แทนการตีความจากขวาไปซ้ายแทน นิพจน์คั่นด้วยเครื่องหมายอัฒภาค

   $[expr;`True;`False] is the conditional format

{$[1=#:t:?:(7h$","\:x)-48;;*:t@>t]}
               ","\:x                 //split string on commas
            7h$                       //cast strings to long
                      -48             //they'll be from ascii format, so compensate
         ?:                           //get distinct list      
       t:                             //set list to variable t        
     #:                               //get count of t
   1=                                 //check if count t = 1
                         ;;           //return nothing if true
                             t@>t  //if false, sort t descending
                           *:         //return first value

อาจจะสามารถเล่นกอล์ฟได้มากขึ้นไม่ใช่แฟนของการใช้ฟังก์ชันชั่วคราวที่สิ้นสุด

แก้ไข: หากเครื่องหมายจุลภาคในการส่งออกเป็นปัญหาก็สามารถแก้ไขได้ด้วยสองไบต์เพิ่มเติม:

q)k){$[1=#:t:?:(7h$","\:x)-48;;*:,/t@>t]}"1,2,4,4"
4
                                 ,/                 //joins the single element lists into one

เมื่อรวมเป็น40 37 แต่เครื่องหมายจุลภาคหน้าหมายเลขนั้นหมายถึงว่ามันเป็นรายการองค์ประกอบเดียวซึ่งตรงข้ามกับอะตอม


2

PHP (<= 5.6) 64 74 ไบต์

 echo array_count_values($a=split(',',$argn))[$m=max($a)]==count($a)?'':$m;

เรียกใช้เป็นไพพ์ด้วย-nRหรือทดสอบทางออนไลน์

splitถูกลบออกใน PHP7 แต่เนื่องจากฉันต้องเพิ่ม 10 เพื่อแก้ไขปัญหาเล็กน้อยมันก็คุ้มค่าที่จะใช้แทนexplodeซึ่งเทียบเท่ากับในกรณีนี้


Also this doesn't work when there are more than one element with the max value ฉันคิดถึงการIf they are all equal, return/output nothingให้If they are equal, return/output nothingความหมายถ้ามีมากกว่าหนึ่งที่จะส่งออกที่ว่างเปล่า การเพิ่มการ==count($a)แก้ไขมัน เพราะarray_count_valuesนับจำนวนครั้งที่มันปรากฏในอาเรย์ถ้านั่นเท่ากับจำนวนองค์ประกอบทั้งหมดในอาเรย์แล้วเอาท์พุท '' มิฉะนั้นเอาท์พุทค่าสูงสุด
ArtisticPhoenix

1
@ โจ้กกิ้ง - คุณไม่ควรป้อนข้อมูลผ่านตัวแปรที่ประกาศไว้ล่วงหน้า - แก้ไขโดยใช้$argnมันใช้จาก stdin (นี่ถูกใช้ในหลาย ๆ คำตอบของกอล์ฟ) ฉันสามารถยกตัวอย่างของฉันไม่เพียง แต่ผู้ใช้คนอื่น ๆ
ArtisticPhoenix


2

05AB1E , 9 8 ไบต์

',¡ZsËiõ

-1 ขอบคุณไบต์@Cowabunghole

ลองมันออนไลน์หรือตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย:

',¡        '# Split the (implicit) input by ","
   Z        # Push the maximum (without popping the list)
    s       # Swap so the list is at the top of the stack again
     Ëi     # If all elements are equal:
       õ    #  Push an empty string ""
            # (Implicitly output the top of the stack to STDOUT as result)

1
วิธีการแก้ปัญหาที่คล้ายกันสวย แต่คุณสามารถหลีกเลี่ยงได้โดยการทำ',¡ZsËiõประหยัด 1 ไบต์
Cowabunghole

@ Cowabunghole สมาร์ทขอบคุณ!
Kevin Cruijssen

1

Python 2 , 44 ไบต์

k=eval(input())
if~-len(set(k)):print max(k)

ลองออนไลน์!


ฉันเดาว่าevalPython จะแปลงสตริงที่คั่นด้วยจุลภาคเป็นรายการหรือไม่?
Shaggy

1
ใช่; tuple มากขึ้น (รายการที่ไม่เปลี่ยนรูป) หากอินพุตไม่ใช่สตริง (เช่นละเว้นเครื่องหมายอัญประกาศในส่วนอินพุต TIO) ก็สามารถใช้k=input()และรับผลลัพธ์เดียวกันได้
Chas Brown


1

ถ่าน 15 ไบต์

≔I⪪S,θ¿›⌈θ⌊θI⌈θ

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

≔I⪪S,θ

แยกอินพุตบนคอมมาและโยนแต่ละค่าเป็นจำนวนเต็ม

¿›⌈θ⌊θ

ทดสอบว่าค่าสูงสุดมากกว่าค่าต่ำสุดหรือไม่

I⌈θ

ถ้าเป็นเช่นนั้นแล้วโยนค่าสูงสุดที่จะสตริงและพิมพ์


1

Mathematica, 43 ไบต์

If[!Equal@@#,Max@#]&@@#~ImportString~"CSV"&

ฟังก์ชั่นบริสุทธิ์ ใช้เวลาสตริงคั่นด้วยเครื่องหมายจุลภาคเป็น input Nullและผลตอบแทนทั้งจำนวนหรือ ฉันเชื่อว่านี่ถูกต้องเนื่องจากNullไม่มีการแสดงกราฟิก:


1

C (gcc) , 91 ไบต์

M(s)char*s;{long m=atol(s),o,l=0;for(;s=strchr(s,44);o<0?m-=o:0)l|=o=m-atol(++s);s=l?m:-1;}

ลองออนไลน์!

Degolf

M(s)char*s;{
    long m=atol(s),o,l=0; // Read the first integer from string
    for(;s=strchr(s,44); // Advance pointer to next ','
           o<0?m-=o:0) // End of loop: if difference <0, deduct from max, increasing it to new max.
        l|=o=m-atol(++s); // Read next number, and subtract it from current max. 
                          // Bitwise-OR the difference into the l-variable
    s=l?m:-1; // End of function: if l is non-zero, there were at least two different values.
              // Return -1 if l is zero, otherwise the max value.
}

แนะนำM(char*s)แทนM(s)char*s;และindex()แทนที่strchr()
ceilingcat

1

Pyth, 7 ไบต์

Itl{QeS

ลองออนไลน์!
กรณีทดสอบทั้งหมด (รหัสแตกต่างกันเล็กน้อยสำหรับการจัดรูปแบบผลลัพธ์ที่ดีกว่า)

เนื่องจาก Pyth ใช้ Python ข้อมูลผู้ใช้จะถูกตีความเป็นสตริงเสมอซึ่งอาจถูกส่งผ่าน eval()จะขึ้นอยู่กับงูหลามเข้าของผู้ใช้ถูกตีความเสมอเป็นสตริงที่แล้วอาจจะผ่าน โปรแกรม Pyth ทั้งหมดจะทำงานโดยอัตโนมัติQ=eval(input())เป็นคำสั่งแรก

คำอธิบาย:
Itl{QeS  | Full code
Itl{QeSQ | with implicit variables filled
---------+-------------------------------
I        | If
 t       | one less than
  l      | the length of
   {Q    | the deduplicated input
         | is truthy (!=0),
         | print
     e   | the last element of
      SQ | the sorted input

1

Java (JDK) , 101 ไบต์

d->{long m=0,c=-1,b;for(var s:d.split(",")){b=new Long(s);c=c<0|c==b?b:0;m=b>m?b:m;}return c>0?"":m;}

ลองออนไลน์!

อธิบาย

d->{                            // Function taking a String input
    long m=0,c=-1,b;            // Initialise variables
    for(var s:d.split(",")){    // Split by comma and loop over elements
        b=new Long(s);          // Parse String to Long
        c=c<0                   // If c<0 (i.e. this is the first element)
            |c==b               // ...or c is equal to the current element
            ?b                  // Set c to the current element (all elements are the same so far
            :0;                 // Otherwise set c to zero to denote that list is not all same element  
        m=b>m?b:m;              // Set m to max of b and m
    }
    return c>0?""               // If c is not zero then all elements are the same, return nothing
                 :m;            // Else return max element
}

ทางออกโบนัส!

แม้จะพยายามอย่างเต็มที่ แต่ก็ไม่สามารถแก้ปัญหานี้ได้ด้วยการใช้ regex และ Streams ให้น้อยกว่า 105 ไบต์ แต่ฉันชอบความสง่างามของมันจริงๆ

d->d.matches("(.+?)(,\\1)+")?"":java.util.Arrays.stream(d.split(",")).map(Long::new).reduce(0L,Long::max)

100 ไบต์โดยใช้ regex ของคุณร่วมกัน (ลบด้วย?) และวนซ้ำปกติและส่งคืน (แทนสตรีม)
Kevin Cruijssen

1

MATL , 15 9 ไบต์

U&=?}1MX>

ลองออนไลน์!
หลายกรณีทดสอบ

แค่พยายามที่จะป้องกันไม่ให้ MATL ของฉันไม่เป็นสนิมเกินไป!

แก้ไข : สนิมหลังจากทั้งหมด; บันทึกแล้ว 6 ไบต์ขอบคุณ @LuisMendo

คำอธิบาย

U     % str2num - automatically parses comma-separated strings
&=?   % Are all the values equal? 
}     % if not
1M    % Get the numeric matrix again on the stack
X>    % And find its maximum value.

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