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


#1

Мой код выглядит несколько запутанным, но проверку проходит.
Может кто подскажет, как покороче это безобразие сделать? 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;
}
}
}


#2

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

Код
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;
}

#3

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


#4

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


#5

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

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

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

#6

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


#7

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


#8

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


#9

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


#10

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

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’;
}