Biorąc pod uwagę niepustą listę dodatnich liczb całkowitych dziesiętnych, wypisz największą liczbę z zestawu liczb o najmniejszej liczbie cyfr.
Lista wejściowa nie będzie w żadnej określonej kolejności i może zawierać powtarzające się wartości.
Przykłady:
[1] -> 1
[9] -> 9
[1729] -> 1729
[1, 1] -> 1
[34, 3] -> 3
[38, 39] -> 39
[409, 12, 13] -> 13
[11, 11, 11, 1] -> 1
[11, 11, 11, 11] -> 11
[78, 99, 620, 1] -> 1
[78, 99, 620, 10] -> 99
[78, 99, 620, 100] -> 99
[1, 5, 9, 12, 63, 102] -> 9
[3451, 29820, 2983, 1223, 1337] -> 3451
[738, 2383, 281, 938, 212, 1010] -> 938
Najkrótszy kod w bajtach wygrywa.
code-golf
number
arithmetic
Hobby Calvina
źródło
źródło
Odpowiedzi:
Pyth,
736 bajtówPakiet testowy
Wyjaśnienie:
7 bajtowe rozwiązanie:
Pakiet testowy
Wyjaśnienie:
źródło
Python 2,
4842 bajtów-6 bajtów dzięki @Dennis (
min
zamiast używaćsorted
)Wszystkie przypadki testowe są w ideone
Weź minimum listy według (długość, -wartość)
źródło
min
powinien działać zamiastsorted
.sorted()[0]
namin
? Uważam to za trywialną modyfikację oryginalnego kodu.len(`x`)+1./x
dla tej samej długości. Szkoda, że potrzebujesz1.
.Galaretka , 7 bajtów
Przetestuj w TryItOnline
Lub zobacz wszystkie przypadki testowe również w TryItOnline
W jaki sposób?
źródło
05AB1E , 5 bajtów
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
źródło
Rubinowy, 34 bajty
Zobacz na eval.in: https://eval.in/643153
źródło
MATL , 14 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Siatkówka ,
2416 bajtówWypróbuj online! lub uruchom wszystkie przypadki testowe .
Zaoszczędź 8 bajtów dzięki Martinowi!
Cały test wykorzystuje nieco starszą wersję kodu, ale algorytm jest identyczny. Zaktualizuję go, aby był bliżej, gdy będę miał więcej czasu.
Końcowy znak nowej linii jest znaczący. Sortuje liczby według odwrotnej wartości liczbowej, a następnie sortuje je według liczby cyfr. Pozostaje nam największy numer z najmniejszą liczbą cyfr na pierwszej pozycji, więc możemy po prostu usunąć pozostałe cyfry.
źródło
G1`
dla ostatniego etapu.#
. Dbasz tylko o względną kolejność dla danej długości całkowitej, a w obrębie jednej długości leksykograficzne sortowanie liczb jest prawidłowe.\w+
jako domyślny sposób sortowania, w ten sposób nie musiałbym tak bardzo walczyć, aby tworzyć zestawy testowe;)Mathematica,
3331 bajtówMinimalBy wybiera wszystkie elementy oryginalnej listy wprowadzania z najmniejszym wynikiem według
IntegerLength
, tj. Z najmniejszą liczbą cyfr; a następnie Max generuje największy.Dzięki Martinowi Enderowi za znalezienie, a następnie zapisanie 2 bajtów dla mnie :)
źródło
Perl 6 , 18 bajtów
Wyjaśnienie:
Stosowanie:
źródło
Galaretka , 8 bajtów
Wypróbuj online! lub Zweryfikuj wszystkie przypadki testowe.
Wyjaśnienie
źródło
JavaScript (ES6), 51
Test
źródło
J,
2114 bajtówZaoszczędzono 7 bajtów dzięki kilometrom i (pośrednio) Jonathanowi!
Jest to cztero łańcuchowy:
Przejdźmy przez dane wejściowe
10 27 232 1000
. Widelec wewnętrzny składa się z trzech zębów.#@":"0
oblicza rozmiary,,.
konkatuje każdy rozmiar z jego negowanym (-
) elementem . W przypadku danych wejściowych10 27 232 1000
pozostaje nam to:Teraz mamy
{.@/:
zewnętrzny ząb. Jest to monadyczne pierwsze ({.
) przed sortowaniem dyadycznym (/:
). Oznacza to, że weźmiemy pierwszy element wyniku dyadic/:
. To sortuje swój prawy argument zgodnie z lewym argumentem, co daje nam nasze dane wejściowe:Następnie użycie
{.
daje nam pierwszy element tej listy i gotowe:Stara wersja
Nadal pracuję nad ulepszeniami. Grałem w golfa z 30 i myślę, że to wystarczy. Najpierw podzielę to na podstawowe części:
Oto jak to działa.
To monadyczny pociąg, ale ta część to hak. Czasownik
>./@(#~ ] = <./@])
jest wywoływany z lewym argumentem jako wejściem do głównego łańcucha, a rozmiary zdefiniowane jako#@":"0
jako prawy argument. Jest to obliczane jako domyślny format length (#
) ponad (@
)":
, to znaczy łańcuchowe numerowanie, które stosuje się do komórek 0 (tj. Elementów) wejścia ("0
).Przejrzyjmy przykładowe dane wejściowe
409 12 13
.Teraz na wewnętrznej czasownika
>./@(#~ ] = <./@])
. Wygląda na to>./@(...)
, co faktycznie oznacza maksymalną wartość (>./
) z (@
) tego, co jest w środku(...)
. Jeśli chodzi o wnętrze, jest to cztero-pociąg, odpowiednik tego pięcio-pociągu:[
odnosi się do oryginalnego argumentu i]
odnosi się do tablicy rozmiarów;409 12 13
i3 2 2
odpowiednio w tym przykładzie. Właściwy<./@]
ząb,2
w tym przypadku , oblicza minimalny rozmiar .] = <./@]
jest boolowską tablicą wartości równą minimum,0 1 1
w tym przypadku. Na koniec[ #~ ...
pobiera wartości z lewego argumentu zgodnie z maską z prawym argumentem. Oznacza to, że odpowiednie elementy0
są upuszczane i1
zachowywane. Więc zostajemy z12 13
. Wreszcie, zgodnie z powyższym, maksimum jest brane, dając nam prawidłowy wynik13
i gotowe.źródło
>./@#~[:(=<./)#@":"0
. Myślę, że można zaoszczędzić trochę więcej{.@/:#@":"0,.-
ale dane wejściowe muszą być ukształtowane jako lista400 12 13
?JavaScript (ES6), 62 bajty
źródło
dc, 54 bajty
Wyjaśnienie:
Uruchom przykład: „input.txt” zawiera wszystkie przypadki testowe w instrukcji pytania
Wydajność:
źródło
Java 7,
112104 bajtówRóżne podejście do zapisywania wielu bajtów dzięki @ Barteks2x .
Przypadki bez golfa i testy:
Wypróbuj tutaj.
Wydajność:
źródło
bash, awk, sortuj 53 bajty
Czytaj dane wejściowe ze standardowego wejścia, jedna wartość na linię
bash i sortuj,
5857 bajtówźródło
while
i((
.JavaScript ES6,
807770 bajtówMam nadzieję, że idę w dobrym kierunku ...
źródło
a.map(i=>i.length).sort((a,b)=>a-b)[0]
zMath.min(...a.map(i=>i.length))
?Math.max
:a=>(m=Math.max)(...a.filter(l=>l.length==-m(...a.map(i=>-i.length))))
Wydaje się, że zapisano tylko 1 bajt.filter
można go zastąpić wartościąmap
zwracającą0
wartości, które nie przejdą testu:a=>(m=Math.max)(...a.map(l=>l.length+m(...a.map(i=>-i.length))?0:l))
Brachylog , 16 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Haskell, 39 bajtów
źródło
34
się2
.JavaScript (ES6),
575453 bajtówDla przypomnienia, moja poprzednia wersja była bardziej zorientowana na matematykę, ale 1 bajt większy:
Przypadki testowe
źródło
MATL , 11 bajtów
Dane wejściowe to wektor kolumny (wykorzystujący
;
jako separator), taki jakWypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
[78; 99; 620; 100]
Jako przykład weźmy dane wejściowe .źródło
Perl,
3837 bajtówObejmuje +1 dla
-a
Podaj dane na STDIN:
maxmin.pl
:Używa pamięci liniowo w największej liczbie, więc nie próbuj tego na zbyt dużych liczbach. Rozwiązanie bez tej wady ma 38 bajtów:
Wszystko to jest bardzo niezręczne i wcale nie wydaje się optymalne ...
źródło
R,
724136 bajtówPrzepisz funkcję z nowym podejściem. Grał w golfa 5 bajtów dzięki sugestii @bouncyball.
Wyjaśnił:
Wcięte / wyjaśnione:
źródło
function
:i=scan();n=nchar(i);max(i[n==min(n)])
n=nchar(i<-scan())
.Bash + coreutils, 58 bajtów
Format wejściowy to jedna wartość na linię. Sugestie dotyczące gry w golfa są mile widziane.
Wyjaśnienie:
źródło
sed q
=head -1
Python 2 - 41 bajtów
źródło
Python 2, 58 bajtów
źródło
Python 3, 56 bajtów
Używa lambda w lambda!
Python 2, 53 bajty
To samo, ale z backticksami
źródło
Pip , 11 bajtów
Pobiera dane wejściowe jako argumenty wiersza polecenia. Wypróbuj online!
Pierwszy raz skorzystaj z
S
ortodontycznegoK
operatora! Podobnie jak Pythonsorted()
, wymaga funkcji, która jest stosowana do każdego elementu iterowalnego, a wynik jest używany jako klucz sortowania. Oto jak działa ten program:źródło
Clojure, 63 bajty
jak w:
Chociaż jestem pewien, że istnieje sposób, aby go zmniejszyć.
źródło
PHP, 86 bajtów
źródło