Как создать макет, который имеет только все или все нечетное размер строки, и меняется только на 2?Javascript

Форум по Javascript
Ответить
Anonymous
 Как создать макет, который имеет только все или все нечетное размер строки, и меняется только на 2?

Сообщение Anonymous »

Я итерации как с Sonnet Claude 3.7, так и с Chatgpt 4o, в течение нескольких дней и дней, пытаясь сделать это именно так, как я хочу, но он продолжает делать ошибки в алгоритме, и на том, чтобы делать те же ошибки в основном в круге. Ограничения:

[*] Функция - это генерировать GrenateGridLayout (n, mincolumns, maxcolumns) , где практически говоря, это обычно называют Gen (n, 3, 7) , но в теории может быть что -то, что может сделать хорошую сетку, скажем, Gen (n, 2, 256) как код. /> Он должен обрабатывать произвольное количество элементов (скажем, до number.max_safe_integer , который составляет 9007199254740991 , но практически мои «компоновки сетки» будут иметь в основном до 1000 элементов).
[*], если у каждого числа, то есть нечетное, то есть нечетное, тогда нечетное. Если n ровно, то каждая строка может иметь равномерные или нечетные числа (подумайте 30, могут быть 10 строк 3 или 3 строки 10).
[*] Результаты могут отличаться только по размеру 2 в размере, всегда уменьшаясь. Он никогда не может отличаться на 3, 4, и т. Д. Это означает, что 7 не может быть [5, 2] или [4, 4, 1], поскольку они имеют прыжки> 2. Это может быть только [7] или [3, 3, 1], если генерал (7, 3, 7) .
[*] (Meta Note, это для Layout UI, так что мы основаны на представлении/континере, так как это, так и на уровне, в том, что на этом смысле это можно понять, так и есть, так и есть, так и на месте, так и на уровне. Но есть только место для 5, оно установит максимум до 5, хотя этот факт не актуально для решения), хотя)
Если мы скажем «Макс 7», но есть равномерное количество предметов, и равномерное число не может удовлетворить «все четные или все нечетные строки», а затем попробовать Максколонды - 1 , и т. Д. /> Важно: он должен минимизировать < /strong> количество малых рядов. Таким образом, для 29, в 6 максимальных, это должно быть [5, 5, 5, 5, 5, 3, 1], а не [5, 5, 5, 5, 3, 3, 3]. То есть он максимизирует количество больших рядов и сводит к минимуму количество небольших строк. Аналогично для 29, это обязательно не должно быть [5, 5, 5, 5, 3, 3, 1, 1, 1].

Код: Выделить всё

31
[5, 5, 5, 5, 5, 3, 3]
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1]

30
[5, 5, 5, 5, 5, 5]
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3]

29
[5, 5, 5, 5, 5, 3, 1]
[3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1]

28
[6, 6, 6, 6, 4]
[4, 4, 4, 4, 4, 4, 4]

27
[5, 5, 5, 5, 3, 3, 1]
[3, 3, 3, 3, 3, 3, 3, 3, 3]

26
[6, 6, 6, 4, 2, 2]
[4, 4, 4, 4, 4, 4, 4]

23
[5, 5, 5, 5, 3]
[3, 3, 3, 3, 3, 3, 3, 1, 1]
< /code>
Они показывают, если 5 или 6 - это столбцы Max, что он будет делать, и что он должен делать, если 4 или 3 - столбцы Max.  < /p>
Например, 26 в 7 макс.[6, 6, 6, 6, 2] # jumps more than 2
[4, 4, 4, 4, 4, 4, 2] # doesn't maximize maxColumns
< /code>
В идеале это должно быть: < /p>
[6, 6, 6, 4, 2, 2] # jumps max 2, maximizes large columns, minimizes small columns.
< /code>
Вот мое текущее решение: < /p>


log(29, 2, 7)
log(29, 2, 6)
log(29, 2, 5)
log(29, 2, 4)
log(44, 2, 3)

function distributeGridLayout(
length,
minColumns,
maxColumns
) {
function recur(
dp,
length,
width,
) {
if (length == 0) {
return []
}

if (length < width - 2 || width = minColumns && length % maxColumns === 0) {
const result = []
while (length) {
result.push(maxColumns)
length -= maxColumns
}
return result
}

if (maxColumns > 4) {
if (maxColumns > minColumns && length % (maxColumns - 1) === 0) {
const result = []
maxColumns--
while (length) {
result.push(maxColumns)
length -= maxColumns
}
return result
}
}

const dec = 2 - (length % 2)

maxColumns -= maxColumns % dec

const dp = Array.from(
{ length: maxColumns + 1 },
() => new Set(),
)

for (let width = maxColumns; width > 0; width -= dec) {
const result = recur(dp, length - width, width)
if (result) {
if (width "/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>" 300 "/>"/> "/>"/> "/>"/> "/>"/> "/>" 300 "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> "/>"/> ". Нужно ли мне измениться, чтобы это всегда соответствовало моим правилам? 44 макет 3 максимума 2 мин должна быть в основном макетом колонны ...  

Подробнее здесь: [url]https://stackoverflow.com/questions/79592023/how-to-create-a-layout-that-only-has-all-even-or-all-odd-row-size-and-changes-b[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»