Не так. Там просто три колонки. А у меня колонок может быть сколько угодно - при растяжении страницы, блоки увеличивают отступы между друг другом до тех пор, пока не появится место для следующего блока.
Как аналогия - многострочный текст с выключкой по ширине (text-align:justify;).
а нельзя сразу взять размер скидки?))) скриншот-то зачем - этот размер же как-то генерируется. или эта приблуда вообще не ваша и написана на непонятной технологии?
Spaceoddity: Добавлю что в проверку на наличие свободного места внизу не должны входить "прилипшие соседи" этого же блока. Т.е. если при проверке, показывает что внизу не пустая ячейка, а "прилипший сосед" - считаем что место есть.
У вас в этом моменте сложность была?))
Ну идёте снизу вверх, наткнулись на квадрат, запускает метод "опускания блока":
1) если у квадрата есть "прилипший сосед", смотрим есть ли пустое место под квадратом.
1а) места нет, выходим из метода (можно сразу пометить координаты этого блока как непригодные для опускания и не проверять их)
1б) место есть, проверяем наличие места внизу для "прилипшего соседа" и т.д.
1в) место есть для всех "прилипших соседов" - смещаем их всех вниз на одну клетку и запускаем метод ещё раз.
2) "прилипшего соседа" нет - запускаем упрощенный метод опускание блока (проверяет наличие пустого места только под актуальным квадратом и опускает его пока есть возможность).
3) PROFIT!
P.S. Это тестовое задание что ли?