gpt4 book ai didi

Javascript 挑战——最后一个苹果是哪个篮子?

转载 作者:行者123 更新时间:2023-11-30 18:05:59 27 4
gpt4 key购买 nike

我面临以下挑战性问题:

There are a circle of 100 baskets in a room; the baskets are numbered in sequence from 1 to 100 and each basket contains one apple. Eventually, the apple in basket 1 will be removed but the apple in basket 2 will be skipped. Then the apple in basket 3 will be removed. This will continue (moving around the circle, removing an apple from a basket, skipping the next) until only one apple in a basket remains. Write some code to determine in which basket the remaining apple is in.

我得出结论,篮子 100 将包含最后一个苹果,这是我的代码:

     var allApples = [];
var apples = [];
var j = 0;
var max = 100;
var o ='';
while (j < max) {
o += ++j;
allApples.push(j);
}

var apples = allApples.filter(function(val) {
return 0 == val % 2;
});
while (apples.length > 1) {
for (i = 0; i < apples.length; i += 2) {
apples.splice(i, 1);
}
}

console.log(apples);

我的问题是:我这样做是否正确?我关心的是篮子“一圈”的描述。我不确定这与我如何编写解决方案完全相关。剩下的苹果所在的篮子是否会被跳过?

我希望有人能告诉我我的回答是正确的、部分正确的还是完全错误的。感谢您的帮助。

最佳答案

所以,...我对这个问题也很感兴趣 :)

我分解了上一个答案的输入/输出,揭示了一个非常简单的模式。

基本上,如果项目总数是 2 的幂,那么它将是最后一项。之后的附加项将使第二项成为最后一项。此后每增加一个项目,最后一个项目就会增加 2,直到您达到另一个可以被 2 的幂整除的项目计数。冲洗并重复。

仍然不是单行,但会比我之前的回答快得多。这不适用于 1 项。

var items = 100;

function greatestPowDivisor(n, p) {
var i = 1;
while(n - Math.pow(p, i) > 0) {
i++;
}
return Math.pow(p, (i - 1));
}

var d = greatestPowDivisor(items, 2)
var last_item = (items - d) * 2;

关于Javascript 挑战——最后一个苹果是哪个篮子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15795379/

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