Max () to za mało

18

Wprowadzenie

Znajomy zadał dziś to pytanie w nieco inny sposób - „Czy jedno polecenie [Python] może określić największą z liczb całkowitych ORAZ, że nie są one równe?”.

Chociaż nie znaleźliśmy sposobu na zrobienie tego w rozsądnych definicjach „jednego polecenia”, pomyślałem, że może to być fajny problem z golfem.

 Wyzwanie

Zwraca największą z liczb całkowitych, jeśli-i-tylko-jeśli nie wszystkie są równe.

Dokładniej:

Biorąc pod uwagę ciąg zawierający tylko listę liczb całkowitych oddzielonych przecinkami:

  • Jeśli wszystkie są równe, nic nie zwraca / zwraca
  • W przeciwnym razie zwracaj / wysyłaj największe

Zasady

  • Dane wejściowe muszą być ciągiem zawierającym tylko listę liczb całkowitych oddzielonych przecinkami
  • Dane wyjściowe muszą być albo niczym (brak danych wyjściowych), albo też największym elementem z danych wejściowych, przedstawionym tak, jak w danych wejściowych

Wpisy mogą być pełnym programem lub tylko funkcją, pod warunkiem, że podasz sposób ich przetestowania!

Założenia

  • Załóżmy, że elementy listy wprowadzania mogą mieć więcej niż jedną cyfrę, ale nie mogą być większe niż (2 32-1 )
  • Załóżmy, że lista wejściowa zawiera nie więcej niż milion elementów
  • Załóż, że dane wejściowe nie będą zawierać wartości ujemnych
  • Załóż, że dane wejściowe nigdy nie będą puste

Aby uniknąć wątpliwości, wyjaśnienie wyzwania podane tuż po „Bardziej szczegółowo” zastępuje oświadczenie o wyzwaniu powyżej („Zwróć największe ...”).

 Przykłady

(1) Wszyscy równi:

Input: 1,1
Output:

(2) Odmienne:

Input: 1,2
Output: 2

(3) Zero !:

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

(4) Losowo:

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

(5) Większe liczby, większa lista:

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

Dodatkowe przykłady:

(6) Wszystkie równe, większa lista:

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

(7) Wszystkie równe, większa lista, większe liczby:

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) Nie równa, większa lista, większe liczby:

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

Punktacja

Tak code-golfwięc wygrywa kod z najmniejszą liczbą bajtów!

ElectricWarr
źródło
3
Czy można wrzucić błąd, gdy lista zawiera wszystkie równe wartości? I czy możemy wypisać wartość zerową (na przykład Nonew pythonie) zamiast niczego? Ponadto, dlaczego dane wejściowe muszą być ciągiem, a nie listą? A co rozumiesz przez największy element z wejścia, reprezentowany tak, jak jest na wejściu
DJMcMayhem
15
Sugeruję poluzowanie wymagań wejściowych, aby umożliwić tablicę / listę liczb całkowitych. Czy gwarantujemy, że lista będzie zawierać co najmniej 2 elementy? Czy możemy wygenerować spójną, nienumeryczną wartość zamiast niczego, jeśli wszystkie liczby całkowite są równe?
Kudłaty
15
Dodaj przypadek testowy, w którym maksimum występuje więcej niż raz, np 7,3,7,2.
nimi
3
Czy możemy mieć walizkę testową z tylko jednym elementem? Czy możemy również dodać znak końcowy ,do danych wejściowych?
Jo King,
2
Informacje: To wyzwanie zostało piaskownicy. /// Dla OP: Chociaż piaskownica jest dość nieaktywna, (myślę) jest to tylko niewielki problem. Problem polega na tym, że niektóre problemy z wyzwaniem nie są widoczne, jeśli się je przeczyta, i można je odkryć tylko wtedy, gdy się je rozwiązuje.
user202729,

Odpowiedzi:

8

R , 50 37 bajtów

-33 bajtów dzięki digEmAll! -13 bajtów dzięki rturnbull!

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

Wypróbuj online!

Robert S.
źródło
Wejście ma (obecnie) muszą być ciągiem, niestety.
Kudłaty
Ups, chyba mój poprzedni link był nieprawidłowy! To powinno być w porządku, łącząc ideę digEmAll jest z jednej I przeznaczonej na delegowania ...
Giuseppe
3
37 bajtów poprzez ulepszenie sposobu testowania tablicy pod kątem równości.
rturnbull
5

MathGolf , 5 bajtów

