FuzzBuzz - как оптимизировать?

Мой код выглядит несколько запутанным, но проверку проходит.
Может кто подскажет, как покороче это безобразие сделать? V_V

if ( ( (number % 3) == 0) && ( (number % 5) != 0) ) {
taskResult = ‘Fizz’;
} else {
if ( ( (number % 3) != 0) && ( (number % 5) == 0) ) {
taskResult = ‘Buzz’;
} else {
if ( ( (number % 3) == 0) && ( (number % 5) == 0) ) {taskResult = ‘FizzBuzz’;} else {
taskResult = number;
}
}
}

Так немного короче:

Код
if (number % 3 === 0 && number % 5 === 0) {
  taskResult = 'FizzBuzz';
}
else if (number % 3 === 0) {
  taskResult = 'Fizz';
}
else if (number % 5 === 0) {
  taskResult = 'Buzz';
}
else  {
  taskResult = number;
}
2 лайка

А почему зависит от порядка операций? Если у Вас поменять местами, то на 100% работать не будет

А зачем менять порядок? Всё построено именно с расчетом, что код выполняется сверху вниз.

менять порядок не надо по той причине что всегда проверяются сначала самые строгие условия, иначе до более строгих выполнение кода не дойдет

вот еще чуть короче

if (!(number % 3) && !(number % 5)) {
  taskResult = 'FizzBuzz';
}
else if (!(number % 3)) {
  taskResult = 'Fizz';
}
else if (!(number % 5)) {
  taskResult = 'Buzz';
}
else  {
  taskResult = number;
}
2 лайка

вот ответ на мой вопрос. спасибо! это я упустил)

У меня получилось , как у Ineska…не понимаю, как работают ваши условия(туговат видимо) не могли бы вы пояснить если не трудно…разжевать т.е. конкретно почему !(number % 3) = TRUE к примеру при number = 6

ну это на самом деле не очень хороший пример кода. Короче не значит лучше. Лучше когда понятно и выразительно написано. Здесь происходит неявное приведение. Смотри, 6 % 3 = 0, затем 0 приводится к булеву значению, False, ну а восклицательный знак меняет булево значение на противоположное. Надеюсь внятно изъяснил

1 лайк

Да, вполне, спасибо!

Вот еще мой вариант, коротко и элегантно на мой взгляд)

var number = 15;
var taskResult;

var fizz = number % 3;
var buzz = number % 5;

taskResult = number;

if (!fizz) {
taskResult = ‘Fizz’;
}

if (!buzz) {
taskResult = ‘Buzz’;
}

if (!fizz && !buzz) {
taskResult = ‘FizzBuzz’;
}

1 лайк