马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 zxjkings 于 2015-5-6 12:29 编辑
{:soso_e129:}今天半夜群里朋友问A数组的内容放到B数组里,并且要打乱顺序重新排列怎么搞
想来很简单的应该,结果上手才发现悲剧了,用数组[下标]的形式产生各种错误.
如下:
- 变量 A=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16),B=array()
- 遍历(变量 i=0; i<16; i++)
- 变量 随机位置=随机数(0,数组大小(A))
- B[i]=A[随机位置]
- 数组指定位置删除(A,随机位置)
- 结束
- traceprint(B)
复制代码
想来才发现----------5.0的数组[]中取的是Key
这NM就蛋疼了,于是想到用数组获取元素来取,也是各种错误.
至于错误原因,以及尝试的次数,我就不蛋疼的复述过程了,反正是被5.0数组虐的不行.
- 变量 A=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16),B=array(),i=0,随机位置,值,key,ret
- 循环(真)
- 如果(数组大小(A)==0)
- 跳出
- 否则
- 随机位置=随机数(0,数组大小(A)-1)
- 数组获取元素(A,随机位置,值,key)
- B[i]=值
- 数组指定位置删除(A,随机位置)
- i++
- 结束
- 结束
- traceprint(B)
复制代码 调试无误发给群里朋友,刚一发完就后悔了.
为啥后悔?
太坑人了,循环只是为了之前蛋疼的思路,写着写着留下的渣渣,本来完全没必要,只要遍历就行了.于是又改了一份:
- 变量 A=array("a","b","c","d","e","f","g"),B=array(),随机位置,值,key,ret,次数=数组大小(A)
- 遍历(变量 i = 0; i <次数; i++)
- 随机位置=随机数(0,数组大小(A)-1)
- 数组获取元素(A,随机位置,值,key)
- B[i]=值
- 数组指定位置删除(A,随机位置)
- 结束
- traceprint(B)
复制代码 是的,只有7行(不算调试输出那行).但群里各种半夜不睡的屌丝朋友们鸡冻了!说7行太长.
接下来这7行代码遭受各种惨无人道的**.
我是懵B了,这7行代码硬是被减到了......
{:soso_e129:}直接回帖看的答案的都是1厘米的小唧唧,为了提高也好,学习也罢,解闷也无所谓..
请把你精简之后的代码来代替回复,看你能不能更"短"...(注:封装函数无效)
|