GithubHelp home page GithubHelp logo

urfu-2015 / javascript-tasks-4 Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 58.0 1.66 MB

Задача к лекции «Замыкания в Javascript» – «Мальчишник в Вегасе»

JavaScript 100.00%

javascript-tasks-4's Introduction

Задача к лекции «Замыкания в Javascript» – «Мальчишник в Вегасе»

🆘 Как создать Pull Request
⚠️ При создании PullRequest'а не забудьте указать ваши имя и фамилию.

Общие требования

Мы очень хотим, чтобы код вы написали сами, а не пользовались внешними библиотеками.

Прежде чем отправлять решение, проверьте его на соответствие общим требованиям.

Когда вы создадите или обновите пулл-реквест, он автоматически будет проверен на соответствие кодстайлу и базовую работоспособность. Результаты вы увидите внизу:

Если всё хорошо:
2015-10-08_1845

Если всё плохо:
2015-10-08_1841

Проверить можно и вручную:

// Устанавливаем проверяльщик
npm install

// Проверяем
npm test

// В результате выведутся ошибки, если они есть
// Если какие-либо ошибки будут непонятны – смело спрашиваем у ментора

Задача

Как-то я (Сергей) посмотрел фильм «Мальчишник в Вегасе» и подумал, что неплохо было бы устроить отвязный мальчишник. Как я узнал позже, для этого, конечно, необходимо жениться :(. Поэтому мне надо устроить и мальчишник, и свадьбу.

У меня есть книга друзей, где описаны друзья и их связи с другими друзьями — faceBook.js. Чтобы было удобно искать друзей, я решил написать итератор iterator.js.

Он умеет обходит друзей, начиная с того, кого указываешь при создании итератора:

//  phoneBook   – книга
//  Cергей      — ищем с себя
//  3           – максимальное количество рукопожатий до человека (при превышении обход завершается)
var friends = iterator.get(phoneBook, 'Cергей', 3);

// Берём следующего друга
// .next() Возращается JSON с именем и телефоном
friends.next(); // { name: 'Васян', phone: '+70000000000' }

// .prev() Возвращаемся к предыдущему
friends.prev();

Принципы обхода:

  • Обход мы начинаем с ближайших друзей, затем берём ближайших друзей ближайших друзей (следующий круг рукопожатий) и так далее.

  • Если друзей у человека несколько, обходим их в алфавитном порядке

  • Если нет следующего друга, .next() должен возвращать null

  • Если нет предыдущего друга, .prev() должен возвращать null

  • Если стартовой точки обхода не существует в книге, .next() и .prev() должны возвращать null

Подробности вас ждут в файле index.js.

Необязательное задание (+80 к логике)

Дополнительное задание описано в файле index.js.
Будет непоправимо круто, если вы его осилите!

javascript-tasks-4's People

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.