Задача: нарисовать Canvas (холст) с наименьшими затратами и наибольшим сходством.
Canvas — это абстрактное 2-мерное пиксельное пространство каналов RGBA. Canvas сделан из блоков, где блок это либо рамка, состоящая из набора подблоков, либо простая структура с формой и цветом.
В ассортименте 10 изображений.
Canvas — это абстрактное 2-мерное пиксельное пространство каналов RGBA. Canvas сделан из блоков, где блок это либо рамка, состоящая из набора подблоков, либо простая структура с формой и цветом.
В ассортименте 10 изображений.
👍8🤔4🔥3👎2❤1
Ребята разбились на подкоманды и уже работают:
— апи для скачивания картинок (сейчас их 10, но потом будет больше и лучше бы автоматически их подтягивать),
— думают над алгоритмом, который поможет решить задачки,
— создают базовые классы, которыми будут оперировать алгоритмы,
— создают свою песочницу (есть песочница от организаторов, но мы хотим сделать свою, чтобы на ней удобнее запускать то, что мы нарешаем. И чтобы во время отрисовки блоков у них были видны айдишники, так как в орговской песочнице такого нет)
— апи для скачивания картинок (сейчас их 10, но потом будет больше и лучше бы автоматически их подтягивать),
— думают над алгоритмом, который поможет решить задачки,
— создают базовые классы, которыми будут оперировать алгоритмы,
— создают свою песочницу (есть песочница от организаторов, но мы хотим сделать свою, чтобы на ней удобнее запускать то, что мы нарешаем. И чтобы во время отрисовки блоков у них были видны айдишники, так как в орговской песочнице такого нет)
🔥7👍1
Спустя 3 часа, вот что мы узнали:
— все методы, которыми можно рисовать картинку мы научились применять к канвасу. код уже был на джаваскрипте, а мы переписали на C# (из песочницы достали)
— операции стоят тем дешевле, чем большую площадь картинки они задействуют. Это значит, что нужно уметь рисовать большими площадями и получать при этом достаточно детальную картинку. В этом и сложность. А рисовать мельче выходит дороже.
— поняли, что своп дешевле чем покраска. Это значит что можно раскрасить какую-то большую зону и из нее свопать цвета. По операциям это может быть больше, а стоимость получится дешевле.
— естественная идея — взять картинку, разбить на 4 части и с каждой поразбираться. Свести задачу к 4 задачкам поменьше. Но скорее всего это дороже, чем откусывать маленькие готовые(!) кусочки.
😐
— все методы, которыми можно рисовать картинку мы научились применять к канвасу. код уже был на джаваскрипте, а мы переписали на C# (из песочницы достали)
— операции стоят тем дешевле, чем большую площадь картинки они задействуют. Это значит, что нужно уметь рисовать большими площадями и получать при этом достаточно детальную картинку. В этом и сложность. А рисовать мельче выходит дороже.
— поняли, что своп дешевле чем покраска. Это значит что можно раскрасить какую-то большую зону и из нее свопать цвета. По операциям это может быть больше, а стоимость получится дешевле.
— естественная идея — взять картинку, разбить на 4 части и с каждой поразбираться. Свести задачу к 4 задачкам поменьше. Но скорее всего это дороже, чем откусывать маленькие готовые(!) кусочки.
😐
🤔12🔥7👍2👎1
Организаторы задержались на пол часа, но все-таки подвезли нам новые картинки. Мона Лиза заметно повеселела.
А на 4 картинке вы можете заметить градиенты на летающих фигурках. (хех)
А на 4 картинке вы можете заметить градиенты на летающих фигурках. (хех)
❤7🔥7👍5
Пришло время создать немного инфраструктуры.
Организаторы контеста предлагают нам решить несколько десятков задач. За время контеста мы обязательно напишем несколько десятков алгоритмов их решения. Однозначно выбрать лучший алгоритм обычно нельзя: для разных задач лучше подходят разные.
Это значит, что нам нужно попробовать решить каждую задачу каждым алгоритмом. Когда задач и алгоритмов станет много, получатся тысячи или даже десятки тысяч комбинаций.
Стандартная инфраструктура, которую мы делаем для подобных контестов, выглядит так:
1. Мы запускаем на небольшом вычислительном кластере несколько решателей. Эти решатели делят весь объем задач между собой. Например, первый решатель берет задачи с 1 по 10 и решает их алгоритмами А, B и C. Второй решатель берет задачи с 11 по 20 и так далее. Готовые решения сохраняются в базу.
2. Отдельный сервис время от времени забирает из базы лучшее решение для каждой задачи и отправляет на сервер организаторов через API. Таким образом мы убеждаемся, что мы всегда сдаем лучший набор решений, даже если алгоритмы были написаны разными членами команды в разные дни.
В этот раз мы впервые работаем на Яндекс.Облаке, а в качестве базы данных используем YDB. Контест — хороший шанс попробовать новую технологию в безопасных условиях :)
Организаторы контеста предлагают нам решить несколько десятков задач. За время контеста мы обязательно напишем несколько десятков алгоритмов их решения. Однозначно выбрать лучший алгоритм обычно нельзя: для разных задач лучше подходят разные.
Это значит, что нам нужно попробовать решить каждую задачу каждым алгоритмом. Когда задач и алгоритмов станет много, получатся тысячи или даже десятки тысяч комбинаций.
Стандартная инфраструктура, которую мы делаем для подобных контестов, выглядит так:
1. Мы запускаем на небольшом вычислительном кластере несколько решателей. Эти решатели делят весь объем задач между собой. Например, первый решатель берет задачи с 1 по 10 и решает их алгоритмами А, B и C. Второй решатель берет задачи с 11 по 20 и так далее. Готовые решения сохраняются в базу.
2. Отдельный сервис время от времени забирает из базы лучшее решение для каждой задачи и отправляет на сервер организаторов через API. Таким образом мы убеждаемся, что мы всегда сдаем лучший набор решений, даже если алгоритмы были написаны разными членами команды в разные дни.
В этот раз мы впервые работаем на Яндекс.Облаке, а в качестве базы данных используем YDB. Контест — хороший шанс попробовать новую технологию в безопасных условиях :)
🔥12👍4
Иногда лучшее решение задачи можно найти вручную. Но не на бумажке, конечно. Тут ключевую роль играет интерактивный визуальный инструмент, в котором сложную концептуальную часть работы делает человек, а довести решение до оптимального в мелочах помогает алгоритм.
Часто в контестах ICFPC хороший результат показывают команды, которые могут сделать хороший современный фронтенд для визуализации и ручного решения. На чистых алгоритмах обычно не выехать.
Часто в контестах ICFPC хороший результат показывают команды, которые могут сделать хороший современный фронтенд для визуализации и ручного решения. На чистых алгоритмах обычно не выехать.
Привет!
Мы возвращаемся в эфир. Прошло 19 часов контеста. Через 4,5 часов будет так называемый Lightning — отсечка первого дня, в которой можно тоже победить. Мы пока на 8 месте. Ночью были даже на третьем! Так что мы не отчаиваемся.
А теперь давайте посмотрим, что у нас есть сейчас.
Мы возвращаемся в эфир. Прошло 19 часов контеста. Через 4,5 часов будет так называемый Lightning — отсечка первого дня, в которой можно тоже победить. Мы пока на 8 месте. Ночью были даже на третьем! Так что мы не отчаиваемся.
А теперь давайте посмотрим, что у нас есть сейчас.
🔥11