用不同大小的盒子填充空白空间的逻辑

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

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

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

c) 很少有例外,例如 48 - 不适合上述规则集。但我们可以忽略这些,因为差距很少会是 48 或 27。如果是,它会留下一个差距,那没关系。

函数式编程
浏览 82回答 1
1回答

收到一只叮咚

假设只能有一个填充盒,这应该可以解决问题。function fill_space(space) {&nbsp; const small_block = 21;&nbsp; const big_block = 2 * small_block;&nbsp; const min_filler = 7;&nbsp; const max_filler = 26;&nbsp; if (space % small_block == 0) {&nbsp; &nbsp; const num_big = Math.trunc(space / big_block);&nbsp; &nbsp; const num_small = (space - num_big * big_block) / small_block;&nbsp; &nbsp; return { num_big: num_big, num_small: num_small, filler: 0 };&nbsp; }&nbsp; if (space < min_filler) {&nbsp; &nbsp; return { num_big: 0, num_small: 0, filler: 0 };&nbsp; }&nbsp; const max_block_space = space - min_filler;&nbsp; const num_big = Math.trunc(max_block_space / big_block);&nbsp; const max_small_space = max_block_space - num_big * big_block;&nbsp; const num_small = Math.trunc(max_small_space / small_block);&nbsp; const filler = Math.min(&nbsp; &nbsp; min_filler + max_small_space - num_small * small_block,&nbsp; &nbsp; max_filler&nbsp; );&nbsp; 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));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript