找到第一个元素后跟n个元素相同

时间:2015-09-27 20:20:07

标签: netlogo

如何找到第一个零的索引,后面跟着列表中的5个零?如果不存在这样的零,则返回-1。 Netlogo只返回列表中position找到的第一个元素,这使得它很难/繁琐。

2 个答案:

答案 0 :(得分:3)

在问题中,如果找不到-1,则表示你想要{​​{1}},但这与NetLogo自己的position原语的行为不符,如果是false则返回to-report position-of-six-zeros [xs] if length xs < 6 [ report false ] if sublist xs 0 6 = [0 0 0 0 0 0] [ report 0 ] let recurse position-of-six-zeros butfirst xs if not is-number? recurse [ report recurse ] report 1 + recurse end 找不到物品。我建议坚持使用通常的NetLogo约定。

递归解决方案:

observer> show position-of-six-zeros [0 0 0 0 0]
observer: false
observer> show position-of-six-zeros [0 0 0 0 0 0 ]
observer: 0
observer> show position-of-six-zeros [1 2 3 0 0 0 0 0 0 4 5 6]
observer: 3
observer> show position-of-six-zeros [1 2 3 0 0 0 0 0 4 5 6]
observer: false

样品运行:

{{1}}

答案 1 :(得分:1)

我找到了一个可能的解决方案。也许有更聪明的方法来实现同样的目标,但至少这种方法应该有效。 您可以定义列表,要查看的序列的长度以及序列应具有的数字。然后用该信息调用记者功能(检查序列)。 记者功能然后使用while循环。它需要下一个sprikekit texture atlas generator error cannot fit input texture into a maximum supported dimensions of 2048 x 2048 元素,并按指定的length-of-sequence过滤此子列表。如果此筛选列表的长度与指定的number-of-interest相同,则该函数将实际位置存储在整个列表中(length-of-sequence)。如果没有,列表的第一个元素将被删除,循环再次运行。如果列表中没有足够的元素,循环将停止并将报告器设置为-1。否则它将报告序列的起始位置。

i