gpt4 book ai didi

wolfram-mathematica - 如何在 Mathematica 中测试列表是否包含连续整数?

转载 作者:行者123 更新时间:2023-12-04 01:16:32 25 4
gpt4 key购买 nike

我想测试一个列表是否包含连续的整数。

 consQ[a_] := Module[
{ret = True},
Do[If[i > 1 && a[[i]] != a[[i - 1]] + 1, ret = False; Break[]], {i,
1, Length[a]}]; ret]

虽然函数 consQ 可以完成这项工作,但我想知道是否有更好(更短、更快)的方法来做到这一点,最好使用函数式编程风格。

编辑:
上面的函数将具有递减序列的连续整数的列表映射到 False。我想将其更改为 True。

最佳答案

你可以用

consQ[a_List ? (VectorQ[#, IntegerQ]&)] := Union@Differences[a] === {1}
consQ[_] = False

如果您知道传递给它的每个列表都只有整数,则您可能希望删除对整数的测试。

编辑:一点额外的:如果你使用一个没有 Differences 的非常旧的版本,或者想知道如何实现它,
differences[a_List] := Rest[a] - Most[a]

编辑 2:请求的更改:
consQ[a : {Integer___}] := MatchQ[Union@Differences[a], {1} | {-1} | {}]
consQ[_] = False

这适用于递增和递减序列,并给出 True对于大小为 1 或 0 的列表。

更一般地,您可以测试数字列表是否等距,例如 equallySpacedQ[a_List] := Length@Union@Differences[a] == 1

关于wolfram-mathematica - 如何在 Mathematica 中测试列表是否包含连续整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931716/

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