è▀s╞╙

Wypróbuj online!

Wyjaśnienie

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

Działa to, ponieważ zarówno operator maksymalny, jak i odrzucenie od lewego operatora nie robią nic dla pustych list. Cóż, operator max usuwa listę i nie wypycha niczego dla pustych list.

Może to być 4 bajty, jeśli dane wejściowe można by traktować jako listę.

maxb
źródło
Dane wejściowe muszą być ciągiem rozdzielanym przecinkami .
Kudłaty
1
@Shaggy, Straciłem to. W tej chwili MathGolf nie ma operatora „podzielonego na postać”, więc jego poprawienie zajmie trochę czasu. Zobaczę co da się zrobić.
maxb
5

Perl 6 , 26 23 22 bajtów

-1 bajt dzięki nwellnhof

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

Wypróbuj online!

Zwraca pusty kupon, jeśli wszystko jest równe.

Wyjaśnienie

                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
Jo King
źródło
1
EVALSztuką jest schludny i można nawet zapisać bajt z o&EVAL.
nwellnhof,
Nie if +.Setdziałałoby?
Ven
@Ven Nie, musimy sprawdzić, czy w zestawie jest więcej niż jeden element.
Jo King
Mh, a bitowe ~ to 2 bajty w Perlu 6 :(
Ven
5

Galaretka , 4 bajty

ḟṀE?

Pełny program akceptujący dane wejściowe jako argument wiersza poleceń (niecytowany), który wypisuje wymagane dane wyjściowe

(Należy pamiętać, że dotyczy to: pustych danych wejściowych jak , danych wejściowych dla pojedynczego elementu, takich jak dane wejściowe dla 7wielu elementów, jak na 7,8,7przykład specyfikacja.

Wypróbuj online!

W jaki sposób?

ḟṀ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)
Jonathan Allan
źródło
4

APL (Dyalog Classic) , 6 bajtów

⍪⌈/~⌊/

Wypróbuj online!

pociąg obliczenie maksimum ( ⌈/) (bez ~) Do minium ( ⌊/) zmienił się w matrycy ( )

jeśli wejście zawiera tylko jeden odrębny element, ⌈/~⌊/będzie puste i zwróci macierz 0 × 1, która jest renderowana jako nic

w przeciwnym razie ⌈/~⌊/będzie to wektor 1-elementowy i będzie to macierz 1x1 (wizualnie nie do odróżnienia od skalara), która zawiera maksimum

ngn
źródło
3

Python 2 , 42 41 bajtów

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

Wypróbuj online!

Arnav Borborah
źródło
Witamy w PPCG :) Nie znam Pythona, ale wygląda na to, że wymaga to wpisania jako listy. Niestety (i niepotrzebnie, moim zdaniem) specyfikacja jest (obecnie) bardzo wyraźna, że ​​dane wejściowe muszą być łańcuchem.
Kudłaty,
@Shaggy, ten program działa, jeśli dane wejściowe są w formie element, element, .... tzn. nie musi być ujęte w nawiasy.
Arnav Borborah
1
Lista ma pracy, ale nie jest wymagane, ponieważ w Pythonie 2, inputdomyślnie evals cokolwiek łańcuch jest przekazywany ze standardowego wejścia.
Arnav Borborah
1
40 bajtów . Nie wiem jednak, czy lista z jednym elementem może się kończyć ,, ponieważ twoje rozwiązanie zawiera błędy, jeśli dane wejściowe są tylko jedną liczbą
Jo King,
2
@JoKing Czy istnieje powód, dla którego nie można zmienić na !=a, >ponieważ dane wejściowe nigdy nie będą puste?
nedla2004,
3

Haskell , 77 75 61 bajtów

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

Wypróbuj online!

('[':).(++"]")bierze ciąg (np. "1,2,1,3") i zamyka go w nawiasach kwadratowych ( "[1,2,1,3]"). Następnie readzamienia ciąg w listę liczb całkowitych ( [1,2,1,3]).

Funkcja fużywa tej wskazówki dla krótszych warunków, jeśli jednym z wyników jest pusta lista. any(/=a!!0+0)asprawdza, czy lista azawiera dowolny element, który nie jest równy pierwszemu elementowi a!!0. ( +0Potrzebny jest taki, który readwie, że musi szukać listy liczb.) Jeśli wszystkie elementy są równe, to wynik testu Falsei zwracany jest pusty ciąg znaków. W przeciwnym razie show(maximum a)zwracana jest maksymalna liczba list przekonwertowanych na ciąg.

