TC官方合作论坛
标题:
嗯 夜猫子们 出来想个算法吧
[打印本页]
作者:
aa9631230
时间:
2016-6-6 23:52
标题:
嗯 夜猫子们 出来想个算法吧
5个人 三间房 随机排列 每间房人数最高2人 最低1人
简单明了 想个算法吧
作者:
孤映楼
时间:
2016-6-7 01:31
本帖最后由 孤映楼 于 2016-6-7 01:32 编辑
var 人 = array()
var 房间 = array()
房间 = array("1","2","3")
人 = array("1","2","3","4","5")
var 新顺序 = array()
新顺序[0] = array()
新顺序[1] = array()
新顺序[2] = array()
//先随机排列房间
for(var i = 3; i > 0; i--)
var x = rnd(0,i-1)
新顺序[3-i]["房间"] = 房间[x]
var 大小 = arraysize(房间)
房间[x] = 房间[大小-1]
arraypop(房间,"")
end
//随机排列人
var 房间下标 = 0
var 人分组
for(var i = 5; i > 0; i--)
var x = rnd(0,i-1)
人分组 = 人分组&人[x]&","
var 大小 = arraysize(人)
人[x] = 人[大小-1]
arraypop(人,"")
if(i%2 == 0 || i == 1)
人分组 = strcut(人分组,1,false)
新顺序[房间下标]["人"] = array()
新顺序[房间下标]["人"] = 人分组
人分组 = ""
房间下标++
end
end
traceprint(新顺序)
复制代码
作者:
孤映楼
时间:
2016-6-7 01:33
输出>>"array("0"=array("房间"="1","人"="1,3"),"1"=array("房间"="3","人"="2,5"),"2"=array("房间"="2","人"="4"))"
复制代码
作者:
aa9631230
时间:
2016-6-7 01:35
孤映楼 发表于 2016-6-7 01:31
[attach]23513[/attach]
.......兄弟幸苦了 兄弟知道我这个程序写了多少行?
作者:
aa9631230
时间:
2016-6-7 10:15
附上源码,实现上图gif,并满足条件只是不到10行代码
人=数组("甲","乙","丙","丁","戊","")
遍历(变量 i =2; i < 8; i++)
随机人=随机数(1,数组大小(人))
数组获取元素(人,随机人-1,B)
标签设置文本("标签"&i,B)
数组指定位置删除(人,随机人-1)
复制代码
作者:
孤映楼
时间:
2016-6-7 17:38
不一样,我首先做了房间随即,然后要用二维数组存
你是直接赋值给标签,少了临时存储判断
作者:
孤映楼
时间:
2016-6-7 17:42
忘记了,获取数组里,可以直接用下标取,多做了点判断
作者:
woshizengw
时间:
2016-6-8 04:10
自己开发自己用,功能 一样的话,10行和100行和1000行 没区别。
然而 我并不会 为了 把 1000行 简化 成 100行 而费 脑筋。这样
其实, 简化 后的 代码 重用性和 可扩展性 是不是会 提升,这个很难说,谁 知道你下一次 的需求是什么样子的?
作者:
aa9631230
时间:
2016-6-8 09:07
谢谢各位厚爱
作者:
786377161
时间:
2016-7-1 11:10
54545
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1