“FizzBuzz в Ruby: изучение нескольких методов решения классической задачи программирования”
FizzBuzz – популярное задание по программированию, которое часто используют на собеседованиях для оценки базовых навыков программирования кандидата. Задача требует написания программы, которая печатает числа от 1 до заданного предела, но для чисел, кратных трем, вместо числа печатает «Fizz», а для чисел, кратных пяти, — «Buzz». Для чисел, кратных трем и пяти, печатается «FizzBuzz». В этой статье мы рассмотрим различные методы решения проблемы FizzBuzz с использованием Ruby, популярного языка программирования, известного своей простотой и читабельностью.
Метод 1. Простые условия if-else
def fizzbuzz(limit)
(1..limit).each do |num|
if num % 3 == 0 && num % 5 == 0
puts "FizzBuzz"
elsif num % 3 == 0
puts "Fizz"
elsif num % 5 == 0
puts "Buzz"
else
puts num
end
end
end
fizzbuzz(100)
Метод 2: Тернарный оператор
def fizzbuzz(limit)
(1..limit).each do |num|
result = (num % 3 == 0 && num % 5 == 0) ? "FizzBuzz" : (num % 3 == 0) ? "Fizz" : (num % 5 == 0) ? "Buzz" : num
puts result
end
end
fizzbuzz(100)
Метод 3: оператор Case
def fizzbuzz(limit)
(1..limit).each do |num|
case
when num % 3 == 0 && num % 5 == 0
puts "FizzBuzz"
when num % 3 == 0
puts "Fizz"
when num % 5 == 0
puts "Buzz"
else
puts num
end
end
end
fizzbuzz(100)
Метод 4. Сопоставление массива
def fizzbuzz(limit)
(1..limit).map do |num|
case
when num % 3 == 0 && num % 5 == 0
"FizzBuzz"
when num % 3 == 0
"Fizz"
when num % 5 == 0
"Buzz"
else
num
end
end.each { |result| puts result }
end
fizzbuzz(100)
Метод 5. Функциональный подход с Enumerable
def fizzbuzz(limit)
(1..limit).each do |num|
result = [num, "Fizz", "Buzz", "FizzBuzz"][(num % 3 == 0 ? 1 : 0) + (num % 5 == 0 ? 2 : 0)]
puts result
end
end
fizzbuzz(100)
В этой статье мы рассмотрели несколько методов решения проблемы FizzBuzz с помощью Ruby. Мы начали с простого подхода if-else и перешли к использованию тернарного оператора, операторов case, сопоставления массивов и функционального подхода с Enumerable. У каждого метода есть свои преимущества и недостатки, поэтому выбор метода зависит от таких факторов, как читаемость кода, требования к производительности и личные предпочтения.