Думаю, я с этим справился.
Прежде всего, количество элементов существенно различается, сейчас я просматриваю страницу, содержащую только 13 полей.
Для начала я назову каждый из 4-х размеров блоков от самых больших до самых маленьких как:
А, В, С, D
Как мы знаем, первая 'строка' содержит два As и два вертикальных стека B, например:
_______________________
| A | B | A | B |
| |___| |___|
| | B | | B |
|_______|___|_______|___|
Их расположение кажется случайным, но B всегда находятся в одном и том же вертикальном порядке. Глядя на это только сейчас, я понял, что есть только две строки, и вторая строка работает таким же образом.
Второй ряд в два раза больше первого, занимая остальную часть страницы. Он состоит из горизонтально сложенных фигур, которые (по крайней мере частично) выбираются случайным образом.
Я нашел 9 из этих шаблонов форм, два из которых - один A или B, а остальные:
_______ _______ _______ ___ ___ _______ ___
| B | B | | A | | B | B | |C|C| | B | | A | |C|C|
|___|___| | | |___|___| | B | |___| | |
| A | | | | B | B | |___| |C|D | |
| | |_______| |___|___| |_______|
| | | B | B | | A | | B |
|_______| |___|___| | | |___|
|B |C| |B |C| | |
|___| |___| |_______|
Следующий вопрос: как они выбраны? Чтобы найти наилучшую конфигурацию, может потребоваться некоторый умный поиск: например, если есть элементы X, которые нужно отобразить, нам нужно найти конфигурацию с общим значением X, которое не превышает ширину строки.
Это можно сделать с помощью метрики плотности рисунка, которая будет числом блоков, деленным на ширину рисунка.