gpt4 book ai didi

javascript - 我如何确定它是倒计时更快还是向上倒计时更快?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:04 25 4
gpt4 key购买 nike

我正在尝试制作一个函数 isCountDownFaster(from, to, max); 谁应该返回 true/false,但我在数学上很吃力,有人可以快速帮助?

0, 1 ... 32, from, 34 ... 66, to, 68 ... 98, max

那么我如何从这个 ^ 确定从“从”点到“到”点倒数或倒数更快?而且我 99% 确定有一个方程式可以做到这一点,而无需使用循环和十几行代码。

例如isCountDownFaster 应该确定是否以这种方式计数

33, 32, 31, ... 2, 1, 0, 99, 98, ... 69, 68, 67

会比做这个更快

33, 34, 35, ... 65, 66, 67

在这种情况下应该返回 false

最佳答案

此函数假定 from , tomax都是非负的,fromto小于或等于 max . fromto也可以彼此相等。它有利于从 from 直接迭代至 to如果它们在任一方向上的长度相等,则通过环绕数组来过度迭代。

如果from等于to , isCountDownFaster将始终返回 false 因为 to >= from等于true , 制作 ascend等于true , 和 direct <= around将等于 true同样,自direct等于0 .

function isCountDownFaster(from, to, max) {
var ascend = to >= from,
direct = Math.abs(to - from),
around = max - direct;

return !!((direct <= around) ^ ascend);
}

!!((direct <= around) ^ ascend)可以这样解释:

direct <= around | ascend | isCountDownFaster
-----------------|--------|------------------
false | false | false
false | true | true
true | false | true
true | true | false

这里有一些测试用例来确认它是否正常工作:

function isCountDownFaster(from, to, max) {
var ascend = to >= from,
direct = Math.abs(to - from),
around = max - direct;

return !!((direct <= around) ^ ascend);
}

console.log(
'from: %d\nto: %d\nmax: %d\nisCountDownFaster: %s\n',
5, 95, 100, isCountDownFaster(5, 95, 100)
);

console.log(
'from: %d\nto: %d\nmax: %d\nisCountDownFaster: %s\n',
95, 5, 100, isCountDownFaster(95, 5, 100)
);

console.log(
'from: %d\nto: %d\nmax: %d\nisCountDownFaster: %s\n',
45, 55, 100, isCountDownFaster(45, 55, 100)
);

console.log(
'from: %d\nto: %d\nmax: %d\nisCountDownFaster: %s\n',
55, 45, 100, isCountDownFaster(55, 45, 100)
);

检查开发人员控制台以查看这些结果。

关于javascript - 我如何确定它是倒计时更快还是向上倒计时更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31067185/

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