首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找分布最少的数字组件

查找分布最少的数字组件
EN

Code Golf用户
提问于 2022-08-08 20:28:57
回答 2查看 212关注 0票数 1
  • 让我们假设我们有数字X
  • 假设我们有这个X数的正整数"components“(D6)。
  • 我们可以像C1+C2+...+Cn = X一样将这些组件添加到一起。
  • 我们有N作为组件数量的限制。
  • 我们把B作为最大分量的极限
  • 分发:如果我们有[8;8;5],那么组件的avg是7,分发是abs(8-7)+abs(8-7)+abs(5-7) = 4
  • 最低分布:来自这些集合的dist([8;8;5])=4 dist([7;7;7])=0 ->最低分布是[7;7;7]
  • 组件顺序并不重要。
  • 除一个可以较低的项目外,部件应是相同的数目。

示例

代码语言:javascript
运行
复制
X = 17
N = 3
B = 8
  • 然后可能的组件集是[8;8;1][7;7;3][6;6;5]
  • 组件之间的最低分布是在[6;6;5]中,这就是我们所需要的。
代码语言:javascript
运行
复制
X = 21
N = 3
B = 8
  • 可能的集合:[8;8;5][7;7;7]
  • 获胜者是[7;7;7]
代码语言:javascript
运行
复制
X = 22
N = 3
B = 8
  • 可能的集合:[8;8;6]和没有更多。
  • 获胜者:[8;8;6]
代码语言:javascript
运行
复制
X = 25
N = 3
B = 8
  • 可能的集合:-(由于B= 8)

我正在寻找用Javascript编写的这个问题的最短脚本。我有一个10线的解决方案。

我的解决方案:

代码语言:javascript
运行
复制
const findComponents = (X, B, N) => {
    let S = null;
    let mainComponent = Math.ceil(X / N);
    if (mainComponent <= B){
      let otherComponent = X % mainComponent;
      S = Array(N - 1).fill(mainComponent);
      S.push(otherComponent == 0 ? mainComponent : otherComponent);
    }
    return S;
  }
EN

回答 2

Code Golf用户

发布于 2022-08-09 19:01:53

JavaScript (Node.js),61字节

代码语言:javascript
运行
复制
(x,n,b)=>(a=[...Array(--n).fill(y=(x+n)/-~n|0),x-n*y],y>b||a)

在网上试试!

类似乔纳森·艾伦的答案。

票数 1
EN

Code Golf用户

发布于 2022-08-10 07:10:59

05AB1E,13 字节数

代码语言:javascript
运行
复制
ÅœIùʒ@P}ʒ¦Ë}θ

输入与挑战描述相同的顺序:X,N,B

在网上试试验证所有测试用例.

解释:

代码语言:javascript
运行
复制
Ŝ       # Get all lists of positive integers that sum to the first (implicit) input `X`
  Iù     # Only keep the lists with a length equal to the second input `N`
    ʒ    # Filter this list by:
     @   #  Check if the third (implicit) input `B` is >= the current value
      P  #  Check that it's truthy for all values in the list
    }ʒ   # After the filter: filter again:
      ¦  #  Remove the first value of the list
       Ë #  Check if all other values are the same
     }θ  # After the filter: pop and keep the last list
         # (which is output implicitly as result)
票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/250839

复制
相关文章

相似问题

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