Twoim wyzwaniem jest pobranie tablicy ciągów i wygenerowanie najdłuższego ciągu w tablicy. Więc dla
["tiny", "small", "bigger", "biggest"]
wynik byłby biggest
.
Jeśli dwa elementy tablicy mają tę samą długość, należy wybrać ten, który pojawi się jako pierwszy w tablicy. Oznacza to, że tablica wygląda następująco:
["one", "two", "no"]
wynikiem jest one
, ale jeśli tablica wyglądała tak:
["two", "one", "no"]
wyjście jest two
.
Ponieważ jest to code-golf , wygrywa najkrótszy kod w bajtach.
1
To mocno zniechęcony jeśli pytanie jest zmieniana i unieważnia istniejące odpowiedź i Sandbox istnieje dokładnie ten powód (upewnij się wyzwań są dobre przed wysłaniem)2
Odpowiedzi:
Tryb imperatywny , 168 bajtów
Wersja online
Nie golfowany:
Wersja online
Jedyną możliwością gry w golfa jest zastąpienie
pisin alkio
(co oznacza „najdłuższy element”)x
.Tłumaczenie:
źródło
Python , 23 bajty
Wypróbuj online!
źródło
Haskell , 35 bajtów
-3 bajty dzięki Zgarbowi.
Wypróbuj online!
Lubię ten kod. Wiesz dlaczego? Ponieważ Haskell obsługuje znacznie bardziej eleganckie rozwiązania z funkcjami z bibliotek losowych.
To cholernie czytelne! Z wyjątkiem tego, że nie jest poprawny.
Gdyby nie import, byłoby to idealne przesłanie, aby uzyskać wszystkie opinie. : P
(Również używa jednej wskazówki golfowej i korzysta z fold.)
źródło
snd.maximum.map((,)=<<(0<$))
Wypróbuj online! .import Data.Lists;argmax(0<$)
.l
nie jest częściąfold
? Jak odróżnia to od funkcji o nazwiefoldl
?foldl1
. Myślałem, że ta część wyjaśnienia może być myląca, przepraszam ...0
za
lub coś innego, inaczej GHC narzeka dwuznacznej typu liczbowego.R + pryr , 31 bajtów
[-2 bajty dzięki Scrooble]
Wypróbuj online!
R , 33 bajty
Wypróbuj online!
źródło
x[which.max(nchar(x))]
PRZEWYŻSZAĆ,
3642 bajtyWprowadzono jako formułę tablicową (ctrl-shift-enter). Tablicę wejściową należy wprowadzić w kolumnie A.
Formuła zwraca pierwsze dopasowanie o maksymalnej długości.
W zależności od ustawień regionu, substytut
,
z;
; długość kodu pozostaje niezmieniona. Spośród 16 języków wymienionych tutaj , angielskie nazwy funkcji są najkrótsze dla tej formuły.Wyjaśnienie:
źródło
,
w tym drugim? Formuła nadal działa bez niego,
jest parametrem dla PODAJNIKA, który zwraca pierwsze dokładne dopasowanie, zgodnie z wymaganiami (poprawionego) pytania. Jeśli zostanie pominięty, to MATCH oczekuje tablicy w porządku rosnącym i zwraca ostatnie dopasowanie zamiast pierwszego, jeśli istnieje wiele elementów o tej samej długości.A:A
i uczynić z niej formalną tablicę{...}
, w przeciwnym razie świetny post!APL (Dyalog Unicode) , 9 bajtów SBCS
Wypróbuj online!
⊢
z argumentu⊃⍨
wybierz element o indeksie, który jest⊃
pierwszy z⍒
indeksy w kolejności malejącej≢¨
długości każdegoźródło
Prolog (SWI) ,
98927269 bajtówPredykat najwyższego poziomu to
*
.Wypróbuj online!
Wyjaśnienie
Pierwszy wiersz definiuje predykat dynamiczny
/
jako skrót, dlaatom_length/2
którego jest prawdą, jeśli długość pierwszego argumentu jest drugim argumentem. To oszczędza nam 3 bajty przyatom_length
podwójnym użyciu .Nasz główny predykat jest zdefiniowany jako dyadyczny
*
gdzie pierwszy argument jest listą, a drugi argument najdłuższym elementem tej listy.Drugi wiersz jest naszym przypadkiem podstawowym, który stwierdza, że najdłuższym elementem listy z jednym elementem jest ten element.
Trzeci wiersz stwierdza, że w przypadku listy zawierającej co najmniej 2 elementy najdłuższy element to:
Jeśli długość drugiego elementu jest dłuższa niż pierwszy element, najdłuższy element znajduje się na liście bez pierwszego elementu.
W przeciwnym razie najdłuższy element znajduje się na liście bez drugiego elementu.
źródło
Pyth , 4 bajty
Zestaw testowy.
Wyjaśnienieźródło
elD_
iho_l
osiągnąć tę samą długość.PowerShell , 24 bajty
Wypróbuj online!
Trwa wejściowych
$args[0]
, rur, które naSort-Object
podstawiel
ength w-d
porządku escending. Następnie bierze ten[0]
jeden. Ponieważ sortowanie jest stabilne, bierze to pierwszy element w przypadku remisu.źródło
Oktawa , 33 bajty
Dane wejściowe to tablica komórek ciągów znaków.
Wypróbuj online!
Wyjaśnienie
cellfun(@nnz,x)
stosujennz
funkcję (liczbę niezerowych) do każdego łańcucha w tablicy wejściowejx
. W przypadku ciągów ASCIInnz
jest równoważnynumel
(liczba elementów), ale krótszy. Wynikiem jest tablica liczbowa o długości łańcucha.Następnie
[~,]=max(...)
podaje indeks pierwszego maksimum w tablicy długości łańcuchów. Wynik jest używany jako indeks nawiasu klamrowego wx
celu uzyskania odpowiedniego ciągu.źródło
JavaScript (Node.js) , 38 bajtów
Wypróbuj online!
źródło
-
zamiast<
w funkcji komparatora.J ,
19, 11, 108 bajtówWypróbuj online!
Dzięki streetster za podpowiedź!
-1 bajt dzięki FrownyFrog!
-2 bajty dzięki Conorowi O'Brienowi
Jak to działa:
Wypróbuj online!
źródło
0{::]\:#@>
{.@
zamiast0{::
pracy?0{>\:#@>
C #, 43 + 18 = 61 bajtów
Wypróbuj online!
źródło
a=>a.Aggregate((x,y)=>y.Length>x.Length?y:x)
44-bajtową bazę,a=>a.First(x=>x.Length==a.Max(y=>y.Length))
43-bajtową bazęPerl 6 ,
1413 bajtówSpróbuj
Spróbuj
źródło
PHP, 72 bajty
źródło
Japt
-h
,53 bajtySpróbuj
Odwróć, sortuj według długości i wypisz ostatni element.
źródło
Szybki , 54 bajty
Wypróbuj online!
źródło
K (oK) , 9 bajtów
Wypróbuj online!
Przykład:
Wyjaśnienie
Uwagi:
Nieusunięte, ponieważ jest to klasyfikowane jako nietrywialne, mimo że w zasadzie jest to 5 kroków (byłoby napisane jako funkcja
{*x@>#:'x}
).źródło
Java (OpenJDK 8), 67 bytes
Another submission in my favourite language! (read: the only one I know).
This doesn't work with an empty array, but that's fine.
Golfed
Ungolfed
Try it online!
źródło
Racket,
160 bytes110 bytesTry it online! First time contributing, advice appreciated!
Ungolfed
Updated solution based on feedback
źródło
foldr
-based approach, taking the max by length and carrying that across.define(m a)
toλ(a)
Bash, 45 bytes
Try it online!
źródło
Scratch
27 17 170160It expects a global (attached to all sprites, to be more precise) list of strings called
mylist
. After clicking the green flag, the longest word will be left in the variablew
.I think this is the link
Counting as per this meta.
źródło
stop[all
here?Röda, 30 bytes
Try it online!
Explanation:
Alternative 30 bytes:
Try it online!
źródło
enum
can be dropped, and instead the minimum from[[-#_,_1]]
can be selected, tio.run/…min
would compare strings secondarily alphabetically (because arrays are compared secondarily by their second item). For example input["b", "a"]
would give"a"
as output. I should probably add aminby
function to Röda or something similar...APL --
2316 bytesa←{((⍴¨⍵)⍳(⌈/(⍴¨⍵)))⌷⍵}
Thanks to everyone for all of your great suggestions and encouragement!
Usage:
Explanation:
gets length of each vector of characters (string) then uses maximum as an index. I just started APL 20 min ago so I am sorry if this is a stupid way to do it.
Try it Online!
(edited for clarity)
źródło
a←
is not counted towards your bytecount.(⌈/(⍴¨⍵))
=>⌈/⍴¨⍵
. Also,(...)⌷⍵
=>⍵⌷⍨...
to save one byteStandard ML (MLton), 55 bytes
Try it online! Example usage:
& ["abc","de","fgh"]
yields"abc"
.Ungolfed:
Try it online!
źródło
Julia 0.6, 24 bytes
Try it online!
źródło
Funky, 38 bytes
Explained
Try it online!
źródło
Ruby,
2120 bytesTry it online!
Trivial solution, thanks Snack for -1 byte
źródło
&:size
out of the parentheses for -1SNOBOL4 (CSNOBOL4),
6357 bytesTry it online!
Input is on stdin and output on stdout.
Roughly translates to the following pseudocode:
źródło
Bash, 44 bytes
Try it online!
źródło