Вот пять изображений груш и стальной желоб :
Это всего лишь миниатюры, кликните на них для просмотра в полном размере!
(Я сделал это с Algodoo .)
Этот класс изображений всегда имеет следующие свойства:
- Они всегда 400 × 400 пикселей с белым фоном. (Он может быть не совсем белым, поскольку изображения SE сжимаются с потерями.)
- У них от 1 до 4 одинаковых груш, каждая вращается и позиционируется (почти) любым способом.
- У них есть один вертикальный стальной желоб, который достигает нижней части изображения.
- За исключением нижней части желоба, желоба и ограничивающих рамок для груши ( пример ограничительной рамки) ) никогда не касаются и не выходят за границы изображения.
- Ограничительные рамки груш никогда не перекрывают друг друга и не перекрывают желоб.
- Груши могут находиться под наклонной частью желоба, как в B , C и D . (Таким образом, ограничительная коробка желоба может перекрывать ограничительную коробку груши.)
- Желоб может иметь любое горизонтальное и вертикальное положение при условии, что имеется достаточно места для того, чтобы все ограничивающие рамки груш свободно помещались над ним (не будут проверяться «едва подходящие» случаи), и часть участка колонны видна.
Вызов
Напишите программу, которая берет такое изображение и выводит еще одно изображение размером 400 × 400 с желобом в том же месте, но с расположенными в нем грушами, так что все они находятся над желобом (чтобы они могли упасть в него и сока и тому подобное).
Требования к выходному изображению:
- Все груши на входном изображении должны быть расположены таким образом, чтобы они находились над желобом, между левым и правым краем его воронки. (Над краем не в порядке.)
- Каждая груша должна поддерживать угол поворота. (Так что вы должны резать и вставлять груши, а не перерисовывать их.)
- Груши не должны пересекаться или касаться друг друга или желоба. (Груша ограничивающая коробки могут пересекаться все же.)
- Груши не должны касаться или выходить за границы изображения.
Вот примеры допустимых выходных данных для пяти образцов изображений:
Это всего лишь миниатюры, кликните на них для просмотра в полном размере!
Обратите внимание, что входное изображение для E уже было допустимым, но перестановка груш, когда в этом нет технической необходимости, просто отлично.
Детали
- Возьмите имя файла изображения или необработанные данные изображения через стандартный ввод / командную строку / вызов функции.
- Выведите изображение в файл с выбранным вами именем или выведите исходные данные файла изображения на стандартный вывод или просто отобразите изображение.
- Можно использовать любой общий формат файла изображения без потерь.
- Графические и графические библиотеки могут быть использованы.
- Несколько неправильных пикселей здесь и там (из-за потери или чего-то еще) не имеют большого значения. Если я не могу сказать, что что-то не так визуально, тогда, вероятно, все в порядке.
Самый короткий код в байтах побеждает. Tiebreaker является самым высоко оцененным постом.