Ruby :: Aufgabe #3 :: Lösung #2

2 Lösungen Lösungen öffentlich
#3

Lotto - Simulation - 6 aus 49

Anfänger - Ruby von Gustl - 25.11.2012 um 16:16 Uhr
Schreiben Sie ein Programm, welches 6 Zahlen zwischen 1 und 49 abfrägt. Danach soll das Programm solange 6 Zufallszahlen berechnen bis alle 6 eingegebenen Zahlen übereinstimmen. Natürlich darf eine Zahl nicht zweimal vorkommen.
Dann soll ausgegeben werden nach wie vielen "Spielen" ein 6er erzielt wurde und wie hoch die Chance auf einen 3er, einen 4er und einen 5er war.
#2
vote_ok
von Idef1x (1320 Punkte) - 19.01.2018 um 10:19 Uhr
Quellcode ausblenden Ruby-Code
def getting6(array)

=begin

 In:
  - array


 Out:
  - filled array

=end



 #Section - CODE
 
  #Section - filling the array with six random numbers between 1 und 49
    array = []

    while array.size < 6 do
        random = rand(49) + 1
        
        if array.include?(random) == false then
            array.push(random)
            
        end
        
    end

  #Section - Output
	return array.sort!
	
end



def playLotto()

=begin

 In:
  - nothing

 Out:
  - tries for 3, 4, 5 and 6 right numbers

=end

 #Section - CODE

  #Section - Declaration
	try = 0

	player = []
	tries = {3 => 0, 4 => 0, 5 => 0, 6 => 0}



  #Section - Get player's numbers

	for i in 1..6

		loop do
			print "Please enter number #{i}:"

			num = gets.to_i
			
			if player.include?(num) == false && num >= 1 && num <= 49
				player.push(num)
				break
                
			else
				puts "You have entered a number that you have already before or it\'s not between 1 and 49!"
                
			end
		
		end
    
	end


 
 #Section - Try and try and try again
	loop do

		try += 1

		# Reseting round array
		round = []

		# Getting 6 random numbers for the round
		round = getting6(round)

		case (player - round).size
        when 0
            
			tries[6] = try
			
		when 1
            
			if tries[5] == 0
				tries[5] = try
				
			end
            
		when 2
            
			if tries[4] == 0
				tries[4] = try
                
			end
		
		when 3
            
			if tries[3] == 0
				tries[3] = try
				
			end
			
		end
        
		break if (player - round).size == 0
		
	end

 #Section - Output
	tries.each_pair do |key, value|
        
		puts "#{key} right numbers: #{value} tries."
	end

end

playLotto()

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben