Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, нужен алгоритм вычисляющий ширину квадрата для размещения N-ого количества квадратов в прямоугольнике, чтобы они не выходили за пределы прямоугольника. Как на картинке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 06:13 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
У прямоугольника горизонталь А, а вертикаль В. Имеем множество квадратиков в прямоугольнике, причем количество горизонтальных рядов равно К, а количество вертикальных рядов равно М. Тогда А / М = В / К. Или К = В / А х М Для всех целых М (М>0) ищется К, которое должно быть целым (остаток = 0). Таких вариантов будет несколько, так как найденное решение можно делить еще на мелкие квадратики до бесконечности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 06:49 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Gennadiy UsovУ прямоугольника горизонталь А, а вертикаль В. Имеем множество квадратиков в прямоугольнике, причем количество горизонтальных рядов равно К, а количество вертикальных рядов равно М. Тогда А / М = В / К. Или К = В / А х М Для всех целых М (М>0) ищется К, которое должно быть целым (остаток = 0). Таких вариантов будет несколько, так как найденное решение можно делить еще на мелкие квадратики до бесконечности. Забыл про значение N. При дроблении квадратиков до бесконечности их количество сравнивается с N. Решения может и не быть. Тогда накладываются ограничения на А и В. (которые сидят на трубе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 06:54 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
wewenami2, Не указано, что дано, кроме количества N ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 07:05 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
А есть еще интересная задача: найти прямоугольники для N квадратов. В прямоугольнике квадраты выстраиваются в ряды по вертикали, и их общее количество получается как произведение количества рядов на количество вертикалей. Следовательно, надо для величины N найти множители. Эти множители определяют количества рядов и вертикалей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 07:28 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
MBo, Дано ширина, высота прямоугольника и количество квадратов которых нужно разместить. Код: c# 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 07:31 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
wewenami2MBo, Дано ширина, высота прямоугольника и количество квадратов которых нужно разместить. Код: c# 1. 2. 3. 4. Подставьте эти данные в уравнение 21210127 а далее методом перебора: 1 - 1,5, 2 - 3 2 х 3 = 6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 07:41 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Количество квадратов сбивает с толку. Без него задача красиво решалась бы через НОД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 08:09 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Gennadiy Usov, Не понял, можно пример в коде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 08:21 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
wewenami2Здравствуйте, нужен алгоритм вычисляющий ширину квадрата для размещения N-ого количества квадратов в прямоугольнике, чтобы они не выходили за пределы прямоугольника. Как на картинке wewenami2Дано ширина, высота прямоугольника и количество квадратов которых нужно разместить. Код: c# 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. Решение удовлетворяет всем поставленным условиям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 08:29 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Бордюр на первой картинке - сбивает с толку. Если стояла задача сделать 6 квадратов с максимально возможной стороной - то картинка неправильная. Существует другой расклад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 08:34 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Вот ещё пример как должно это работать, квадраты должны бить максимально возможного размера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 08:45 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
wewenami2Gennadiy Usov, Не понял, можно пример в коде? Странно. Вам предоставлен алгоритм, есть формула, где есть итерация по М 21210127 , есть условие нахождения N 21210136 , почему вы не можете написать программу? Или уже не нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 08:51 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Gennadiy Usov, Я не понимаю вашу формулу и как реализовать её в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 08:57 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
wewenami2Gennadiy Usov, Я не понимаю вашу формулу и как реализовать её в коде. В какой строке вы не понимаете формулу? В первой, где "У прямоугольника горизонталь А, а вертикаль В."? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:04 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Если сторона квадрата А, то в прямоугольника данного размера вмещается (Width div А) столбцов и (Height div А) рядов. Учитывая, что последний может быть не заполнен, можно записать необходимое неравенство: Код: html 1. Максимальное значение стороны может быть Код: html 1. Так что можно начать с указанного значения и сделать линейный поиск по значению А вниз, пока не будет выполняться неравенство выше. (Если размеры и N очень большие, то можно использовать бинарный поиск) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:19 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
wewenami2Вот ещё пример как должно это работать, квадраты должны бить максимально возможного размера Код: sql 1. где К - Нужное количество квадратов Ш - Ширина В - Высота ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 09:24 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Я не понимая что за формулы вы пишите давайте функцией на си подобном языке: Код: c# 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 10:21 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
"Я ничего не умею, дайте готовое решение, а я уж как нибудь его скопирую". Раздел "Работа" - рядом . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 10:29 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
wewenami2, +1 но с этого надо было начинать топик. Ты сам задал моду на словесное описание вот тебе и отвечали на словах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 10:30 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
1. Посчитайте площадь прямоугольника S = A*B, где A,B - стороны прямоугольника. 2. Поделите площадь на N: q = S/N, где N - количество размещаемых квадратов. 3. Извлеките квадратный корень из результата a = sqrt(q). 4. Поделите стороны прямоугольника на результат a, и возьмите остаток от деления: ra = rem(A/a), rb = rem(B/a). 5. Если ra <= rb, то сторона искомого квадрата x = a - ra/N. 6. Иначе (ra > rb) x = a - rb/N. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 14:01 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
cronix1111. Посчитайте площадь прямоугольника S = A*B, где A,B - стороны прямоугольника. 2. Поделите площадь на N: q = S/N, где N - количество размещаемых квадратов. 3. Извлеките квадратный корень из результата a = sqrt(q). 4. Поделите стороны прямоугольника на результат a, и возьмите остаток от деления: ra = rem(A/a), rb = rem(B/a). 5. Если ra <= rb, то сторона искомого квадрата x = a - ra/N. 6. Иначе (ra > rb) x = a - rb/N. прошу прощения, в 5,6 явно ошибка. 5. Если ra <= rb, то сторона искомого квадрата x = a - ra/div(A/a), где div(A/a) - целая часть от результат деления A/a. 6. Соответственно, и здесь x = a - rb/div(B/b). Так вроде бы верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 14:51 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
cronix111cronix1111. Посчитайте площадь прямоугольника S = A*B, где A,B - стороны прямоугольника. 2. Поделите площадь на N: q = S/N, где N - количество размещаемых квадратов. 3. Извлеките квадратный корень из результата a = sqrt(q). 4. Поделите стороны прямоугольника на результат a, и возьмите остаток от деления: ra = rem(A/a), rb = rem(B/a). 5. Если ra <= rb, то сторона искомого квадрата x = a - ra/N. 6. Иначе (ra > rb) x = a - rb/N. прошу прощения, в 5,6 явно ошибка. 5. Если ra <= rb, то сторона искомого квадрата x = a - ra/div(A/a), где div(A/a) - целая часть от результат деления A/a. 6. Соответственно, и здесь x = a - rb/div(B/b). Так вроде бы верно. А если А = В = 300, и N = 6, то что тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 15:48 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Вроде получилось у меня сделать как сказал MBo: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. Пока глюков не обнаружил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 17:05 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
wewenami2, Все верно, в цикле в условии Код: plaintext 1. если Width и itsize целые и язык позволяет для целых аргументов выполнять целочисленное деление, то стоит избавиться от многократного перегона целых во float и обратно Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 17:24 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
MBo, Спасибо, исправил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 18:11 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Еще один заход: 1. Посчитать площадь прямоугольника S = A*B, где A,B - стороны прямоугольника. 2. Поделить площадь на N: q = S/N, где N - количество размещаемых квадратов. 3. Извлечь квадратный корень из результата a = sqrt(q). 4. Если rem(A/a) = rem(B/a) = 0, то сторона искомого квадрата x = a. 5. Поделить стороны прямоугольника на результат a и вычесть остаток от деления из a: ra = a-rem(A/a), rb = a-rem(B/a). 6. Если ra <= rb, то сторона искомого квадрата x = a - ra/(div(A/a)+1), где div(A/a) - целая часть от результата деления A/a. 7. Иначе x = a - rb/(div(B/b)+1). Сорри за ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 18:22 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
wewenami2Gennadiy Usov, Я не понимаю вашу формулу и как реализовать её в коде. У вас стандартная задача. Алгоритмов кода у нее может быть много всяких и разных, в зависимости от ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 19:49 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
д0kХ У вас стандартная задача. Не надо усложнять. ИМХО ТС запугали, wewenami2 - возвращайся, но не проси код, а вникай в алгоритм решения, т.е. внимательно перечитай что посоветовали и переспроси что непонятно. Если ничего непонятно - бросай это дело, не подставляй заказчиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 20:48 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Я конечно не ui- кодер. И не знаю как у них там принято. Но кмк это очень популярная задача. И её тылу раз решали в каскадных стилях, грибах и Layout managers. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 21:01 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Гридах. Чортов андроид... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 21:02 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
cronix111Еще один заход: 1. Посчитать площадь прямоугольника S = A*B, где A,B - стороны прямоугольника. 2. Поделить площадь на N: q = S/N, где N - количество размещаемых квадратов. 3. Извлечь квадратный корень из результата a = sqrt(q). 4. Если rem(A/a) = rem(B/a) = 0, то сторона искомого квадрата x = a. 5. Поделить стороны прямоугольника на результат a и вычесть остаток от деления из a: ra = a-rem(A/a), rb = a-rem(B/a). 6. Если ra <= rb, то сторона искомого квадрата x = a - ra/(div(A/a)+1), где div(A/a) - целая часть от результата деления A/a. 7. Иначе x = a - rb/(div(B/b)+1). Сорри за ошибки. Еще дополню (умещение квадратов по горизонтали в прямоугольник еще не гарантирует при этом умещения квадратов по вертикали, и наоборот): 8. Если выполнен п. 6., то по горизонтали помещается n = A/x квадратов. А по вертитикали m = N/n ( +1 при rem(N/n)>0). 9. Если m*x > B, то нужно еще раз уменьшить x, чтобы все уместилось и по-вертикали: x = x - (x-rem(B/x)) / (div(B/x)+1). Тогда весь алгоритм: 1. Посчитать площадь прямоугольника S = A*B, где A,B - стороны прямоугольника. 2. Поделить площадь на N: q = S/N, где N - количество размещаемых квадратов. 3. Извлечь квадратный корень из результата a = sqrt(q). 4. Если rem(A/a) = rem(B/a) = 0, то сторона искомого квадрата x = a. 5. Поделить стороны прямоугольника на результат a и вычесть остаток от деления из a: ra = a-rem(A/a), rb = a-rem(B/a). 6. x1 = a - ra/(div(A/a)+1), где div(A/a) - целая часть от результата деления A/a. 7. x2 = a - rb/(div(B/a)+1). 8. m = N*x1/A ( + 1, если rem(N*x1/A) > 0). 9. n = N*x2/B ( + 1, если rem(N*x2/B) > 0). 10. Если m*x1 > B, то x1 = x1 - (x1-rem(B/x1)) / (div(B/x1)+1). 11. Если n*x2 > A, то x2 = x2 - (x2-rem(A/x2)) / (div(A/x2)+1). 12. Искомый x = max(x1, x2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 23:30 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
Треш какой-то. Любители алгоритмов... почему вы просто не возьмете шапку Код: plaintext 1. и не напишете как положено реализацию с проверками условия и т.п. как нас учили в универах? Почему хотите писать как Кормен или Кнут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2018, 23:44 |
|
||
|
Вычислить размер квадрата чтобы разместить N-ное кол-во в прямоугольнике
|
|||
|---|---|---|---|
|
#18+
maytonТреш какой-то. Любители алгоритмов... почему вы просто не возьмете шапку Код: plaintext 1. и не напишете как положено реализацию с проверками условия и т.п. как нас учили в универах? Почему хотите писать как Кормен или Кнут? Кормен или Кнут фундаментальные алгоритмисты, они не могли написать методички на все случаи жизни. И даже если написали, то они могут быть не оптимальный при изменении условий. Еще есть универсальная ИТ-шная разумная целесообразность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2018, 16:35 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1340158]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 277ms |
| total: | 551ms |

| 0 / 0 |
