Фон
Lego производит X-Large Grey Baseplate, которая представляет собой большую строительную пластину шириной 48 шипов и 48 шипов, что приводит к общая площадь 2304 штырей. Будучи фанатиком Lego, я смоделировал несколько мозаичных проектов, которые можно поместить на эти базовые плиты, а затем, возможно, повеситься на стенах или на дисплее (см. Android, Dream Theater, Галактическая Империя, Покемон).
Задача
Теперь моя задача - получить самую низкую стоимость для покупки этих проектов. Покупка 2304 индивидуальных пластин 1x1 может стать дорогостоящей. Используя BrickLink, по существу eBay для Lego, я могу найти данные, чтобы определить, какие самые дешевые части для заданных цветов. Например, пластина размером 1 × 4,10 (или 0,025 долл. США за шпилька) была бы дешевле, чем пластина размером 6х6 на 2,16 долл. США (или 0,06 долл. США за шпилька). Мы также можем определить список всех возможных пластин, которые можно использовать для сборки изображения:
1x1
1x2
1x3
1x4
1x6
1x8
1x10
1x12
2x2 corner!
2x2
2x3
2x4
2x6
2x8
2x10
2x12
2x16
4x4 corner!
4x4
4x6
4x8
4x10
4x12
6x6
6x8
6x10
6x12
6x14
6x16
6x24
8x8
8x11
8x16
16x16
Проблема
Для этой проблемы предположим, что у нас есть список всех пластин, их цвет (ы), "вес" или стоимость для каждой пластины. Для простоты мы можем даже удалить угловые элементы, но это было бы интересной задачей для решения. Как вы найдете самые дешевые компоненты для создания изображения 48x48? Как бы вы нашли решение, в котором используются наименьшие компоненты (не обязательно самые дешевые)? Если бы мы добавляли угловые элементы в качестве допустимых частей, как бы вы их объяснили?
Мы можем предположить, что у нас есть некоторый главный список, который получается путем запроса BrickLink, получения средней цены для данного кирпича в заданном цвете и добавления этого в качестве элемента в списке. Таким образом, не было бы черной пластины 16x16 просто потому, что она не была сделана или продана. Тем не менее, 16x16 ярко-зеленая пластинка будет иметь значение 3,74 доллара, идя на текущую доступную среднюю цену.
Надеюсь, что моя рецензия на проблему будет достаточной. Это то, о чем я думал уже несколько дней, и мне любопытно, что вы, ребята, думаете. Я отметил его как "интервью-вопросы", потому что это сложно, а не потому, что я получил его в интервью (хотя я думаю, что это будет интересный вопрос!).
ИЗМЕНИТЬ
Здесь ссылка на 2x2 угловой элемент и на 4x4 corner часть. Ответ не обязательно должен учитывать цвет, но он должен быть расширяемым, чтобы охватить этот сценарий. Сценарий будет заключаться в том, что не все тарелки доступны во всех цветах, поэтому представьте, что у нас есть массив элементов, которые идентифицируют пластину, ее цвет и среднюю стоимость этой пластины (пример ниже). Благодаря Бенджамину за предоставление щедрости!
1x1|white|.07
1x1|yellow|.04
[...]
1x2|white|.05
1x2|yellow|.04
[...]
В этом списке не будет записи:
8x8|yellow|imaginarydollaramount
Это потому, что желтая пластина 8x8 не существует. Сам список тривиален и должен рассматриваться только как предоставление ссылок для решения; это не влияет на само решение.
EDIT2
Изменил некоторые формулировки для ясности.