2016-06-04 6 views
0

Ich muss in allen 3 Tests wahr haben. Ich muss den Code wiederholen, bis das Array nur die längsten zurückgibt.Return-Array mit den längsten Strings nur

# Tests 
p longest(['tres', 'pez', 'alerta', 'cuatro', 'tesla', 'tropas', 'siete']) == ["alerta", "cuatro", "tropas"] 
p longest(['gato', 'perro', 'elefante', 'jirafa']) == ["elefante"] 
p longest(['verde', 'rojo', 'negro', 'morado']) == ["morado"] 
+0

Sie werden nicht lernen, wenn wir hier die Lösung für Sie schreiben. Bitte zeigen Sie den Code, den Sie geschrieben haben, der nicht funktioniert hat, und wir helfen Ihnen dabei, dass es funktioniert. –

+0

Jusus, @spickermann hat eine gute Antwort gegeben, aber in Zukunft erwägen Sie länger zu warten, bevor Sie den Greenie verleihen. Schnellauswahl sortiert andere, die noch an Antworten arbeiten, und kann andere - manchmal bessere, manchmal nur interessante - Antworten entmutigen. Es gibt keine Eile. Viele warten hier mindestens ein paar Stunden, bevor sie eine Auswahl treffen. –

+0

Okay, danke Cary. Ich bin neu bei stackoverflow, danke, dass du mich informiert hast. –

Antwort

2

Okay, machen wir es brechen ...

Erstens: herauszufinden, wie lange das längste Wort ist:

words = ['tres', 'pez', 'alerta', 'cuatro', 'tesla', 'tropas', 'siete'] 
words.map(&:length).max 
#=> 6 

Zweite wählen Sie alle Wörter mit dieser Länge:

words.select { |w| w.length == 6 } 
#=> ["alerta", "cuatro", "tropas"] 

Kombinieren Sie das zu einer Methode:

def longest(words) 
    max_length = words.map(&:length).max 
    words.select { |w| w.length == max_length } 
end 
Verwandte Themen