Rubin am längsten Wort im Array

8

Ich habe diese Methode entwickelt, um das längste Wort in einem Array zu finden, aber ich frage mich, ob es einen besseren Weg dafür gibt. Ich bin ziemlich neu in Ruby und habe das einfach als Übung zum Erlernen der inject Methode gemacht.

Es gibt entweder das längste Wort in einem Array oder ein Array der gleich längsten Wörter zurück.

%Vor%     
clem 06.03.2011, 19:55
quelle

6 Antworten

27

Ich würde

machen %Vor%     
steenslag 06.03.2011, 20:12
quelle
6

Ruby hat eine Standardmethode, um ein Element in einer Liste mit dem Maximum eines Wertes zurückzugeben.

%Vor%

oder Sie können die Methode max_by

verwenden %Vor%

um alle Elemente mit der maximalen Länge zu erhalten

%Vor%     
David Nehme 06.03.2011 20:07
quelle
4

Hier ist eine mit inject (funktioniert nicht für ein leeres Array):

%Vor%

, die zu

verkürzt werden kann %Vor%

für diejenigen, die Golf mögen.

    
Mladen Jablanović 06.03.2011 20:21
quelle
1

Ein zwei Liner:

%Vor%

oder wenn Sie inject verwenden möchten, verwenden Sie Ihre Idee, aber es ist kürzer.

%Vor%     
Gareve 06.03.2011 20:09
quelle
1
%Vor%

Diese Methode hängt nur von generischen Enumerable -Methoden ab, da ist nichts Array spezifisch, daher können wir sie in das Enumerable -Modul ziehen, wo sie auch für Set s oder% co_de verfügbar ist % s, nicht nur Enumerator s.

    
Jörg W Mittag 06.03.2011 20:10
quelle
0

Diese Lösung verwendet die inject-Methode, um die längsten Strings in einem Array zu akkumulieren, und wählt dann diejenigen mit der höchsten Länge aus.

animals = ["Maus", "Katze", "Vogel", "Bär", "Elch"]

animals.inject (Hash.neu {| h, k | h [k] = []}) {| acc, e | acc [e.größe] & lt; & lt; e; acc} .sort.last [1]

Dies gibt zurück: ["Maus", "Maus"]

    
Glenn 18.09.2016 12:15
quelle

Tags und Links