Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   FizzBuzz, делящихся на 5 (но не на 3) (https://javascript.ru/forum/misc/57080-fizzbuzz-delyashhikhsya-na-5-no-ne-na-3-a.html)

jack3dm 18.07.2015 13:26

FizzBuzz, делящихся на 5 (но не на 3)
 
Выразительный Javascript. 2ое издание
стр 43.

Напишите программу, которая выводит через console.log все цифры от 1 до
100, с двумя исключениями. Для чисел, нацело делящихся на 3, она должна выводить ‘Fizz’, а для чисел, делящихся на 5 (но не на 3) – ‘Buzz’.
Когда сумеете – исправьте её так, чтобы она выводила «FizzBuzz» для всех
чисел, которые делятся и на 3 и на 5.

Вот мой код, я не знаю как сделать чтобы выводило правильно Fizz :-?

var num = 1;
for(; num <= 100; num++){
	if(!(num % 3)){
		document.write(num, " = Buzz", "<br />");
	}else if(!(num % 5)){
		document.write(num, " = Fizz",  "<br />");
	}else{
		document.write(num, "<br />");
	}
}



======
Решение:
var num = 1;
for ( ; num < 100; num++ ) {
    if ( num % 5 === 0 && num % 3 === 0 ){
        document.write( num, " = FizzBuzz <br />" )
    } else {
        if ( num%5 === 0 ){
            document.write( num, " = Buzz <br />" );
        } else {
            if ( num%3 === 0 ){
                document.write( num, " = Fizz <br/ >" );
            } else {
                document.write( num, "<br/ >" );
            }
        }
    }
}

KosBeg 18.07.2015 13:55

Цитата:

Сообщение от jack3dm
Напишите программу, которая выводит через console.log все цифры от 1 до
100, с двумя исключениями. Для чисел, нацело делящихся на 3, она должна выводить ‘Fizz’, а для чисел, делящихся на 5 (но не на 3) – ‘Buzz’.

если я правлильно понял то нужно так
<script>
var num = 1;
for(; num <= 100; num++){
	if((num % 3) == 0){
		document.write(num, " = Fizz", "<br />");
	}else if((num % 5) == 0){
		document.write(num, " = Buzz",  "<br />");
	}else{
		document.write(num, "<br />");
	}
}
</script>

PS: а "15 = Fizz" это правильно?

KosBeg 18.07.2015 14:00

Цитата:

Сообщение от jack3dm
Когда сумеете – исправьте её так, чтобы она выводила «FizzBuzz» для всех
чисел, которые делятся и на 3 и на 5.

костыльный вариант но работает
<script>
var num = 1;
for(; num <= 100; num++){
	if((num % 3) == 0 && (num % 5) == 0 ){
		document.write(num, " = FizzBuzz", "<br />");
	}else{
		document.write(num, "<br />");
	}
}
</script>

jack3dm 18.07.2015 14:21

Да вот как раз и прикол что число 15 не должно попадать.
То есть "делящихся на 5 (но не на 3) – ‘Buzz’"
Число 15 делится на 3, как и 30, 45, 60, 75, 90.
Вот и думаю.
Кстати да, я что то провтыкал на счет "=="
писал
num % 5
вместо
num % 5 == 0

Makarov 18.07.2015 14:26

Два парня, впервые увидевшие fizzbuzz и вместе выясняющие как его решать, у меня на глаза ща навернутся слезы умиления =)

jack3dm 18.07.2015 14:28

Ну ты это) Макаров) помоги нет?))

Makarov 18.07.2015 14:30

jack3dm, Так эта задача проста как пять копеек, и ее важно написать самому, если я ща решение напишу, какой смысл в ней будет?)

Ну то есть не нужно здесь тонкостей языка вообще, нужно составить простейший алгоритм. А умение составлять алгоритмы самому для программиста ну очень важно.

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

jack3dm 18.07.2015 14:59

Да понятно что здесь нужно использовать
&& в
}else if( num % 5 == 0){
document.write(num, " = Buzz", "<br />");
}

Но как бы я не записывал всё равно не работает.
Вот например:
<script>
var num = 1;
for(; num <= 100; num++){
	if(num % 3 == 0){
		document.write(num, " = Fizz", "<br />");
	}else if( num % 5 == 0 && num % 3 == 0){
		document.write(num, " = Buzz",  "<br />");
	}
	else{
		document.write(num, "<br />");
	}
</script>
}


Я знаю что проблема в
else if( num % 5 == 0 && num % 3 == 0)
Но как её правильно записать я не знаю.

KosBeg 18.07.2015 15:30

я новичок, мне простительно)
Цитата:

Сообщение от Makarov
впервые увидевшие fizzbuzz

я вообще никаких книг по js не читал, поэтому таких заданий не встречал,
те задания слишком уж учебные(но я не всегда могу их решить, но при этом решаю задания и посложнее)

jack3dm 18.07.2015 15:34

Кос лови)
Задачи по javascript из книги "Выразительный javascript"

http://www.itmathrepetitor.ru/zadach...jj-javascript/

jack3dm 18.07.2015 16:31

Странно. Я этого не понимаю. Если поменять местами ифы то результат будет совершенно другой

Правильный код.
<script>
var num = 1;
for ( ; num < 100; num++ ) {
    if ( num % 5 === 0 && num % 3 === 0 ){
       document.write( num, " = FizzBuzz <br />" )
    }else if ( num%5 === 0 ){
       document.write( num, " = Buzz <br />" );
    }else if ( num%3 === 0 ){
       document.write( num, " = Fizz <br/ >" );
    }else{
       document.write( num, "<br/ >" );
    }
}
</script>



А если поменять местами ифы то FizzBuzz не видно...
<script>
var num = 1;
for( ; num <= 100; num++ ){
	if( num%3 === 0 ){
       document.write( num, " = Fizz <br/ >" );
    }else if ( num%5 === 0 ){
       document.write( num, " = Buzz <br />" );
    }else if ( num % 5 === 0 && num % 3 === 0 ){
       document.write( num, " = FizzBuzz <br />" );
    }else{
       document.write( num, "<br/ >" );
    }
}
</script>


Как же это влияет? Как это работает? Почему месторасположение так важно?

Makarov 18.07.2015 18:08

jack3dm,
потому что это два разных алгоритма очевидно. Пусть ваше число равно скажем 15. Куда оно придет во втором случае и куда должно по условиям?
Код в большинстве случаев выполняется последовательно, это раз.

Конструкция if(проверка){что-нибудь} else {еще что-нибудь} он в else не зайдет если проверка выполнена, это два

Ну и в третьих, чтобы было понятнее, добавлю пару незначащих скобочек и табов в правильный код и в ваш:
var num = 1;
for ( ; num < 100; num++ ) {
	if ( num % 5 === 0 && num % 3 === 0 ){
		document.write( num, " = FizzBuzz <br />" )
	} else {
		if ( num%5 === 0 ){
			document.write( num, " = Buzz <br />" );
		} else {
			if ( num%3 === 0 ){
				document.write( num, " = Fizz <br/ >" );
			} else {
				document.write( num, "<br/ >" );
			}
		}
	}
}

var num = 1;
for( ; num <= 100; num++ ){
	if( num%3 === 0 ){
		document.write( num, " = Fizz <br/ >" );
	} else {
		if (num % 5 === 0) {
			document.write(num, " = Buzz <br />");
		} else {
			if (num % 5 === 0 && num % 3 === 0) {
				document.write(num, " = FizzBuzz <br />");
			} else {
				document.write(num, "<br/ >");
			}
		}
	}
}

jack3dm 18.07.2015 18:17

Makarov,
Я понял как работает. Последовательно, сначала было 3, затем 5, затем 15. Так как изначально у нас в списке стоит 3 то и числу 15 будет присвоено Fizz. Последовательность. Спасибо

Makarov 18.07.2015 18:41

KosBeg,
про "слишком уж учебные задачи".
Конкретно вот это задача дала название целому классу задачек, их обычно так и называют "физзбазз задачки".

Такой тип задач широко применяется на практике в одном конкретном случае.
А случай такой: приходит собеседоваться на программиста какой-нибудь тип, и надо проверить, способен ли он хоть пару строчек кода написать. Резюме как правило верить сильно нельзя, в среднестатистическую контору на собеседование могут прийти какие-нибудь очень странные люди, вроде всяких студентов "с дипломом программиста", которые ничего серьезного в жизни не писали никогда. Такой чувак может обычно очень хорошо заговаривать зубы и иметь впечатляющее выдуманное резюме, но если попросить его решить какую-нибудь очень простую задачку на листочке, то он скорее всего сольется.

То есть физзбазз задачки - это общая проверка на адекватность, что к нам именно программист пришел а не хрен с горы, и если прийти на собеседование в нормальную контору "с улицы", то что-нибудь такое решить предложат.

KosBeg 18.07.2015 18:55

Цитата:

Сообщение от Makarov
То есть физзбазз задачки - это общая проверка на адекватность, что к нам именно программист пришел а не хрен с горы

я хрен з горы :cray:

Makarov 18.07.2015 19:01

KosBeg,
Ничо, пройдет, все мы ими когда-то были) Тебе 14 лет, в 14 лет это не страшно. Будешь постоянно заниматься программированием - к возрасту когда все твои сверстники будут максимум в макдональдсе работать станешь хорошим спецом

JsConAp 18.07.2015 20:42

Цитата:

Сообщение от jack3dm
======
Решение:

В одну строку :-? :haha:
for(var i=1;101>i;i++)console.log(i%5||i%3?i%3?i%5?i:"Buzz":"Fizz":"FizzBuzz");

kostyanet 19.07.2015 09:26

Цитата:

Сообщение от Makarov
То есть физзбазз задачки - это общая проверка на адекватность,

Наоборот, это проверка на адекватность работодателя или того придурка, который нанят придурошным работодателем в отдел кадров.

То есть не проверка, а признак. Если вам начинают предлагать порешать физбуз - значит вы вливаетесь в команду недоумков и неадекватов.