Laikoni
źródło
@nimi Dziękujemy za wskazanie!
Laikoni
3

Czerwony, 81 bajtów

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

Podobnie jak w przypadku rozwiązania R, duża część kodu obsługuje ciąg wejściowy „1,1,2,44,1”. Jeśli możemy mieć to jako blok, np .:: x: [1 1 2 44 1], możemy to zrobić w 41 bajtach:

sort x: unique x if 1 <>length? x[last x]
Dick Bryonson
źródło
4
Witamy w PPCG! Zwykle prosimy o link do tłumacza w celu weryfikacji rozwiązania, a Dennis, jeden z naszych modów, skonfigurował Wypróbuj online! właśnie w tym celu! Sformatuje nawet twoją odpowiedź za Ciebie! Mam nadzieję, że spodoba ci się czas spędzony tutaj!
Giuseppe,
sort x: unique load replace/all input","" "if 1 <>length? x[last x]dla 67 bajtów. Niestety inputnie działa w TIO. Jeśli sprawisz, że będzie to func, to działa dobrze w TIO: 73 bajty
Galen Iwanow
3

APL (Dyalog Unicode) , 12 bajtów

Pełny program Monituje o ciąg znaków ze standardowego wejścia.

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

Wypróbuj online!

 monituj i oceniaj wyrażenie (przecinki łączą liczby w listę)

{} Zastosuj następującą anonimową lambda ( argument; lista liczb):

1≠ [jeśli] 1 różni się od…

 zestawienie…

 unikalne liczby w…

 Lista

: następnie

⌈/ zwróć maks. w poprzek (podświetlona maksymalna redukcja)…

 Lista

 [else: nic nie rób]

Adám
źródło
1 ≠ ≢∪ tutaj wydaje się, że znajduje się tylko wtedy, gdy jego argumentem jest lista, a nie powtórzenie tego samego numeru, więc nie jest to 1 1 1 lub 22. Tak więc 1 ≠ ≢∪1 1 2 3 3 zwraca true, nawet jeśli 3 nie jest unikalne, a jeśli to prawda, zwraca ⌈ / ⍵ maks. 3 (nawet jeśli nie powinno zwracać danych wyjściowych). Gdzie jest mój błąd? Lub możliwe „:” ma inne znaczenie
RosLuP,
@RosLuP Nawet jeśli są powtórzenia, a nawet powtórzenia maksymalnej liczby, nadal musimy wydrukować maksimum. Tylko jeśli lista ma dokładnie jeden unikalny numer, nic nie drukujemy. Spójrz na ostatni przykładowy przypadek w PO.
Adám,
Tak, źle zrozumiałem problem ... dzięki
RosLuP,
czy to zadziała? ⌈/~⌊/
ngn
@ngn Nie, wyświetla nowy wiersz, jeśli wszystkie elementy są równe.
Adám,
3

JavaScript (Node.js) , 49/53 bajtów

Moja oryginalna wersja .every(), 53 bajtów

Czy funkcja zwracająca „” liczy się jako brak wyjścia? Jasne, że można to poprawić po ...

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

Wypróbuj online!


Ulepszona wersja wykorzystaniem Set()przez Kudłaty , 49 bajtów

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

Wypróbuj online!

Chris M.
źródło
2
Bardzo szybkie polepszenie: tio.run/##y0osSyxOLsosKNHNy09J/Z9m@7/...
Shaggy
@Shaggy nice! Zaczynałem od korzystania z Seta, ale nie mogłem być tak krótki
Chris M
2

Neim , 4 bajty

𝐐𝐎Ξ𝐠

Wyjaśnienie:

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

Wypróbuj online!

Okx
źródło
2
Obecnie wejściem musi być ciąg liczb całkowitych rozdzielanych przecinkami, ale zapytałem, czy zamiast tego możemy wziąć tablicę.
Kudłaty
2

Oktawa , 28 bajtów

Zwraca maksimum (liczbę, która jest macierzą 1x1) lub pustą (1x0) macierz.

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

Wypróbuj online!

wada
źródło
2
Dane wejściowe to ciąg liczb oddzielonych przecinkami
Jo King
2

Japt, 16 bajtów

Byłoby to 9, gdyby nie niepotrzebnie ścisły format wejściowy, 7, jeśli zgłoszenie błędu jest liczone jako brak wyjścia.

