而且“把M个元素均匀分成N份”这个问题比想象中的难很多,我其实想不到简单的解决方案。
看起来GPT给的答案确实挺好的:
23楼不好,12个分不均匀
@echo醉老仙,以下是一个真的能分成5份的代码,它会把多余的元素放在末尾:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; let n = 5; let partSize = Math.floor(arr.length / n); for (let i=1; arr.length > 0; i++) { if (i == n) { partSize = arr.length; } console.log(arr.splice(0, partSize)); }
它不会验证是否正确,只能机械的给出答案
说起来,我确实亲自运行了我这个代码(和GPT给的逻辑一样),而且还运行了好几次,但我没有意识到它只分了4份,根本不符合要求,所以我也直接发出来了。
可以这么说,除了编造错误结果这一点不一样之外,GPT和我具有一致的行为逻辑
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; console.log(arrayParts(arr, 5)); function arrayParts(arr, n) { var result = []; var partSize = Math.ceil(arr.length / n); for (var i = 0; i < arr.length; i += partSize) { result.push(arr.slice(i, i + partSize)); } return result; }
这几天用过几次,发现chat都是瞎掰的,它不会验证是否正确,只能机械的给出答案
但反复问几次,改变方法后,还真有一个可以实现差不多的
function divideArrayIntoParts(arr, parts) { var results = []; var length = arr.length; var i = 0; while (i < length) { var size = Math.ceil((length - i) / parts); results.push(arr.slice(i, i + size)); i += size; parts--; } return results; } var arrayToDivide = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; var parts = 5; var result = divideArrayIntoParts(arrayToDivide, parts); console.log(result);
@echo醉老仙,如果想用
splice:var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; var partSize = Math.ceil(arr.length / 5); while (arr.length > 0) { console.log(arr.splice(0, partSize)); }
@echo醉老仙,不好意思我看错了,
slice和splice是两个不同的函数。所以只要这样就行了:var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; console.log(arrayParts(arr, 5)); function arrayParts(arr, n) { var result = []; var partSize = Math.ceil(arr.length / n); for (var i = 0; i < arr.length; i += partSize) { result.push(arr.slice(i, i + partSize)); } return result; }
层主 @老虎会游泳 于 2023-04-26 21:07 删除了该楼层。
@老虎会游泳,元素个数11,份数5,我也没说份数是会变的,因此我只需要(合理)均分,很显然2楼的情况并无法实现,并且对其他数量的元素,尽可能(合理)均分,我说实话,看到这一堆回复,我差点以为是个假老虎,问个问题而已,你是受到什么刺激了
我uid100000096
层主 @老虎会游泳 于 2023-04-26 20:33 删除了该楼层。
层主 @老虎会游泳 于 2023-04-26 20:33 删除了该楼层。
层主 @老虎会游泳 于 2023-04-26 20:33 删除了该楼层。
层主 @老虎会游泳 于 2023-04-26 20:33 删除了该楼层。
层主 @老虎会游泳 于 2023-04-26 20:33 删除了该楼层。
@老虎会游泳,其实很简单,就是想均分,11个元素,分5份,一份至少2个,但是代码实现出来不行,如果改了除法取整,元素数量不一样又可能出现别的不均匀的情况
@echo醉老仙,你首先需要描述你的目标,输入是什么,想得到的输出是什么,然后别人才能回答。
展示效果不佳的代码并不能让人推测出你的目标。
希望的结果是:11个,足够分5份
结果是这样