kostyanet 19.07.2015 09:31

Например

Цитата:

Сообщение от jack3dm
Напишите программу, которая выводит через console.log все цифры от 1 до 100


Все что так перевел - не прошли, не сдали, уволены без выходного пособия, на пинковой тяге. Ах бл, они же принимают на работу... ну так о чем и базар.

kostyanet 19.07.2015 09:42

Хорошо, возьмем исходник

Write a program that uses console.log to print all the numbers from 1 to 100, with two exceptions. For numbers divisible by 3, print “Fizz” instead of the number, and for numbers divisible by 5 (and not 3), print “Buzz” instead. When you have that working, modify your program to print “FizzBuzz”, for numbers that are divisible by both 3 and 5 (and still print “Fizz” or “Buzz” for numbers divisible by only one of those).

и типа правильный перевод

FizzBuzz. Напишите программу, которая выводит через console.log все числа от 1 до 100, с двумя исключениями. Для чисел, нацело делящихся на 3, она должна выводить ‘Fizz’, а для чисел, делящихся на 5 (но не на 3) – ‘Buzz’.Когда сумеете – исправьте её так, чтобы она выводила «FizzBuzz» для всех чисел, которые делятся и на 3 и на 5.

чтобы задать вопрос: какой недоумок пишет такую документацию? Вот так пишут

Напишите программу, которая выводит через console.log все числа от 1 до 100 по следующим правилам. 1) Все числа кратные 3 заменить на текст ‘Fizz’ 2) Все числа кратные 5 (но не кратные 3) заменить на текст ‘Buzz’. 3) Иначе вывести число.

Правильно сформулировал? Тогда вопрос - зачем автор баяна формулирует хуйдожественными екивоками? Варианты: 1) автор - тупой, 2) учит не программированию, а распознаванию хотелок заказчиков. Типа такой тренинг на бабку Вангу от жабы скрипучей.

Короче, будете учиться на гамнямбах - тому и выучитесь.

join 19.07.2015 09:50

Цитата:

Сообщение от kostyanet (Сообщение 380343)
Наоборот, это проверка на адекватность работодателя или того придурка, который нанят придурошным работодателем в отдел кадров.

То есть не проверка, а признак. Если вам начинают предлагать порешать физбуз - значит вы вливаетесь в команду недоумков и неадекватов.

Большинство работодателей ничерта в программировании не рубят, отдел кадров тем более. Но за выполнение их 'хотелок', 'пляшущих панелек, и прочих калькуляторов' платят не плохо. Возникает вопрос к Костантину: какую альтернативу вы можете предложить в данном контексте трудоустройства?

join 19.07.2015 09:56

ПС: мое мнение такие задачки как Buzz даются на курсах сайтостроения и в сомнительных учебных заведениях. На практике живого-web'a их применение весьма сомнительно.

Makarov 19.07.2015 10:12

Цитата:

Сообщение от kostyanet (Сообщение 380343)
Наоборот, это проверка на адекватность работодателя или того придурка, который нанят придурошным работодателем в отдел кадров.

То есть не проверка, а признак. Если вам начинают предлагать порешать физбуз - значит вы вливаетесь в команду недоумков и неадекватов.

О, значит физзбазз задачки к тому же отсеивают таких как Вы. Да это же прекрасно! Уже ради этого их стоит применять

kostyanet 19.07.2015 12:28

Цитата:

Сообщение от join
озникает вопрос к Костантину: какую альтернативу вы можете предложить в данном контексте трудоустройства?

Так не бывает. Бывает что есть бизнес такой - программы писать, или в бизнесе есть отдел такой - себе программы писать. В любом случае есть начальник бизнеса или отдела который понимает в программировании и программистах. Ну то есть в беседе он может задать вопрос: "ваше отношение к баз-тестам" и сделать вывод - дебилоид перед ним или можно дать тестовое ТЗ.

kostyanet 19.07.2015 12:31

Цитата:

Сообщение от Makarov (Сообщение 380353)
О, значит физзбазз задачки к тому же отсеивают таких как Вы. Да это же прекрасно! Уже ради этого их стоит применять

Ну да. С таких как я такие как вы слезете не залезая. Как будто я не знаю как надо доить лохопедов в погоне за экономией фонда ЗП и получая голимое гавно оправдываться - зато по дишману.

kostyanet 19.07.2015 12:35

Я бы даже сказал что нормальный программист про такую неведомую е...ую х..ю как ваши баз-тесты вообще не знает.

kasshei@mail.ru 18.10.2019 01:43

Fizz Buzz задачка средняя как мог так решил.
 
<script>
var x=0;
for(var i=1;i<=100;i++){
x=x+1;
if(x%3==0){document.write("Fizz");}
if(x%5==0){document.write("Buzz");}
document.write(x + ";"+ "<br>");
}
</script>
Можно в консоли, но в браузер интереснее.

рони 18.10.2019 09:12

kasshei@mail.ru,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.


Часовой пояс GMT +3, время: 03:38.