Seu desafio é pegar uma matriz de seqüências de caracteres e produzir a sequência mais longa da matriz. Então para
["tiny", "small", "bigger", "biggest"]
a saída seria biggest
.
Se dois elementos da matriz tiverem o mesmo comprimento, escolha o que aparecer primeiro na matriz. Isso significa que se a matriz estiver assim:
["one", "two", "no"]
a saída é one
, mas se a matriz estiver assim:
["two", "one", "no"]
a saída é two
.
Como esse é o código-golfe , o código mais curto em bytes vence.
1
É fortemente desencorajado se a questão for alterado e invalida resposta existente, e2
o Sandbox existe exatamente para isso (certifique-se desafios são bons antes de postar)Respostas:
Tampio imperativo , 168 bytes
Versão online
Ungolfed:
Versão online
A única oportunidade de golfe disponível é substituí-la
pisin alkio
(significando "o elemento mais longo") porx
.Tradução:
fonte
Python , 23 bytes
Experimente online!
fonte
Haskell , 35 bytes
-3 bytes graças ao Zgarb.
Experimente online!
Eu gosto deste código. Você sabe porque? Porque o Haskell suporta soluções muito mais elegantes com funções de bibliotecas aleatórias.
Isso é legível! Exceto, não é válido.
Se não fosse pelas importações, esse seria um envio perfeito para obter todos os votos positivos. : P
(Além disso, ele usa uma dica de golfe e uma dobra.)
fonte
snd.maximum.map((,)=<<(0<$))
Experimente on-line! .import Data.Lists;argmax(0<$)
.l
não faz partefold
? Como ele distingue isso e uma função chamadafoldl
?foldl1
. Eu pensei que parte da explicação pode ser confusa, desculpe ...0
pora
ou algo mais, caso contrário, o GHC reclama de um tipo numérico ambíguo.R + pryr , 31 bytes
[-2 bytes graças ao Scrooble]
Experimente online!
R , 33 bytes
Experimente online!
fonte
x[which.max(nchar(x))]
EXCEL,
36.42 bytesIntroduzido como uma fórmula de matriz (ctrl-shift-enter). A matriz de entrada deve ser inserida na coluna A.
A fórmula retorna a primeira correspondência com o comprimento máximo.
Dependendo das configurações da sua região, substitua
,
por;
; o comprimento do código permanece inalterado. Dos 16 idiomas listados aqui , os nomes das funções em inglês são os mais curtos para esta fórmula.Explicação:
fonte
,
o último? A fórmula ainda funciona sem ela,
é um parâmetro para MATCH que retorna a primeira correspondência exata, conforme exigido pela pergunta (revisada). Se for deixado de fora, o MATCH espera uma matriz em ordem crescente e retorna a última correspondência, em vez da primeira, se houver vários elementos com o mesmo comprimento.A:A
e o torne um array formal com{...}
um post ótimo!APL (Dyalog Unicode) , SBCS de 9 bytes
Experimente online!
⊢
do argumento,⊃⍨
escolha o elemento com o índice que é o⊃
primeiro do⍒
índices em ordem decrescente do≢¨
comprimentos de cadafonte
Prolog (SWI) ,
98927269 bytesO predicado de nível superior é
*
.Experimente online!
Explicação
A primeira linha define o predicado diádico
/
como um curto, oatom_length/2
que é verdadeiro se o comprimento do primeiro argumento for o segundo argumento. Isso nos economiza 3 bytes usandoatom_length
duas vezes.Nosso predicado principal é definido como o diádico,
*
onde o primeiro argumento é uma lista e o segundo argumento, o elemento mais longo dessa lista.A segunda linha é o nosso caso base, que afirma que o elemento mais longo de uma lista de um elemento é esse elemento.
A terceira linha afirma que, para uma lista com pelo menos 2 elementos, o elemento mais longo é:
Se o comprimento do segundo elemento for maior que o primeiro, o elemento mais longo estará na lista sem o primeiro elemento.
Caso contrário, o elemento mais longo estará na lista sem o segundo elemento.
fonte
Pitão , 4 bytes
Suíte de teste.
Explicaçãofonte
elD_
eho_l
alcançar o mesmo comprimento.PowerShell , 24 bytes
Experimente online!
Recebe entrada
$args[0]
, tubos que, comSort-Object
base nol
ength, em-d
ordem de tendência. Em seguida, leva o[0]
th dela. Como a classificação é estável, isso leva o primeiro elemento em caso de empate.fonte
Oitava , 33 bytes
Entrada é uma matriz de células de cadeias.
Experimente online!
Explicação
cellfun(@nnz,x)
aplica annz
função (número de nonzeros) a cada string na matriz de entradax
. Para cadeias ASCII,nnz
é equivalente anumel
(número de elementos), mas menor. O resultado é uma matriz numérica com os comprimentos de sequência.Em seguida,
[~,]=max(...)
fornece o índice do primeiro máximo na matriz de comprimentos de sequência. O resultado é usado como um índice de chavesx
para obter a sequência correspondente.fonte
JavaScript (Node.js) , 38 bytes
Experimente online!
fonte
-
vez de<
na função comparadora.J ,
19, 11, 108 bytesExperimente online!
Obrigado ao streetster pela dica!
-1 byte graças a FrownyFrog!
-2 bytes graças a Conor O'Brien
Como funciona:
Experimente online!
fonte
0{::]\:#@>
{.@
vez de0{::
trabalhar?0{>\:#@>
C #, 43 + 18 = 61 bytes
Experimente online!
fonte
a=>a.Aggregate((x,y)=>y.Length>x.Length?y:x)
base de 44 byte,a=>a.First(x=>x.Length==a.Max(y=>y.Length))
43 byte de basePerl 6 ,
1413 bytesTente
Tente
fonte
PHP, 72 bytes
fonte
Japonês
-h
,53 bytesTente
Inverta, classifique por comprimento e produza o último elemento.
fonte
Rápido , 54 bytes
Experimente online!
fonte
K (oK) , 9 bytes
Experimente online!
Exemplo:
Explicação
Notas:
Com exclusão de exclusão, isso é classificado como não trivial, apesar de ter basicamente 5 etapas (seria escrito como a função
{*x@>#:'x}
).fonte
Java (OpenJDK 8) , 67 bytes
Outra submissão no meu idioma favorito! (leia: o único que eu conheço).
Isso não funciona com uma matriz vazia, mas tudo bem.
Golfe
Ungolfed
Experimente online!
fonte
Raquete ,
160 bytes110 bytesExperimente online! Primeira contribuição, conselhos apreciados!
Ungolfed
Solução atualizada com base no feedback
fonte
foldr
-based approach, taking the max by length and carrying that across.define(m a)
toλ(a)
Bash, 45 bytes
Try it online!
fonte
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.
fonte
stop[all
here?Röda, 30 bytes
Try it online!
Explanation:
Alternative 30 bytes:
Try it online!
fonte
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)
fonte
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!
fonte
Julia 0.6, 24 bytes
Try it online!
fonte
Funky, 38 bytes
Explained
Try it online!
fonte
Ruby,
2120 bytesTry it online!
Trivial solution, thanks Snack for -1 byte
fonte
&: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:
fonte
Bash, 44 bytes
Try it online!
fonte