🟨 JavaScript
Лёгкая
🕐 5 мин

Функция FizzBuzz

Цель: создать функцию fizzBuzz(), которая возвращает массив из 100 элементов: кратные 3 заменяются на «Fizz», кратные 5 — на «Buzz», а кратные и 3, и 5 — на «FizzBuzz».

💡 Подсказка решения
  1. Проверьте кратность 15, затем 3 и 5.
  2. Формируйте массив результатов и возвращайте его.
👀 Решение #1 (классическое)
/**
 * Функция FizzBuzz - классическая задача на проверку делимости чисел.
 * Возвращает массив, где числа, кратные 3, заменены на "Fizz",
 * кратные 5 - на "Buzz", а кратные и 3, и 5 (т.е. 15) - на "FizzBuzz".
 * @returns {Array} Массив результатов по правилам FizzBuzz
 */
function fizzBuzz() {
  // Создаем массив для хранения результатов
  const result = [];
  
  // Перебираем числа от 1 до 100 включительно
  for (let i = 1; i <= 100; i++) {
    // Проверяем делимость на 15 в первую очередь (чтобы избежать 
    // срабатывания условий для 3 или 5 по отдельности)
    if (i % 15 === 0) {
      result.push('FizzBuzz');  // Кратно и 3, и 5
    } 
    // Если не кратно 15, проверяем кратность 3
    else if (i % 3 === 0) {
      result.push('Fizz');  // Кратно только 3
    } 
    // Если не кратно ни 15, ни 3, проверяем кратность 5
    else if (i % 5 === 0) {
      result.push('Buzz');  // Кратно только 5
    } 
    // Если не выполнилось ни одно из условий выше
    else {
      result.push(i);  // Добавляем само число
    }
  }
  
  // Возвращаем заполненный массив результатов
  return result;
}

Почему именно так:

  • Читаемо и очевидно.
  • Легко добавлять или менять условия.
  • Временная сложность O(n).
👀 Решение #2 (через конкатенацию строк)
function fizzBuzz() {
  const result = [];
  for (let i = 1; i <= 100; i++) {
    let str = '';
    if (i % 3 === 0) str += 'Fizz';
    if (i % 5 === 0) str += 'Buzz';
    result.push(str || i);
  }
  return result;
}

Почему именно так:

  • Нет дублирования проверок.
  • Удобно масштабировать под дополнительные делители (например, 7 → ‘Bazz’).
  • Тоже O(n).
👀 Решение #3 (через Array.from + map)
function fizzBuzz() {
  return Array.from({ length: 100 }, (_, idx) => {
    const i = idx + 1;
    let str = '';
    if (i % 3 === 0) str += 'Fizz';
    if (i % 5 === 0) str += 'Buzz';
    return str || i;
  });
}

Почему именно так:

  • Функциональный стиль и компактность.
  • Нет внешнего мутабельного состояния.
  • Явное соответствие индекса и значения.

Описание задачи

Напишите функцию fizzBuzz, которая возвращает массив длины 100 с заменами:

  • Числа, кратные 3, заменяются на «Fizz»
  • Числа, кратные 5, заменяются на «Buzz»
  • Числа, кратные и 3, и 5, заменяются на «FizzBuzz»

Примеры использования

fizzBuzz()[2]; // "Fizz" (число 3)
fizzBuzz()[4]; // "Buzz" (число 5)
fizzBuzz()[14]; // "FizzBuzz" (число 15)

Требования

  • Функция должна называться fizzBuzz
  • Не выводить в консоль, а возвращать массив
  • Работать для диапазона 1–100

🧑‍💻 Это не баг! Это фича!

Редактор кода намеренно скрыт на мобильном.

Поверь, так лучше: я оберегаю тебя от искушения писать код в неидеальных условиях. Маленький экран и виртуальная клавиатура — не лучшие помощники для программиста.

📖 Сейчас: Изучи задачу, продумай решение. Действуй как стратег.

💻 Потом: Сядь за компьютер, открой сайт и реализуй все идеи с комфортом. Действуй как код-джедай!