亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用不同大小的盒子填充空白空間的邏輯

用不同大小的盒子填充空白空間的邏輯

函數式編程 2023-09-21 10:10:52
我有一個邏輯問題。我有一個起點 A 和終點 B。我有不同尺寸的塊(42、21)英寸和一個可變尺寸的填充盒(可以從 7-26 英寸延伸)。我需要填充空間,以便適合最大尺寸的塊,然后用填充框填充剩余空間。例如 a) 如果間隙是 50 英寸,我將放置一個 42 英寸塊和一個填充盒 ( 42 + 8*)b) 如果間隙是 43 英寸,我不能放置 42 英寸塊,因為剩余間隙是 1 英寸,我沒有東西可以放進去。所以我會放一個 21 英寸的塊,填充塊將占據 22 英寸的其余部分,因為它可以拉伸到 26 英寸。( 21 + 22*)c) 很少有例外,例如 48 - 不適合上述規則集。但我們可以忽略這些,因為差距很少會是 48 或 27。如果是,它會留下一個差距,那沒關系。
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

假設只能有一個填充盒,這應該可以解決問題。


function fill_space(space) {

  const small_block = 21;

  const big_block = 2 * small_block;

  const min_filler = 7;

  const max_filler = 26;

  if (space % small_block == 0) {

    const num_big = Math.trunc(space / big_block);

    const num_small = (space - num_big * big_block) / small_block;

    return { num_big: num_big, num_small: num_small, filler: 0 };

  }

  if (space < min_filler) {

    return { num_big: 0, num_small: 0, filler: 0 };

  }

  const max_block_space = space - min_filler;

  const num_big = Math.trunc(max_block_space / big_block);

  const max_small_space = max_block_space - num_big * big_block;

  const num_small = Math.trunc(max_small_space / small_block);

  const filler = Math.min(

    min_filler + max_small_space - num_small * small_block,

    max_filler

  );

  return { num_big: num_big, num_small: num_small, filler: filler };

}


console.log(fill_space(0));

console.log(fill_space(6));

console.log(fill_space(21));

console.log(fill_space(42));

console.log(fill_space(48));

console.log(fill_space(50));

console.log(fill_space(63));


查看完整回答
反對 回復 2023-09-21
  • 1 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號