Zakłada, że ​​ciąg zawiera co najmniej 2 liczby całkowite.

q, mn
â ÊÉ?Urw:P

Spróbuj

Kudłaty
źródło
2

Common Lisp, 102 bajty

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

Wypróbuj online!

Rozmiar wynika głównie z wprowadzania danych; przy wprowadzaniu jako regularnej liście długość zmniejsza się do 46 bajtów:

(lambda(x)(or(apply'= x)(princ(apply'max x))))
Renzo
źródło
2

XPath 3.1, 54 bajty

z ciągiem wejściowym jako elementem kontekstu:

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

Można zmniejszyć o jeden znak, jeśli pozwalasz kontekstowi na powiązanie krótszego prefiksu niż „xs” z przestrzenią nazw schematu XML.

Objaśnienie: pobiera ciąg wejściowy, tokenizuje na separatorze „,”, stosuje się xs:int()do każdego tokenu do konwersji na liczbę całkowitą, oblicza maksimum sekwencji, wyprowadza maksimum pod warunkiem, że predykat $t!=$tjest prawdziwy. Jeśli A i B są sekwencjami, to A!=Bjest prawdą, jeśli istnieje para elementów (a z A, b z B), takich jak a!=b.

Jeśli dane wejściowe można podać jako ciąg liczb całkowitych $ s zamiast ciągu oddzielonego przecinkami, wówczas rozwiązanie zmniejsza się do

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

(15 bajtów - co może być najkrótszym rozwiązaniem w języku, który nie jest przeznaczony do zwięzłości)

UWAGA : nie spełnia to wymogu „reprezentowanego tak, jak jest na wejściu” - jeśli na wejściu jest liczba całkowita z zerami wiodącymi lub znakiem plus, zostaną one utracone. Podejrzewam, że dotyczy to również wielu innych rozwiązań.

Michael Kay
źródło
2

K4 , 38 35 bajtów

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

Przypadki testowe:

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)

Nie jestem biegły w żadnym z wariantów K dostępnych na TiO, więc nie ma dostępnego przykładu online, spróbuję jednak wymyślić jeden

Wyjaśnienie

Jeśli zastanawiasz się, dlaczego niektóre operacje są wykonywane przed innymi, K4 nie ma pierwszeństwa operatora, zamiast tego interpretuje od prawej do lewej (chociaż możesz użyć nawiasów dla pierwszeństwa). Wyrażenia rozdzielone średnikami.

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

Prawdopodobnie można go bardziej pograć w golfa, a nie fanem konieczności korzystania z tej prowizorycznej funkcji max na końcu.

EDYCJA: Jeśli przecinki w danych wyjściowych stanowią problem, można to naprawić za pomocą dwóch dodatkowych bajtów:

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

Biorąc w sumie 40 37, ale przecinek przed liczbą oznacza po prostu, że jest to lista pojedynczego elementu w przeciwieństwie do atomu.

Thaufeki
źródło
2

PHP (<= 5,6) 64 74 bajty

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

Uruchom jako potok -nRlub przetestuj go online

splitzostał usunięty w PHP7, ale ponieważ musiałem dodać 10, aby naprawić kilka problemów, warto było użyć zamiast tego w explodeprzybliżeniu w tym przypadku.

Artystyczny Feniks
źródło
Also this doesn't work when there are more than one element with the max value Nie rozumiem, co If they are all equal, return/output nothingto If they are equal, return/output nothingznaczy, jeśli jest więcej niż jeden do wypisania pustego. Dodanie ==count($a)naprawia to. Ponieważ array_count_valuesliczy się, ile razy pojawia się w tablicy, jeśli jest to równa całkowitej liczbie elementów w tablicy, wówczas wypisuje „” w przeciwnym razie wypisuje maksimum
ArtisticPhoenix
1
@JoKing - Nie powinieneś przyjmować danych wejściowych za pomocą wstępnie zadeklarowanej zmiennej - naprawiono, używając $argnjej bierze od standardowego (to zostało użyte w wielu odpowiedziach golfa) Mogę podać przykłady nie tylko mojego, ale innych użytkowników.
ArtisticPhoenix
2

Japt -hF , 8 bajtów

q, ün Åc

Spróbuj

-3 bajty, jeśli dane wejściowe można przyjąć jako tablicę.

Oliver
źródło
2

05AB1E , 9 8 bajtów

',¡ZsËiõ

-1 bajt dzięki @Cowabunghole .

