{"id":23293000,"url":"https://github.com/konstantinkalinichenko/advanced_tasks","last_synced_at":"2025-04-06T18:46:21.756Z","repository":{"id":267093409,"uuid":"900031755","full_name":"KonstantinKalinichenko/Advanced_Tasks","owner":"KonstantinKalinichenko","description":"Advanced level tasks to demonstrate proficiency in Python (hh.ru) ","archived":false,"fork":false,"pushed_at":"2025-01-07T13:07:09.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-13T00:44:35.063Z","etag":null,"topics":["practice-programming","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KonstantinKalinichenko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-07T17:18:24.000Z","updated_at":"2025-01-07T13:07:14.000Z","dependencies_parsed_at":"2024-12-08T10:22:09.703Z","dependency_job_id":"643f8880-6784-452e-b534-e7750dad97ce","html_url":"https://github.com/KonstantinKalinichenko/Advanced_Tasks","commit_stats":{"total_commits":9,"total_committers":1,"mean_commits":9.0,"dds":0.0,"last_synced_commit":"d9d1f65e40beba4406646d8627085cabc3d805f2"},"previous_names":["konstantinkalinichenko/advanced_tasks"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KonstantinKalinichenko%2FAdvanced_Tasks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KonstantinKalinichenko%2FAdvanced_Tasks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KonstantinKalinichenko%2FAdvanced_Tasks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KonstantinKalinichenko%2FAdvanced_Tasks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KonstantinKalinichenko","download_url":"https://codeload.github.com/KonstantinKalinichenko/Advanced_Tasks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247535261,"owners_count":20954572,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["practice-programming","python3"],"created_at":"2024-12-20T06:12:59.310Z","updated_at":"2025-04-06T18:46:21.738Z","avatar_url":"https://github.com/KonstantinKalinichenko.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"1.\tВы работаете над программой для проведения лотерей. Чтобы победить в лотерее, участник должен угадать загаданную последовательность цифр. Те, кто не угадал, тоже получают утешительные призы. Размер приза в баллах и рассчитывает ваша программа. При этом максимальный размер ограничен.\nПрограмма находит сумму цифр числовой последовательности участника, и если сумма четная, удвоить ее, если нечетная — утроить. Если результат больше 100, верните «‎Превышено»‎ (без кавычек).\n\n**Формат ввода:**  \nОдна строка с цифрами.\n\n**Формат вывода:**  \nОдна строка, в которой есть сумма цифр последовательности, удвоенная или утроенная. Если сумма превышает 100, вернется «‎Превышено»‎ (без кавычек).\n\n**Пример 1**  \n- Входные данные:\n13133  \n- Выходные данные:\n33\n\n**Пример 2**  \n- Входные данные:\n99999  \n- Выходные данные:\nПревышено\n\n**Пример 3**  \n- Входные данные:\n99  \n- Выходные данные:\n36\n\n**Макет решения:** \n```\ndef process_number(n):\n    \"\"\"Ваш код\"\"\"\n\ninput_string = input()\nresult = process_number(input_string)\nprint(result)\n```\n\n# 2.\t**Отчёт о продажах по дате**  \n\nВы работаете над модулем для CRM-системы, который помогает менеджерам по продажам готовить автоматизированные отчеты. Данные о продажах поступают в формате «Дата:Продукт:Количество;Дата:Продукт:Количество;...». \nНапишите программу, которая принимает информацию о продажах и возвращает отчет о продажах по дате. Если в другой записи в этот же день продали тот же товар, складывайте количество по продукту. У вас должен быть класс Item, который хранит в себе каждый предмет, его количество и дату продажи.\n\n**Формат ввода:**  \nОдна строка с данными в формате «Дата:Продукт:Количество;Дата:Продукт:Количество;...»‎. Дата в формате YYYY-MM-DD, через двоеточие указано название продукта на русском языке и через ещё одно двоеточие — целое число, указывающее на количество проданных товаров. Данные по каждому продукту разделены точкой с запятой.  \n\n**Формат вывода:**  \nНабор строк, в котором выводится информация о продажах товаров. Сначала даётся название товара с двоеточием, а после — перечисляются даты с количеством продаж маркированным списком с дефисом через двоеточие. Товары идут по порядку ввода, также как и даты внутри отчёта по каждому товару.\n\n**Пример 1**  \n_Входные данные:_  \n2023-01-15:Книга:10;2023-01-20:Флешка:5;2023-02-05:Книга:8  \n_Выходные данные:_  \nКнига: - 2023-01-15: 10 - 2023-02-05: 8 Флешка: - 2023-01-20: 5\n\n**Пример 2**  \n- _Входные данные:_  \n2023-03-10:Карандаш:7;2023-04-01:Ручка:6;2023-04-15:Тетрадь:8;2023-04-15:Тетрадь:10  \n- _Выходные данные:_  \nКарандаш: - 2023-03-10: 7 Ручка: - 2023-04-01: 6 Тетрадь: - 2023-04-15: 18\n\n```\nclass Item:\n    def __init__(self, date, product, quantity):\n        self.date = date\n        self.product = product\n        self.quantity = int(quantity)\n\ndef generate_product_report(data):\n    \"\"\"Ваш код\"\"\"\n\ninput_data =  input()\nproduct_report_generator = generate_product_report(input_data)\nfor report in product_report_generator:\n    print(report)\n```\n\n\n# 3.\t**Предмет без отстающих**  \n\nВы работаете над модулем «Электронная зачетка» в системе для администрирования учебного процесса регионального вуза. Каждый студент может быть записан на несколько курсов, по каждому курсу у него есть итоговый балл.\nНеобходимо написать программу для учебного офиса, которая будет выбирать из базы те курсы, на которых нет ни одной академической задолженности. Курс без единой академической задолженности — это такой курс, где **все** студенты (у кого этот курс указан) набрали строго выше проходного балла по этому предмету. Проходной балл определяется для каждого курса отдельно.\n\n**Формат ввода:**  \nПервая строка содержит информацию о студентах, курсах и их оценках в формате: «‎‎имя_студента,курс,оценка;имя_студента,курс,оценка;...». В строке есть информация хотя бы об одном студенте. Вторая строка содержит проходные баллы по предметам в формате: «‎‎курс,проходной_балл;курс,проходной_балл;;...». Гарантируется, что на все указанные в первой строке курсы есть проходной балл.\nВсе баллы являются целыми положительными числами, а все имена студентов уникальны.\n\n**Формат вывода:**  \nНазвание курсов, где нет ни одной академической задолженности, каждое название с новой строки. Если таких курсов нет, выводится слово «Пусто» (без кавычек).\n\n**Пример 1**    \n- Входные данные:\nАнна,Математика,85;Анна,Химия,90;Борис,Математика,75;Борис,История,80;Евгений,Математика,95;Евгений,История,85\nМатематика,80;Химия,60;История,80\n\n  - Выходные данные:  \n  Химия\n\n**Пример 2**  \n- Входные данные:\nАнна,Психология,8;Анна,Литература,9;Борис,Обществознание,8\nПсихология,8;Литература,9;Обществознание,8\n  - Выходные данные:  \n  Пусто\n\n**Макет кода:**\n```\nclass Student:\n    def __init__(self, name):\n        self.name = name\n        self.courses = {}\n    \"\"\"Ваш код\"\"\"\n\nclass CourseManager: \n    def __init__(self): \n        self.students = {}\n    \"\"\"Ваш код\"\"\"\n\nstudents_info = input()\nscores_info = input()\n\"\"\"Ваш код\"\"\"\n```\n\n# 4.\t**Шифрование методом Цезаря**  \n\nВы разрабатываете программу для шифрования текстовых сообщений методом Цезаря. Этот метод подразумевает сдвиг каждой буквы текста на фиксированное количество позиций в алфавите. Например, при сдвиге на 3 позиции буква А становится Г, а Я становится В.\nВаша задача — написать функцию, которая принимает на вход строку и целое число (сдвиг), и возвращает зашифрованную версию этой строки по методу Цезаря. Алфавит уже задан в прекоде.\n\n**Формат ввода:**  \nВходные данные состоят из двух строк: первая строка содержит произвольный текст для шифрования (только строчные буквы русского алфавита и пробелы), вторая строка содержит целое число — величину сдвига.  \n\n**Формат вывода:**  \nВыходные данные должны состоять из одной строки, содержащей зашифрованный текст. Пробел кодировать не нужно.\n\n**Пример 1**\n- Входные данные:  \nабвгде 1\n- Выходные данные:  \nбвгдеё\n\n**Пример 2**\n- Входные данные:  \nэто яблоко красное 7\n- Выходные данные:  \nдщх ёзтхсх счжшфхл\n\n**Макет решения:**\n```\ndef encode_string(string: str) -\u003e str:\n    alphabet = \"абвгдеёжзийклмнопрстуфхцчшщъыьэюя\"\n    \"\"\"Ваш код\"\"\"\n\ninput_string = input()\nencoded_string = encode_string(input_string)\nprint(encoded_string) \n```\n\n# 5.\t**Система управления доступом**  \n\nВы работаете над внутрикорпоративной системой доступа пользователей. Реализуйте класс UserManager, который будет управлять доступом пользователей к системе.\nУ класса должны быть методы для добавления нового пользователя, удаления пользователя, повышения и понижения уровня доступа пользователя, а также для получения списка всех пользователей. Уровни доступа пользователей — это целые числа (0 ≤ x).\nКласс UserManager должен поддерживать следующие методы, которые должны быть цепочками (кроме get_users):\n1) **add_user()** — добавляет нового пользователя с указанным уровнем доступа или уровнем доступа по умолчанию, равным 1;\n2) **remove_user()** — удаляет пользователя;\n3) **promote()** — увеличивает уровень доступа пользователя на 1;\n4) **demote()** — уменьшает уровень доступа на 1, если уровень доступа больше 0. Иначе ничего не происходит.\n5) **get_users()** — вернет список всех пользователей с их текущим уровнем доступа.\n\n**Формат ввода:**  \nНесколько строк, состоящих из команд add_user, remove_user, promote, demote, get_users. Входные данные гарантированно завершаются командой get_users.\n\n**Формат вывода:**  \nНесколько строк, в которой может быть один из вариантов:\n1) Пользователи с уровнем доступа если введена команда get_users;\n2) «‎Не найдено»‎, если пользователей в списке не осталось.\n\n**Пример 1**\n- _Входные данные:_  \n```\nadd_user Анна 1  \nadd_user Борис 2  \npromote Анна  \nget_users\n```  \n- _Выходные данные:_  \nАнна: 2  \nБорис: 2\n\n**Пример 2**  \n- _Входные данные:_  \n```\nadd_user Анна 3  \nadd_user Борис 2  \npromote Анна  \nget_users  \nadd_user Евгений 2\n``` \n\n- _Выходные данные:_  \nАнна: 4  \nБорис: 2  \n\n\n**Пример 3**  \n- _Входные данные:_  \n```\nadd_user Bob 3  \nadd_user Charlie 2  \nremove_user Bob  \nremove_user Charlie  \nget_users \n``` \n- _Выходные данные:_  \nНе найдено  \n\n**Макет кода:**  \n````\nclass UserManager:\n   def __init__(self):\n       self.users = {}\n\n   def add_user(self, name, level):\n       \"\"\"Ваш код\"\"\"\n\n   def remove_user(self, name):\n       \"\"\"Ваш код\"\"\"\n\n   def promote(self, name):\n       \"\"\"Ваш код\"\"\"\n\n   def demote(self, name):\n       \"\"\"Ваш код\"\"\"\n\n   def get_users(self):\n       \"\"\"Ваш код\"\"\"\n\nuser_manager = UserManager()\ninput_string = []\nwhile True:\n   try:\n      line = input()\n      if line == \"\":\n         break\n   except EOFError:\n      break\n   input_string.append(line)\n\nfor command in input_string:\n   \"\"\"Ваш код\"\"\"\n````\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonstantinkalinichenko%2Fadvanced_tasks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkonstantinkalinichenko%2Fadvanced_tasks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonstantinkalinichenko%2Fadvanced_tasks/lists"}