2017-12-15 7 views
0

Ich habe zwei Arrays von Zahlen, die die gleiche Größe haben. Wie kann ich feststellen, ob im zweiten Array ein Element vorhanden ist, das größer als das erste Array bei einem bestimmten Index ist? Mit diesem Beispiel:Vergleichen Sie ein Element aus einem Array mit einem Element aus einem anderen Array

a = [2, 8, 10] 
b = [3, 7, 5] 

3 größer als 2 an Position 0. Aber im Folgenden:

a = [1, 10] 
b = [0, 8] 

gibt es kein solches Element. Bei Index 0 ist 0 nicht größer als 1, und bei Index 1 ist 8 nicht größer als 10.

+0

Wie sollte die Ausgabe aussehen? – jvillian

+0

Es kann nur richtig oder falsch sein –

Antwort

5

Versuchen Sie diesen

a.each_with_index.any? { |item, index| b[index] > item } 
+0

Was liest besser, was hast du oder 'a.each_index.any? {| index | b [Index]> a [Index]} '? –

+0

Ich bevorzuge Ihre: D – Ursus

+0

@CarySwoveland Yours ist auch schneller. –

0

Wenn es eine Zahl in b größer als die Zahl in a am angegebenen Index, dies wird die Zahl in b zurück. Wenn keine Nummern in b größer sind, wird nil zurückgegeben.

b.detect.with_index { |n, index| n > a[index] } 

Zum Beispiel, wenn Sie die folgenden Arrays haben.

a = [3, 4, 5] 
b = [6, 7, 8] 

Sie werden einen Rückgabewert von 6 bekommen.

4

Keine Notwendigkeit für Indizes. Einfach paaren und jedes Paar überprüfen.

b.zip(a).any? { |x, y| x > y } 
=> true or false 

Und eine knifflige Frage: Überprüfen Sie, ob an jeder Position, a das Maximum:

a.zip(b).map(&:max) != a 
=> true or false 

Und ein sehr effizientes eine (Zeit und Raum):

b.zip(a) { |x, y| break true if x > y } 
=> true or nil 

(Wenn Sie true/false benötigen (oft nicht, zum Beispiel unter if-Bedingungen), können Sie !! voranstellen oder 01 anhängen)

+1

Ich könnte sagen "keine Notwendigkeit für ein neues Array": D – Ursus

+0

@Ursus Nun, dann könnte ich sagen "keine Notwendigkeit anzunehmen, dass ein neues Array ist schlecht" oder ich könnte einfach ein '.lazy' in dort stecken :-) –

+0

Dies ist die bisher sauberste Antwort hier. 'b.lazy.zip (a) .eine? {| x, y | x> y} 'wäre wahrscheinlich ein bisschen besser, ja. – mudasobwa

Verwandte Themen