首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不同大小的框填充空白空间的逻辑

使用不同大小的框填充空白空间的逻辑
EN

Stack Overflow用户
提问于 2020-11-30 14:56:31
回答 1查看 118关注 0票数 2

我有一个逻辑上的问题。

我有一个起点A和终点B。我有不同大小的积木(42,21)英寸和一个可变大小的填充盒(可以从7-26英寸延伸)。我需要填充空间,以便最大尺寸的块是合适的,然后剩余的空间被填充框填充。

例如a)如果间隙是50英寸,我将放一个42英寸的积木和一个填充盒(42+ 8*)

b)如果间隙是43英寸,我不能放42英寸的积木,因为剩余的间隙是1英寸,我没有任何东西可以放进去。所以我将放置一个21英寸的块,填充块将占用22英寸的其余部分,因为它可以拉伸到26英寸。( 21 + 22*)

c)像48这样的例外很少-它不适合上面的规则集。但我们可以忽略这些,因为差距很少是48或27。如果是这样,就会留下一个空白,这是可以接受的。

EN

回答 1

Stack Overflow用户

发布于 2020-11-30 23:00:45

假设只能有一个填充框,这应该可以做到这一点。

代码语言:javascript
复制
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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65069218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档