You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nim语言:寻求首个非连续数字的函数式实现方案

Nim函数式实现首个非连续数字

这里提供一种符合函数式编程风格的实现方式,核心是利用序列操作替代显式循环,代码如下:

import options, sequtils

proc first_non_consecutive*(arr: seq[int]): Option[int] =
  if arr.len < 2:
    return none(int)
  arr.zip(arr[1..^0])
    .findIt(curr - prev > 1)
    .mapIt(it[1])
    .toOption()

实现思路

  1. 配对相邻元素:zip(arr, arr[1..^0]) 将原数组与它从第二个元素开始的切片进行配对,生成一系列 (prev, curr) 形式的相邻元素对。
  2. 查找目标配对:findIt(curr - prev > 1) 遍历这些元素对,找到第一个满足“当前元素与前一个元素差值大于1”的配对,返回一个包含该配对的 Option 类型。
  3. 提取结果并转换类型:mapIt(it[1]) 提取配对中的当前元素(即首个非连续的数字),最后通过 toOption() 确保结果统一为 Option[int] 类型——如果没有找到符合条件的元素,会自动返回 none(int)。

另外补充边界处理:当输入数组长度小于2时,直接返回 none(int),避免无意义的配对操作。

内容的提问来源于stack exchange,提问作者Izzy030

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:50:31