FizzBuzz в Ruby: изучение нескольких методов решения классической задачи программирования

“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. У каждого метода есть свои преимущества и недостатки, поэтому выбор метода зависит от таких факторов, как читаемость кода, требования к производительности и личные предпочтения.