TC官方合作论坛

标题: 嗯 夜猫子们 出来想个算法吧 [打印本页]

作者: aa9631230    时间: 2016-6-6 23:52
标题: 嗯 夜猫子们 出来想个算法吧
5个人  三间房  随机排列 每间房人数最高2人 最低1人
简单明了   想个算法吧


作者: 孤映楼    时间: 2016-6-7 01:31
本帖最后由 孤映楼 于 2016-6-7 01:32 编辑
  1. var 人 = array()
  2.     var 房间 = array()
  3.    
  4.     房间 = array("1","2","3")
  5.     人 = array("1","2","3","4","5")
  6.    
  7.     var 新顺序 = array()
  8.     新顺序[0] = array()
  9.     新顺序[1] = array()
  10.     新顺序[2] = array()
  11.     //先随机排列房间
  12.     for(var i = 3; i > 0; i--)
  13.         var x = rnd(0,i-1)
  14.         新顺序[3-i]["房间"] = 房间[x]
  15.         var 大小 = arraysize(房间)
  16.         房间[x] = 房间[大小-1]
  17.         arraypop(房间,"")
  18.     end
  19.    
  20.     //随机排列人
  21.     var 房间下标 = 0
  22.     var 人分组
  23.     for(var i = 5; i > 0; i--)
  24.         var x = rnd(0,i-1)
  25.         人分组 = 人分组&人[x]&","
  26.         var 大小 = arraysize(人)
  27.         人[x] = 人[大小-1]
  28.         arraypop(人,"")
  29.         
  30.         if(i%2 == 0 || i == 1)
  31.             人分组 = strcut(人分组,1,false)
  32.             新顺序[房间下标]["人"] = array()
  33.             新顺序[房间下标]["人"] = 人分组
  34.             人分组 = ""
  35.             房间下标++
  36.         end
  37.     end
  38.    
  39.     traceprint(新顺序)
复制代码



作者: 孤映楼    时间: 2016-6-7 01:33
  1. 输出>>"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行代码


  1. 人=数组("甲","乙","丙","丁","戊","")
  2.     遍历(变量 i =2; i < 8; i++)
  3.         随机人=随机数(1,数组大小(人))
  4.         数组获取元素(人,随机人-1,B)
  5.         标签设置文本("标签"&i,B)
  6.         数组指定位置删除(人,随机人-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