cookie

Ми використовуємо файли cookie для покращення вашого досвіду перегляду. Натиснувши «Прийняти все», ви погоджуєтеся на використання файлів cookie.

avatar

Solving problems with SWIFT

Привет! Сообщество для решения задач на языке SWIFT с различных площадок, контестов и собеседований. Если хотите предложить что то интересное, особенно задачу для рассмотрения, пишите @Andrey_Panasenko8 ссылка на канал https://t.me/+xe1MjFsYbW1jYmQy

Більше
Росія208 148Російська326 285Освіта67 052
Рекламні дописи
330
Підписники
Немає даних24 години
+17 днів
-630 днів

Триває завантаження даних...

Приріст підписників

Триває завантаження даних...

Интересная активность намечается
Показати все...
Фото недоступне
🚀 На старт - внимание - print ( «iOS разработчик - это реалити-шоу в котором два участника Swift Marathon будут идти к своей первой работе в качестве iOS developer» )👨‍💻 📝 Участники будут еженедельно делиться с вами всем, что с ними происходит во время обучения: успехи, трудности, победы и разочарования – все те "эмоциональные качели," которые переживают большинство людей, желающих сменить сферу деятельности и войти в IT. 📈 Они пройдут через всё, о чем не рассказывают школы программирования, обещая "золотые горы" после их курсов. 🥵 Уже сейчас мы понимаем, что участникам предстоит долгий и тяжелый путь к намеченной цели. Но одно я знаю точно: каждый, кто будет следить за этим, сможет зарядиться мотивацией и извлечь для себя что-то полезное. 📚🔥 Подписывайтесь на канал 👉реалити-шоу чтобы следить за нашими героями.
Показати все...
🔥 3👍 1 1
  • Фото недоступне
  • Фото недоступне
Отстается вызвать dfs, куда для начала передадим гланый отдел, которые изначально знает свой бюджет по условиям задачи, распределит бюджет по всем дочерним, каждому дочерниму передадим его бюджет, и у каждого дочернего пройдемся по его детям, распределяя дальше. Удивительным образом, решение этой задачи зашло с первого раза, хотя она и в категории сложных, тогда как на некоторые легкие уходило до 80 отправок на проверку :)
Показати все...
👍 1
Фото недоступне
Теперь уже можно заниматься поиском в глубину, хотя тут даже скорее не поиск, а проталкивание в глубину. Для этого нам нужен ранее инициализированный сет посещенных отделов, которые с помощью inout мы будем заполнять. В методе мы вызываем let money = node.moneys и в этом момент рассчитывается массив выплат дочерним отделам, тк мы уже должны знать собственные средства. Помечаем отдел как посещенный и рекурсией заходим в дочерние отделы. И мы уже знаем какие средства у каждого дочернего отдела из массива выше, собственно их и передаем. Функция завершиться сама, когда пройдет вообще по всем возможным отделам и попутно выдаст им денег.
Показати все...
Фото недоступне
Теперь считываем входящие условия, создаем руками главный отдел, куда запихиваем весь бюджет, и так же создаем массив отделов для вывода ответа и сет id отделов, которые мы будем посещать дальше при поиске в глубину. Считав данные, первым циклом инициализирую все дочерние отделы - их id, id родителя и эффективность. Вторым циклом заполняю для каждого родительского отдела массив id дочерних отделов. Второй цикл сделал на всякий случай, тк нет уверенности, что в исходных данных дочерний отдел не придет раньше родительского.
Показати все...
Фото недоступне
Дальше нам нужен класс отдела, где мы описываем параметры, которые знаем и задаем при инициализации и параметры, которые дальше будем дополнять. Как раз тут нам и пригодился алгоритм Евклида для распределения средств. При этом, по условиям задачи у нас нет дробных выплат, что и решает Int своими округлениями.
Показати все...
Фото недоступне
Всем привет! Победил поиск в глубину, который пригодился мне в этой задаче. Для начала о вспомогательном методе - нам нужно найти НОД для массива чисел, для чего хорошо подходит алгоритм Евклида. В коде у меня это реализованно рекурсией и выдает такой результат let numbers = [24, 36, 48] let result = gcd(numbers) print(result) // 12
Показати все...
Криво сработала отложенная публикация, но, думаю, разобраться можно 😂
Показати все...
  • Фото недоступне
  • Фото недоступне
Отстается вызвать dfs, куда для начала передадим гланый отдел, которые изначально знает свой бюджет по условиям задачи, распределит бюджет по всем дочерним, каждому дочерниму передадим его бюджет, и у каждого дочернего пройдемся по его детям, распределяя дальше. Удивительным образом, решение этой задачи зашло с первого раза, хотя она и в категории сложных, тогда как на некоторые легкие уходило до 80 отправок на проверку :)
Показати все...
Фото недоступне
Теперь уже можно заниматься поиском в глубину, хотя тут даже скорее не поиск, а проталкивание в глубину. Для этого нам нужен ранее инициализированный сет посещенных отделов, которые с помощью inout мы будем заполнять. В методе мы вызываем let money = node.moneys и в этом момент рассчитывается массив выплат дочерним отделам, тк мы уже должны знать собственные средства. Помечаем отдел как посещенный и рекурсией заходим в дочерние отделы. И мы уже знаем какие средства у каждого дочернего отдела из массива выше, собственно их и передаем. Функция завершиться сама, когда пройдет вообще по всем возможным отделам и попутно выдаст им денег.
Показати все...
Оберіть інший тариф

На вашому тарифі доступна аналітика тільки для 5 каналів. Щоб отримати більше — оберіть інший тариф.