Skip to content

Instantly share code, notes, and snippets.

@songjiayang
Last active August 29, 2015 14:00
Show Gist options
  • Save songjiayang/11396992 to your computer and use it in GitHub Desktop.
Save songjiayang/11396992 to your computer and use it in GitHub Desktop.
拉勾代码
class FizzBuzzWhizz
def start_game
input_numbers
warp_numbers_with_bingo_message
play
end
private
def input_numbers
puts "please input tree numbers, the numbers's range is 0~9"
@numbers = []
while @numbers.length != 3 do
numbers = gets.chomp.split(',')
if numbers.all?{|number| is_valid? number}
@numbers = numbers
else
puts "invalid numbers input, please input again:"
end
end
end
def is_valid?(number)
number =~ /^[1-9]$/
end
def warp_numbers_with_bingo_message
@bingo = {}
%w(Fizz Buzz Whizz).each_with_index{ |v,i| @bingo[@numbers[i]] = v }
end
def play
(1..100).each { |number| on_turn(number) }
end
def on_turn(number)
contain_number = contain?(number)
if contain_number
puts @bingo[@numbers[0]]
elsif is_multiple?(number)
play_with_multiple_number(number)
else
puts number
end
end
def play_with_multiple_number(number)
message = ""
@numbers.each{|n| message += @bingo[n] if ( number % n.to_i) == 0}
puts message
end
def contain?(number)
number.to_s.split("").index(@numbers[0])
end
def is_multiple?(number)
@numbers.any?{ |n| (number % n.to_i ) == 0 }
end
end
fbw = FizzBuzzWhizz.new
fbw.start_game
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment