Antonshka Опубликовано 31 октября, 2022 Поделиться Опубликовано 31 октября, 2022 Привет, никто не сталкивался с такой задачей? Спойлер Синие прямоугольники нужно разместить в красном. Как на картинке, в правом красном прямоугольнике. Изначально, когда синие прямоугольники выстроены в прямую линию, их позиции и размеры известны. Чувствую шестым чувством, что задача простая, но что-то на ум пока ничего не приходит. Да, и перенос должен быть до того момента, когда в каждой линии останется по одному синему прямоугольнику. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 31 октября, 2022 Поделиться Опубликовано 31 октября, 2022 А в чем, собственно, проблема? Условно назовем целевые координаты Xr и Yr, ширину Wr, высоту (хотя она не нужна по условию задачи) Hr. Далее массив прямоугольников синих назовем Arr. Будем считать, что в массиве лежат экземпляры структуры Rect { int w, h } Тогда псевдокод (саму процедуру рисовки прямоугольника опускаю, чисто сам алгоритм) будет примерно следующий Спойлер struct Rect { int w,h; } Rect[] Arr; void fullRedRect() { int arrIndex: int = 0; int Xr = 0; int Yr = 0; int plotCount = 0; while (arr_index < length(Arr) { if (Xr + Arr[arrIndex].w > Wr) { Yr += Arr[arrIndex].h; Xr = 0; plotCount = 0; } plotRect(Arr[arrIndex], Xr, Yr); Xr += Arr[arrIndex].w; arr_index++; plotCount++; } } void plotRect(r: Rect, xdest, ydest: int); Кстати, если вдруг не читал, рекомендую к прочтению Бхарагва "Грокаем алгоритмы" 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 31 октября, 2022 Автор Поделиться Опубликовано 31 октября, 2022 (изменено) 1 час назад, Xipho сказал: А в чем, собственно, проблема? Сам в недоумении. По видимому все должно быть просто. Может устал. Неделю днями не слезал с проекта. 1 час назад, Xipho сказал: Тогда псевдокод (саму процедуру рисовки прямоугольника опускаю, чисто сам алгоритм) будет примерно следующий У тебя в примере не задействован plotCount? Ты наверно понял уже что это за прямоугольники? Это меню главного окна. При сжимании главного окна программы, итемы(элементы) меню переносятся. Я же делаю полностью самодельное меню, вот меня занесло то 🙆♂️. Завтра попробую применить твой пример, спасибо. Книгу не читал такую. Скачал себе, по виду дельная. Тоже спасибо 🙂. Это на каком языке? Синтаксис с двоеточиями не знакомый. void plotRect(r: Rect, xdest, ydest: int); Изменено 31 октября, 2022 пользователем Antonshka Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 1 ноября, 2022 Поделиться Опубликовано 1 ноября, 2022 11 часов назад, Antonshka сказал: Это на каком языке? Синтаксис с двоеточиями не знакомый. Это псевдокод )) Я сейчас в процессе изучения Rust и Golang, потому иногда, когда пишу "на коленке", получается именно псевдокод, а не код какого-то из языков )) 11 часов назад, Antonshka сказал: У тебя в примере не задействован plotCount? Да, он вроде как не нужен оказался. Но я писал тоже уставший, мог где-то ошибиться ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения