Git Product home page Git Product logo

labwork_4's Introduction

Labwork_4

Задача 1 - Необходимо использовать ООП и объекты для решения этой задачи.

Кинотеатр "Сокол" запустил сервис для онлайн-просмотра фильмов. За несколько месяцев работы сервиса накопилась история просмотров разными пользователями и владельцы решили внедрить в него систему рекомендаций, которая предлагала бы пользователям интересный фильм на основе их истории просмотров.

У вас есть два файла, которые нужно добавить в свой репозиторий:

  1. Список доступных фильмов. Где каждая строка содержит числовой идентификатор фильма и его название, разделенные запятой.

Например:

1,Мстители: Финал

2,Хатико

3,Дюна

4,Унесенные призраками
  1. История просмотров по всем пользователям сервиса. Каждая строка файла содержит список идентификаторов фильмов, просмотренных одним человеком за все время пользования сервисом. Идентификаторы разделены запятыми. Например:
2,1,3

1,4,3

2,2,2,2,2,3

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

Алгоритм выбора рекомендации:

  1. Для просмотров пользователя из историй по всем пользователям выбираются те, у которых хотя бы половина фильмов совпадает с заданной. (То есть, выбираются все пользователи, которые посмотрели минимум половину фильмов пользователя, для которого формируется рекомендация.)

  2. Из отобранных списков исключаются все, которые пользователь уже посмотрел.

  3. Для оставшегося списка фильмов подсчитывается суммарное количество просмотров среди всех пользователей сервиса и фильм с максимальным числом просмотров выбирается как рекомендация (если таких фильмов оказалось несколько, выбирается любой из них).

Список просмотров текущего пользователя задается через пользовательский ввод, рекомендация выдается в виде названия фильма в System.out. Пути к файлам с названиями фильмов и истории просмотров пользователей сервиса могут быть определены в виде констант в приложении.

Пример

[in]

2,4

[out]

Дюна

Усложнения:

  • чем больше общих фильмов просмотрено - тем больше вес этих рекомендаций. (Половина - 0.5, 70% в общих - 0.7, все фильмы совпали - 1). 1 - все фильмы которые выбрал новый пользователь - были просмотрены нашим клиентом.

Задача 2 - Необходимо использовать ООП и объекты для решения этой задачи.

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

В качестве аргументов командной строки приложению указывается последовательность чисел, задающих границы возрастных групп.

Пример

18 25 35 45 60 80 100

Эта последовательность определяет возрастные группы: от 0 до 18 лет, от 19 до 25 лет, от 26 до 35 лет и так далее. Последняя группа: от 101 года и старше.

Входные данные (список респондентов) задаются в виде строк:

<ФИО>,<возраст>

Строка END сигнализирует об окончании списка.

Выходные данные (разбивка по возрастным группам) представлены как последовательность строк следующего формата:

<Группа>: <ФИО_1> (возраст_1), <ФИО_2> (возраст_2), …, <ФИО_N> (возраст_N)

При этом:

  • группы строк перечисляются в порядке от старшей к младшей
  • в каждой группе перечисляются только респонденты, попадающие в нее по возрасту
  • список респондентов в каждой группе отсортирован по возрасту в порядке убывания, если возраст совпадает - по ФИО в порядке возрастания
  • если в возрастную группу не попадает ни один из респондентов, строка с этой группой не выводится

Пример

101+: Кошельков Захар Брониславович (105)

81-100: Дьячков Нисон Иринеевич (88), Иванов Варлам Якунович (88)

46-60: Старостин Ростислав Ермолаевич (50)

26-35: Ярилова Розалия Трофимовна (29)

0-18: Соколов Андрей Сергеевич (15), Егоров Алан Петрович (7)

При реализации можно учитывать, что:

  • нет людей старше 123 лет
  • в рамках одного опроса не может встретиться полных однофамильцев с одинаковыми возрастами

Реализуйте приложение. При этом постарайтесь продумать структуру данных и использовать коллекции, максимально подходящие для поставленных целей.

labwork_4's People

Contributors

yanochka123 avatar

Watchers

 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.