Votre défi consiste à prendre un tableau de chaînes et à générer la chaîne la plus longue du tableau. Donc pour
["tiny", "small", "bigger", "biggest"]
la sortie serait biggest
.
Si deux éléments du tableau ont la même longueur, vous devez choisir celui qui apparaît en premier dans le tableau. Cela signifie que si le tableau ressemble à ceci:
["one", "two", "no"]
la sortie est one
, mais si le tableau ressemblait à ceci:
["two", "one", "no"]
la sortie est two
.
Comme il s'agit de code-golf , le code le plus court en octets l'emporte.
code-golf
string
array-manipulation
sorting
Se terrer
la source
la source
1
Il est fortement déconseillé si la question est modifiée et invalide la réponse existante, et2
le bac à sable existe exactement pour cette raison (assurez-vous que les défis sont bons avant de publier)Réponses:
Tampio impératif , 168 octets
Version en ligne
Non golfé:
Version en ligne
La seule opportunité de jouer au golf est de remplacer
pisin alkio
(signifiant "l'élément le plus long") parx
.Traduction:
la source
Python , 23 octets
Essayez-le en ligne!
la source
Haskell , 35 octets
-3 octets grâce à Zgarb.
Essayez-le en ligne!
J'aime ce code. Tu sais pourquoi? Parce que Haskell prend en charge des solutions beaucoup plus élégantes avec des fonctions provenant de bibliothèques aléatoires.
C'est facile à lire! Sauf que ce n'est pas valable.
S'il n'y avait pas eu les importations, cela aurait été une soumission parfaite pour obtenir tous les votes positifs. : P
(En outre, cela utilise une pointe de golf et un pli.)
la source
snd.maximum.map((,)=<<(0<$))
essayez-la en ligne! .import Data.Lists;argmax(0<$)
.l
pas partie defold
? Comment fait-il la distinction entre cela et une fonction nomméefoldl
?foldl1
. Je pensais qu'une partie de l'explication pouvait être déroutante, désolé ...0
para
ou autre chose, sinon GHC se plaint d'un type numérique ambigu.R + pryr , 31 octets
[-2 octets grâce à Scrooble]
Essayez-le en ligne!
R , 33 octets
Essayez-le en ligne!
la source
x[which.max(nchar(x))]
EXCELLER,
3642 octetsEntré sous forme de formule matricielle (ctrl-shift-enter). Le tableau d'entrée doit être entré dans la colonne A.
La formule renvoie la première correspondance avec une longueur maximale.
Selon les paramètres de votre région, remplacez
,
par;
; la longueur du code reste inchangée. Sur les 16 langues répertoriées ici , les noms de fonction anglais sont les plus courts pour cette formule.Explication:
la source
,
ces derniers? La formule fonctionne toujours sans elle,
est un paramètre pour MATCH qui renvoie la première correspondance exacte, comme requis par la question (révisée). S'il est omis, MATCH attend un tableau dans l'ordre croissant et renvoie la dernière correspondance au lieu du premier s'il existe plusieurs éléments de même longueur.A:A
et en fassiez un tableau formel avec{...}
, sinon un excellent article!APL (Dyalog Unicode) , 9 octets SBCS
Essayez-le en ligne!
⊢
de l'argument,⊃⍨
choisissez l'élément avec l'indice qui est le⊃
premier des⍒
indices dans l'ordre décroissant de la≢¨
longueurs de chacunla source
Prolog (SWI) ,
98927269 octetsLe prédicat de niveau supérieur est
*
.Essayez-le en ligne!
Explication
La première ligne définit le prédicat dyadique
/
comme un court pouratom_length/2
lequel est vrai si la longueur du premier argument est le deuxième argument. Cela nous permet d'économiser 3 octets sur l'utilisationatom_length
deux fois.Notre prédicat principal est défini comme le dyadique
*
où le premier argument est une liste et le deuxième argument l'élément le plus long de cette liste.La deuxième ligne est notre scénario de base qui indique que l'élément le plus long d'une liste à un élément est cet élément.
La troisième ligne indique que pour une liste avec au moins 2 éléments, l'élément le plus long est:
Si la longueur du deuxième élément est plus longue que le premier élément, l'élément le plus long est dans la liste sans le premier élément.
Sinon, l'élément le plus long se trouve dans la liste sans le deuxième élément.
la source
Pyth , 4 octets
Suite de tests.
Explicationla source
elD_
etho_l
atteindre la même longueur.PowerShell , 24 octets
Essayez-le en ligne!
Prend l'entrée
$args[0]
, les tuyaux qui àSort-Object
basé surl
ength dans l'-d
ordre croissant. Prend ensuite le[0]
th de celui-ci. Le tri étant stable, cela prend le premier élément en cas d'égalité.la source
Octave , 33 octets
L'entrée est un tableau de cellules de chaînes.
Essayez-le en ligne!
Explication
cellfun(@nnz,x)
applique lannz
fonction (nombre de non-zéros) à chaque chaîne du tableau d'entréex
. Pour les chaînes ASCII,nnz
est équivalent ànumel
(nombre d'éléments), mais plus court. Le résultat est un tableau numérique avec les longueurs de chaîne.Ensuite,
[~,]=max(...)
donne l'index du premier maximum dans le tableau des longueurs de chaîne. Le résultat est utilisé comme index d'accoladex
pour obtenir la chaîne correspondante.la source
JavaScript (Node.js) , 38 octets
Essayez-le en ligne!
la source
-
au lieu de<
dans la fonction de comparateur.J ,
19, 11, 108 octetsEssayez-le en ligne!
Merci au streetster pour l'astuce!
-1 octet grâce à FrownyFrog!
-2 octets grâce à Conor O'Brien
Comment ça marche:
Essayez-le en ligne!
la source
0{::]\:#@>
{.@
au lieu de0{::
travailler?0{>\:#@>
C#, 43 + 18 = 61 bytes
Try it online!
la source
a=>a.Aggregate((x,y)=>y.Length>x.Length?y:x)
44 byte base,a=>a.First(x=>x.Length==a.Max(y=>y.Length))
43 byte basePerl 6,
1413 bytesTry it
Try it
la source
PHP, 72 bytes
la source
Japt
-h
,53 bytesTry it
Reverse, sort by length and output the last element.
la source
Swift, 54 bytes
Try it online!
la source
K (oK), 9 bytes
Try it online!
Example:
Explanation
Notes:
Undeleted as this is classed as non-trivial, despite being basically 5 steps (would be if written as the function
{*x@>#:'x}
).la source
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!
la source
Racket,
160 bytes110 bytesTry it online! First time contributing, advice appreciated!
Ungolfed
Updated solution based on feedback
la source
foldr
-based approach, taking the max by length and carrying that across.define(m a)
toλ(a)
Bash, 45 bytes
Try it online!
la source
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.
la source
stop[all
here?Röda, 30 bytes
Try it online!
Explanation:
Alternative 30 bytes:
Try it online!
la source
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)
la source
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!
la source
Julia 0.6, 24 bytes
Try it online!
la source
Funky, 38 bytes
Explained
Try it online!
la source
Ruby,
2120 bytesTry it online!
Trivial solution, thanks Snack for -1 byte
la source
&: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:
la source
Bash, 44 bytes
Try it online!
la source