2016-07-06 25 views
-3

Ich möchte herausfinden, was das erste, das zweite und das dritte Ergebnis ist, so dass ich if firstnumber==secondnumber && secondnumber==thirdnumber tun kann. Wie kann ich diese Zahlen in den Ergebnissen finden?Finden Sie die spezifische Anzahl von Array.collect

numbers = 3.times.map { Random.new.rand(0..10000) } 

prizes = numbers.map do |x| 
    case x 
    when 1..3000 
    [ '7', 10000 ] 
    when 3001..6000 
    [ "Cherries", 500 ] 
    when 6001..10000 
    [ "Diamond", 400 ] 
    end 
end 

puts "Your results are: #{prizes.collect { |p| p[0] }.join(", ")}! 

Ich habe versucht, p [0] [0] zu verwenden, aber es gibt stattdessen den ersten Buchstaben.

+1

Ihre Frage könnte klarer sein, wenn es um die gewünschte Ausgabe enthält. –

+1

Bitte lesen Sie "[mcve]". Wir brauchen Ihre erwartete Leistung. Sie zeigen nicht, wie Sie versucht haben, das Problem zu lösen. Bitte versuchen, dann fragen, anstatt vorher zu fragen. –

+1

Eine Sache, die über diese Art von Spielen zu beachten ist, ist, dass die Preisauszahlungen von Mustern abhängen, wie '7,7,7' wesentlich mehr pro' 7' auszahlen als eine einzelne '7'. – tadman

Antwort

2

Sagen Sie, wenn:

results = prizes.collect { |p| p[0] } #=> ["Diamond", "Cherries", "7"] 

Dann gehen Sie wie folgt an jedem Ergebnis zu erhalten:

results[0] #=> "Diamond" 
results[1] #=> "Cherries" 
results[2] #=> "7" 

Sie auch results.first verwenden könnte das erste Element zu erhalten. Wenn Sie in Rails passieren zu arbeiten, können Sie auch Folgendes tun:

results.second #=> "Cherries" 
results.third #=> "7" 
1

Hier gibt es guten Weg, dies zu tun:

numbers = 3.times.map { Random.new.rand(0..10000) } 

prizes = numbers.map do |x| 
    case x 
    when 1..3000 
    { name: '7', val: 10000 } 
    when 3001..6000 
    {name: "Cherries", val: 10000 } 
    when 6001..10000 
    {name: "Diamond", val: 400 } 
    end 
end 

# You could replace 'map' with 'collect' here and have the same results 
prizes_string = prizes.map { |p| "#{p[:name]}: #{p[:val]}" }.join(" and ") 

puts "Your results are: #{prizes_string}!" 
+1

Ein bisschen eine Fehlbezeichnung hier: 'prices_string 'ist eigentlich eine Reihe von Streichern. – tadman

+0

@tadman \t true, das habe ich behoben –

+1

Die Verwendung eines Hash, um Dinge in einer geordneten Weise zu speichern, funktioniert ziemlich gut, aber am Ende wird für ein so kleines Beispiel ausführlicher sein. Könnte auch die Argumente explodieren: 'prices.map {| name, val | ...} 'mit dem Array-Paar. – tadman

Verwandte Themen