Ihre Herausforderung besteht darin, ein Array von Zeichenfolgen zu verwenden und die längste Zeichenfolge im Array auszugeben. So für
["tiny", "small", "bigger", "biggest"]
die Ausgabe wäre biggest
.
Wenn zwei Elemente des Arrays dieselbe Länge haben, sollten Sie dasjenige auswählen, das zuerst im Array angezeigt wird. Das heißt, wenn das Array so aussieht:
["one", "two", "no"]
die Ausgabe ist one
, aber wenn das Array so aussah:
["two", "one", "no"]
die Ausgabe ist two
.
Da es sich um Code-Golf , der kürzeste Code in Bytes gewinnt.
1
Es wird dringend davon abgeraten, die Frage zu ändern und die vorhandene Antwort ungültig zu machen. Aus genau diesem Grund gibt es2
die Sandbox (stellen Sie sicher, dass die Herausforderungen gut sind, bevor Sie sie veröffentlichen)Antworten:
Imperativ Tampio , 168 Bytes
Online Version
Ungolfed:
Online Version
Die einzige Golfmöglichkeit, die dies bietet, ist das Ersetzen
pisin alkio
(was "das längste Element" bedeutet) durchx
.Übersetzung:
quelle
Python , 23 Bytes
Probieren Sie es online!
quelle
Haskell , 35 Bytes
-3 Bytes dank Zgarb.
Probieren Sie es online!
Ich mag diesen Code. Du weißt, warum? Weil Haskell viel elegantere Lösungen mit Funktionen aus zufälligen Bibliotheken unterstützt.
Das ist verdammt lesbar! Außer, es ist nicht gültig.
Ohne die Importe wäre dies eine perfekte Vorlage gewesen, um alle positiven Stimmen zu erhalten. : P
(Außerdem wird ein Golf-Tipp und eine Falte verwendet.)
quelle
snd.maximum.map((,)=<<(0<$))
Versuchen Sie es online! .import Data.Lists;argmax(0<$)
.l
nicht ein Teil vonfold
? Wie unterscheidet es das von einer benannten Funktionfoldl
?foldl1
. Ich dachte, dass ein Teil der Erklärung verwirrend sein könnte, sorry ...0
mita
anderen oder etwas, sonst GHC beschwert sich über eine mehrdeutige numerischen Typ.R + Pryr , 31 Bytes
[-2 Bytes dank Scrooble]
Probieren Sie es online!
R , 33 Bytes
Probieren Sie es online!
quelle
x[which.max(nchar(x))]
EXCEL,
3642 BytesWird als Matrixformel eingegeben (Strg-Umschalt-Eingabe). Das Eingabearray sollte in Spalte A eingegeben werden.
Die Formel gibt die erste Übereinstimmung mit maximaler Länge zurück.
Ersetzen Sie je nach den Einstellungen in Ihrer Region
,
durch;
; Die Codelänge bleibt unverändert. Von den 16 hier aufgeführten Sprachen sind englische Funktionsnamen die kürzesten für diese Formel.Erläuterung:
quelle
,
in letzterem? Die Formel funktioniert immer noch ohne sie,
ist ein Parameter für MATCH, der die erste exakte Übereinstimmung gemäß der (überarbeiteten) Frage zurückgibt. Wenn es weggelassen wird, erwartet MATCH ein Array in aufsteigender Reihenfolge und gibt die letzte Übereinstimmung anstelle der ersten zurück, wenn mehrere Elemente mit derselben Länge vorhanden sind.A:A
und ein Array mit formalisieren{...}
, ansonsten großartiger Beitrag!APL (Dyalog Unicode) , 9 Byte SBCS
Probieren Sie es online!
⊢
aus dem argument,⊃⍨
Wählen Sie das Element mit dem Index, der das ist⊃
zuerst der⍒
Indizes in absteigender Reihenfolge der≢¨
Längen von jedemquelle
Prolog (SWI) ,
98927269 BytesDas Prädikat der obersten Ebene ist
*
.Probieren Sie es online!
Erläuterung
Die erste Zeile definiert das dyadische Prädikat
/
als eine Abkürzung, füratom_length/2
die gilt, wenn die Länge des ersten Arguments das zweite Argument ist. Dies spart uns 3 Bytes beiatom_length
zweimaliger Verwendung .Unser Hauptprädikat ist als die Dyade definiert, bei der
*
das erste Argument eine Liste und das zweite Argument das längste Element dieser Liste ist.Die zweite Zeile ist unser Basisfall, der besagt, dass das längste Element einer Liste mit einem Element dieses Element ist.
Die dritte Zeile gibt an, dass für eine Liste mit mindestens 2 Elementen das längste Element ist:
Wenn das zweite Element länger als das erste Element ist, befindet sich das längste Element in der Liste ohne das erste Element.
Andernfalls befindet sich das längste Element in der Liste ohne das zweite Element.
quelle
Pyth , 4 Bytes
Testsuite.
Erläuterungquelle
elD_
undho_l
erreichen die gleiche Länge.PowerShell , 24 Byte
Probieren Sie es online!
Übernimmt Eingaben
$args[0]
, leitet diese anSort-Object
diel
Länge in-d
absteigender Reihenfolge an. Dann nimmt man die[0]
th davon. Da sort stabil ist, wird im Falle eines Unentschieden das erste Element verwendet.quelle
Oktave , 33 Bytes
Die Eingabe ist ein Zellenarray von Zeichenfolgen.
Probieren Sie es online!
Erläuterung
cellfun(@nnz,x)
nnz
Wendet die Funktion (Anzahl der Nichtzeros) auf jede Zeichenfolge im Eingabearray anx
.nnz
Entspricht für ASCII-Zeichenfolgennumel
(Anzahl der Elemente), ist jedoch kürzer. Das Ergebnis ist ein numerisches Array mit den Zeichenfolgenlängen.Dann
[~,]=max(...)
gibt den Index des ersten Maximums in der Anordnung der Saitenlängen. Das Ergebnis wird als Indexx
für geschweifte Klammern verwendet , um die entsprechende Zeichenfolge zu erhalten.quelle
JavaScript (Node.js) , 38 Byte
Probieren Sie es online!
quelle
-
statt<
in der Komparatorfunktion verwenden.J ,
19, 11, 108 BytesProbieren Sie es online!
Danke an streetster für den Hinweis!
-1 Byte dank FrownyFrog!
-2 Bytes dank Conor O'Brien
Wie es funktioniert:
Probieren Sie es online!
quelle
0{::]\:#@>
{.@
anstatt zu0{::
arbeiten?0{>\:#@>
C #, 43 + 18 = 61 Bytes
Probieren Sie es online!
quelle
a=>a.Aggregate((x,y)=>y.Length>x.Length?y:x)
44-Byte-Basis,a=>a.First(x=>x.Length==a.Max(y=>y.Length))
43-Byte-Basis zu verkürzenPerl 6 ,
1413 BytesVersuch es
Versuch es
quelle
PHP, 72 Bytes
quelle
Japt
-h
,53 BytesVersuch es
Kehren Sie um, sortieren Sie nach Länge und geben Sie das letzte Element aus.
quelle
Schnell , 54 Bytes
Probieren Sie es online!
quelle
K (oK) , 9 Bytes
Probieren Sie es online!
Beispiel:
Erläuterung
Anmerkungen:
Nicht gelöscht, da dies als nicht trivial eingestuft wird, obwohl es im Grunde genommen 5 Schritte sind (wäre, wenn es als Funktion geschrieben würde
{*x@>#:'x}
).quelle
Java (OpenJDK 8) , 67 Byte
Noch ein Beitrag in meiner Lieblingssprache! (gelesen: das einzige, das ich kenne).
Dies funktioniert nicht mit einem leeren Array, aber das ist in Ordnung.
Golf gespielt
Ungolfed
Probieren Sie es online!
quelle
Schläger ,
160 Bytes110 BytesProbieren Sie es online! Zum ersten Mal mitarbeiten, Ratschläge erwünscht!
Ungolfed
Aktualisierte Lösung basierend auf Feedback
quelle
foldr
-basierten Ansatz umzustellen, das Maximum nach Länge zu nehmen und das zu übertragen.define(m a)
zuλ(a)
Bash , 45 Bytes
Probieren Sie es online!
quelle
Scratch
27 17 170160Es wird eine globale (genauer gesagt an alle Sprites angehängte) Liste von Strings erwartet, die aufgerufen werden
mylist
. Nach dem Klicken auf die grüne Flagge verbleibt das längste Wort in der Variablenw
.Ich denke das ist der Link
Zählen nach diesem Meta.
quelle
stop[all
hier?Röda , 30 Bytes
Probieren Sie es online!
Erläuterung:
Alternative 30 Bytes:
Probieren Sie es online!
quelle
enum
das fallengelassen werden kann und stattdessen das Minimum von[[-#_,_1]]
ausgewählt werden kann, tio.run/…min
Strings alphabetisch verglichen werden (weil Arrays sekundär nach ihrem zweiten Element verglichen werden). Zum Beispiel["b", "a"]
würde Eingabe"a"
als Ausgabe geben. Ich sollte wahrscheinlich eineminby
Funktion zu Röda oder etwas Ähnlichem hinzufügen ...APL -
2316 Bytesa←{((⍴¨⍵)⍳(⌈/(⍴¨⍵)))⌷⍵}
Vielen Dank an alle für all Ihre tollen Vorschläge und Ermutigungen!
Verwendung:
Erläuterung:
Ruft die Länge jedes Zeichenvektors (Zeichenkette) ab und verwendet dann Maximum als Index. Ich habe gerade vor 20 Minuten mit APL angefangen. Es tut mir leid, wenn dies ein dummer Weg ist, es zu tun.
Probieren Sie es online!
(aus Gründen der Übersichtlichkeit bearbeitet)
quelle
a←
wird nicht auf Ihr bytecount angerechnet.(⌈/(⍴¨⍵))
=>⌈/⍴¨⍵
. Also,(...)⌷⍵
=>⍵⌷⍨...
um ein Byte zu speichernStandard ML (MLton) , 55 Bytes
Probieren Sie es online! Anwendungsbeispiel:
& ["abc","de","fgh"]
Erträge"abc"
.Ungolfed:
Probieren Sie es online!
quelle
Julia 0,6 , 24 Bytes
Probieren Sie es online!
quelle
Funky , 38 Bytes
Erklärt
Probieren Sie es online!
quelle
Ruby ,
21 bis20 BytesProbieren Sie es online!
Triviale Lösung, danke Snack für -1 Byte
quelle
&:size
aus den Klammern für -1SNOBOL4 (CSNOBOL4) ,
6357 BytesProbieren Sie es online!
Der Eingang ist auf stdin und der Ausgang auf stdout.
Grob übersetzt in den folgenden Pseudocode:
quelle
Bash , 44 Bytes
Probieren Sie es online!
quelle