gpt4 book ai didi

javascript - 将数字数组平均分配为 x 个数字子集

转载 作者:行者123 更新时间:2023-12-03 07:38:18 25 4
gpt4 key购买 nike

我有一个很大的数字数组,需要将其分配到 x 个数字范围中,以便每个范围包含原始数组中相同数量的元素。

例如,当x = 4时,以下数组

[1, 1, 2.5, 3, 6, 7, 10, 11.2, 14, 25, 35, 50, 75, 85.5, 100, 120, 128.9, 150, 200, 260]

将产生一个长度为x + 1的数组,其内容如下

[1, 6.5, 30, 110, 260]
  • 1 是数组中的最小值
  • 6.5 是 6 和 7 的中点
  • 30 是 25 和 35 的中点
  • 110 是 100 和 120 的中点
  • 260 是最高值

本质上,这会给我 4 个数字范围:1-6.5、6.5-30、30-110 和 110-260。每个范围将包含原始数组的 5 个数字。

需要能够处理动态数量的元素,这些元素不一定能被 x 整除。

我问this question on Mathematics但被告知这更多是一个编程问题。

最佳答案

根据您的问题,以下 javascript 代码应该满足您的要求,我已经使用几个 x 值测试了其正确性,但您可能想检查此代码是否适用于您的问题的所有可能的测试用例。

var arr = [1, 1, 2.5, 3, 6, 7, 10, 11.2, 14, 25, 35, 50, 75, 85.5, 100, 120, 128.9, 150, 200, 260, 261, 262, 263, 264, 265];
total_elem = arr.length;
var x = 5;
var each_set_elem = total_elem / x;
var i = 1;
var temp = [];
temp.push(arr[0]);
for (i = each_set_elem; i < total_elem; i += each_set_elem) {
this_elem = (arr[i] + arr[i - 1]) / 2;
temp.push(this_elem);
}
temp.push(arr[total_elem - 1]);
console.log(temp);

此代码满足问题中的测试用例,并且对于 x=5,它会输出正确的 6 个点,以便 5 个范围每个都有给定数组集中的 4 个元素。

关于javascript - 将数字数组平均分配为 x 个数字子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35514969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com