Wypróbuj online lub sprawdź wszystkie przypadki testowe .

Wyjaśnienie:

',¡        '# 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)
Kevin Cruijssen
źródło
1
Całkiem podobne rozwiązanie, ale możesz tego uniknąć ',¡ZsËiõ, oszczędzając 1 bajt
Cowabunghole,
@Cowabunghole Smart, dzięki!
Kevin Cruijssen,
1

Python 2 , 44 bajty

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

Wypróbuj online!

Chas Brown
źródło
Zgaduję, że evalw Pythonie konwertuje ciąg rozdzielany przecinkami na listę?
Kudłaty,
1
Tak; a dokładniej krotka (niezmienna lista). Gdyby dane wejściowe nie były łańcuchem (tzn. Pomijały cudzysłowy w sekcji wprowadzania TIO), można po prostu użyć k=input()i uzyskać ten sam wynik.
Chas Brown,
1

Ohm v2 , 9 bajtów

Ul1E?Oq¿↑

Wypróbuj online! Wyjaśnienie:

Ul1E?Oq¿↑
U         Uniquify input
 l        Get length
  1E      Push whether length is equak to 1
    ?Oq   If so immediately quit
       ¿↑ Else print maximum
ThePlasmaRailgun
źródło
2
Danymi wejściowymi powinien być ciąg liczb oddzielonych przecinkami
Jo King
1

Węgiel drzewny , 15 bajtów

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

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

≔I⪪S,θ

Podziel dane wejściowe przecinkami i wyrzuć każdą wartość na liczbę całkowitą.

¿›⌈θ⌊θ

Sprawdź, czy maksymalna wartość jest większa niż wartość minimalna.

I⌈θ

Jeśli tak, wyrzuć maksymalną wartość na ciąg i wydrukuj.

Neil
źródło
1

Mathematica, 43 bajty

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

Czysta funkcja. Pobiera na wejściu ciąg rozdzielany przecinkami i zwraca liczbę lub Null. Uważam, że jest to poprawne, ponieważ Nullnie jest przedstawione graficznie:

LegionMammal978
źródło
1

C (gcc) , 91 bajtów

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

Wypróbuj online!

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

źródło
Zaproponuj M(char*s)zamiast M(s)char*s;i index()zamiaststrchr()
ceilingcat
1

Pyth, 7 bajtów

Itl{QeS

Wypróbuj online!
Wszystkie przypadki testowe (nieco inny kod dla lepszego formatowania wyjściowego)

Ponieważ Pyth jest oparty na Pythonie, dane wejściowe użytkownika są zawsze interpretowane jako ciąg znaków, który następnie można przekazać eval() . Wszystkie programy Pyth są automatycznie uruchamiane Q=eval(input())jako pierwsza instrukcja.

Wyjaśnienie:
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
hakr14
źródło
1

Java (JDK) , 101 bajtów

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

Wypróbuj online!

Wyjaśniono

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
}

Rozwiązanie premiowe!

Mimo dołożenia wszelkich starań nie mogłem uzyskać tego rozwiązania przy użyciu wyrażeń regularnych i strumieni do mniej niż 105 bajtów, ale naprawdę podobała mi się jego elegancja, dlatego musiałem wyróżnić ją;

d->d.matches("(.+?)(,\\1)+")?"":java.util.Arrays.stream(d.split(",")).map(Long::new).reduce(0L,Long::max)
Luke Stevens
źródło
100 bajtów przy użyciu kombinacji wyrażenia regularnego (minus ?) i zwykłej pętli i powrotu (zamiast strumienia).
Kevin Cruijssen
1

MATL , 15 9 bajtów

U&=?}1MX>

Wypróbuj online!
Wiele przypadków testowych

Staram się tylko, żeby moje kotlety MATL nie zardzewiały!

Edytować : w końcu zardzewiały; zapisane 6 bajtów, dzięki @LuisMendo.

Wyjaśnienie

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.
sundar - Przywróć Monikę
źródło
1

Pip , 13 bajtów

a^:',MXaRMMNa

Wypróbuj online!

Wykorzystuje podejście z rozwiązania APL firmy ngn :

     MNa  Minimum of the list
  aRM     Remove it from the list
MX        Take the max of the remaining elements

Pierwsze 5 bajtów a^:', podzieliło łańcuch wejściowy na przecinki.

Alternatywne 13-bajtowe rozwiązania:

I!$=Ya^',PMXy
a^:',$=a?uMXa
DLosc
źródło