powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Тест FizzBuzz
10 сообщений из 10, страница 1 из 1
Тест FizzBuzz
    #38794463
PhpDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю книжку Основы разработки веб-приложений.
На стр. 151
авторЗадача FizzBuzz
Если вы подумываете о том, чтобы работать программистом, вам обязательно нуж-
но уметь решать задачку FizzBuzz. Насколько я знаю, эта задача стала популярной
после поста в блоге Джеффа Этвуда под названием «Почему программисты не
могут… программировать?» (Why Can’t Programmers… Program?). В посте Джефф
указывает на тот факт, что многие люди, работающие программистами, не могут
решить эту простую задачу.
Вот как выглядит эта задача: напишите программу, которая выводит числа от
1 до 100. Но вместо тех, что делятся на 3, пусть будет выведено Fizz, а вместо тех,
что делятся на 5, — Buzz. Вместо тех же, что делятся и на 3, и на 5, пусть будет
выведено FizzBuzz.
Вы вполне можете решить эту задачку с помощью цикла for, а также других
инструментов, которым я научил вас в этой главе. Используйте серии условий if-
else и оператор остатка от деления.
Я должен добавить, что не считаю эту задачу особенно хорошим тестом на спо-
собность кого-либо программировать, и не думаю, что ненайденное решение может
быть поводом для увольнения программиста из-за несоответствия занимаемой
должности. Существует множество причин, по которым кто-либо может не спра-
виться с этой задачей, не имеющих никакого отношения к написанию компьютер-
ных программ на уровне начинающего. Но все-таки что есть, то есть, и, возможно,
когда-нибудь вам зададут этот вопрос. Поэтому постарайтесь найти решение и за-
помнить его.


Мое решение

index.html
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Test FizzBuzz</title>

</head>
<body>
	<div id="textadd"></div>
	<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
	<script src="main.js"></script>
</body>
</html>



main.js
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
"use strict";
var main = function() {
	var dm = function(t, m) {
		if (t % m) {
			return false;
		} else {
			return true;
		}
	};
	var i, fizz, buzz;
	for (i = 1; i < 101; i++) {
		fizz = dm(i, 3);
		buzz = dm(i, 5);
		if (fizz && buzz) {
			$("#textadd").append("<p>" + i + " FizzBuzz</p>\n");
		} else if (fizz) {
			$("#textadd").append("<p>" + i + " Fizz</p>\n");
		} else if (buzz) {
			$("#textadd").append("<p>" + i + " Buzz</p>\n");
		}
	}
};
$(document).ready(main);



Скрипт работает, результат правильный. Мой вопрос по оформлению кода, например проверка javascript кода на сайте jslint
http://jslint.com/ выдает кучу ошибок. Как должно быть правильно?
...
Рейтинг: 0 / 0
Тест FizzBuzz
    #38794477
PhpDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PhpDeveloper,

в первом посте, конечно не полностью выполнено условие задачи

авторнапишите программу, которая выводит числа от
1 до 100. Но вместо тех, что делятся на 3, пусть будет выведено Fizz, а вместо тех,
что делятся на 5, — Buzz. Вместо тех же, что делятся и на 3, и на 5, пусть будет
выведено FizzBuzz.


Пропустил ключевое слово
авторНо вместо тех,

Исправленный вариант
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
"use strict";
var main = function() {
	var i, str = "";
	for (i = 1; i < 101; i++) {
		if ((i % 15) ? false : true) {
			str += "<p>FizzBuzz</p>\n";
		} else if ((i % 3) ? false : true) {
			str += "<p>Fizz</p>\n";
		} else if ((i % 5) ? false : true) {
			str += "<p>Buzz</p>\n";
		} else {
			str += "<p>" + i + "</p>\n";
		}
	}
	$("#textadd").append(str);
};
$(document).ready(main);



Но мой первоначальный вопрос остался, почему код не проходит валидацию на сайте jslint.com
...
Рейтинг: 0 / 0
Тест FizzBuzz
    #38794479
PhpDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще вопрос, правильно ли я понимаю, что анонимные функции надо оборачивать скобками
var main = (function() {
...
});

или это не обязательно? как правильно?
По поводу проверки кода на сайте jslint.com я склонен считать что не прав сайт, а не я.
...
Рейтинг: 0 / 0
Тест FizzBuzz
    #38794505
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PhpDeveloperИ еще вопрос, правильно ли я понимаю, что анонимные функции надо оборачивать скобками
var main = (function() {
...
});Это не анонимная функция, а функция main. То же самое:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var main = function() {
...
};

function main () {
...
};

/*а это объявление и вызов анонимной функции:*/

(function(){})();



PhpDeveloperПо поводу проверки кода на сайте jslint.com я склонен считать что не прав сайт, а не я.Последняя инстанция не какой-то левый сайт и не ты, а браузер. JS-валидаторы не нужны принципиально.
...
Рейтинг: 0 / 0
Тест FizzBuzz
    #38794562
PhpDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про скобки вокруг анонимной функции прочитал.

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

По валидации тоже, все понятно. Спасибо.
...
Рейтинг: 0 / 0
Тест FizzBuzz
    #38794585
PhpDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой окончательный вариант FizzBuzz
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$(document).ready($("#textadd").append((function() {
    var i, str = "";
    for (i = 1; i < 101; i++) {
        str += (i % 15) ?
                 ((i % 3)  ?
               (((i % 5)) ? "<p>" + i + "</p>\n"
                             : "<p>Buzz</p>\n")
                             : "<p>Fizz</p>\n")
                             : "<p>FizzBuzz</p>\n";
    }
    return str;
})()));
...
Рейтинг: 0 / 0
Тест FizzBuzz
    #38794597
PhpDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PhpDeveloper,

Сайт Closure Compiler оптимизировал результат в одну строку
http://closure-compiler.appspot.com/home

Код: javascript
1.
$(document).ready($("#textadd").append(function(){var a,b="";for(a=1;101>a;a++)b+=a%15?a%3?a%5?"<p>"+a+"</p>\n":"<p>Buzz</p>\n":"<p>Fizz</p>\n":"<p>FizzBuzz</p>\n";return b}()));



Ошибок и предупреждений нет. Работает одинаково.
...
Рейтинг: 0 / 0
Тест FizzBuzz
    #38794645
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мой вариант, написан за 49 секунд в хромовой консольке

Код: javascript
1.
for (var i = 1; i <= 100; i++) { var result = i % 3 == 0 ? "fizz" + (i % 5 == 0 ? "bizz" : "") : i % 5 == 0 ? "bizz" : i; console.log(result); }
...
Рейтинг: 0 / 0
Тест FizzBuzz
    #38794808
PhpDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleLover,

Я для самообразования, вдруг кто спросит, что такое FizzBuzz, а я не знаю.
...
Рейтинг: 0 / 0
Тест FizzBuzz
    #38794812
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PhpDeveloper,

мне кажется даже индус, который вчера из канавы вылез наговнокодит какое-то бы то ни было решение. Если мне такую задачу на собесе дадут это 100% пора на выход - это или меня за идиота держат, и в этой компании идиоты работают.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Тест FizzBuzz
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]