###1. Числа Фибоначчи Реализовать подсчет N-го числа фибоначчи двумя способами:
- последовательно(цикл + (массив|переменные для буфера)).
- рекурсивно.
- Нужен метод для конкретного числа:
console.log(fib(10)) // => 55
####Ссылки:
###2. Золотое сечение
####Описание:
Маша любит Сашу, но мать Саши против их брака, т.к. она считает, что у Маши плохие пропорции лица. Помоги Саше переубедить мать относительно пропорций лица Маши с помощью золотого сечения.
####Задание:
Реализовать подсчет значения золотого сечения как отношения двух чисел Фибоначчи(из пункта 1.)
Чтобы было более убедительно, считать золотое сечение с точностью 10 знаков после десятичного разделителя.
###3. Событийная система ####Описание: Реализовать событийную систему. Необходимо реализовать объект у которого есть метод trigger(event, [*agrs]) (1), метод on(event, callback, [context]) (2). Опционально реализовать еще метод off(event, callback, [context]) (3) Если что-то не выйдет, я могу по частям разъяснить.
- (1) -- метод, который провоцирует событие:
- event -- имя события {String}
- [*agrs] -- необязательные аргумент, будут переданны в функцию обработчик(callback).
- (2) -- метод для подписки на событие
- event -- имя события {String}
- callback -- обработчик {Function}
- [context] -- необязательные агрумент, контекст в котором будет вызван callback. {Object}
- (3) -- убирает обработчик событий (@see Backbone.Events). (Сигнатура как у (2))
####Как должно выглядеть и работать:
object.on('event', function(){
var s = 0;
for(var i=0; i<arguments.length; i++) {
s += arguments[i];
}
console.log(s);
});
object.trigger('event', 1, 2, 3, 4); // => 10
for(var i=0; i<3; i++) {
(function(index){
objectTwo.on('eventTwo', function(){
console.log('event => ' + index);
});
})(i);
}
objectTwo.trigger('eventTwo');
// => event => 0
// => event => 1
// => event => 2
objectThree.on('eventThree', function(){
console.log('random ' + this.random());
}, Math);
objectThree.trigger('eventThree');
// => 0.5828531747683883
objectThree.off('eventThree');
objectThree.trigger('eventThree');
//Ничего не произошло.
###4. Backbone.UserList ####Описание: Страница с вкладками:
- Список пользователей (фото, имя, пол, город, дата регистрации(в данные она ввиде timestamp в поле registered, преобразовать к год/мес/день))
- Статистика по пользователам (кол-во пользователей из списка по gender и name.title mr|miss|и т.д.) сделать бесшовный переход между в вкладками(SPA) Все содержимое body строить на фронтенде, в качестве шаблонизатора лучше использовать _.template (http://underscorejs.org/#template) Данные тянуть с сайта: https://randomuser.me/ (http://api.randomuser.me/?results=100) Должно примерно получиться так: Backbone.Model для пользователя, Backbone.Collection для пользователя, Одна общая Backbone.View которая строит изначальную структуру(список вкладок + контейнер для контента из них), и еще две Backbone.View(ListView и StatView) для вкладок соответственно. + сделать кнопку для обновления данных с коллекции(UserCollection.fetch) Нужные библиотеки(Backbone, Underscore) подтянуть как удобно. По желанию, использовать Backbone.Router для привязки вкладки к url(можно на последнюю очередь сделать)
####Ссылки:
Каждое задание вылить на github в ввиде отдельного репозитория.