如何在NETLOGO中由一组数字组成子集 [英] How to form subset form a set of numbers in Netlogo

查看:12
本文介绍了如何在NETLOGO中由一组数字组成子集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的Netlogo社区,

我希望生成一组数字的子集。 例如,如果集合是[1 2 3 4 5],则子集将是[1 2][1 3][1 4][1 5][1 2 3][1 2 4].....我知道在Java中使用位操作可以非常容易地生成代码。但我不知道如何在NetLOGO中实现。我就完蛋了。任何帮助都将不胜感激。谢谢

推荐答案

这是使用递归最容易解决的问题:

to-report subsets [xs]
  if empty? xs [ report [[]] ]
  let recurse subsets butfirst xs
  report sentence recurse
                  map [fput first xs ?] recurse
end
基本思想是,如果想要[1 2 3]的子集,首先要找到[2 3]的所有子集。所有这些列表本身都是[1 2 3]的子集,如果您将1放在每个列表的前面,得到的列表也是答案的一部分。

示例运行:

observer> print subsets [1 2 3]
[[] [3] [2] [2 3] [1] [1 3] [1 2] [1 2 3]]

这篇关于如何在NETLOGO中由一组数字组成子集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