TC官方合作论坛

 找回密码
 立即注册
查看: 4691|回复: 92
打印 上一主题 下一主题

[问题] 大家一起学TC(五:数组内容随机重新排列)[附代码精简过程]

  [复制链接]
跳转到指定楼层
楼主
发表于 2015-5-6 03:12:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 zxjkings 于 2015-5-6 12:29 编辑

今天半夜群里朋友问A数组的内容放到B数组里,并且要打乱顺序重新排列怎么搞

想来很简单的应该,结果上手才发现悲剧了,用数组[下标]的形式产生各种错误.
如下:
  1. 变量 A=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16),B=array()
  2.     遍历(变量 i=0; i<16; i++)
  3.         变量 随机位置=随机数(0,数组大小(A))
  4.         B[i]=A[随机位置]
  5.         数组指定位置删除(A,随机位置)
  6.     结束
  7.     traceprint(B)
复制代码

想来才发现----------5.0的数组[]中取的是Key

这NM就蛋疼了,于是想到用数组获取元素来取,也是各种错误.

至于错误原因,以及尝试的次数,我就不蛋疼的复述过程了,反正是被5.0数组虐的不行.
  1. 变量 A=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16),B=array(),i=0,随机位置,值,key,ret
  2.     循环(真)
  3.         如果(数组大小(A)==0)
  4.             跳出
  5.         否则
  6.             随机位置=随机数(0,数组大小(A)-1)
  7.             数组获取元素(A,随机位置,值,key)
  8.             B[i]=值
  9.             数组指定位置删除(A,随机位置)
  10.             i++
  11.         结束
  12.     结束
  13.     traceprint(B)
复制代码
调试无误发给群里朋友,刚一发完就后悔了.

为啥后悔?

太坑人了,循环只是为了之前蛋疼的思路,写着写着留下的渣渣,本来完全没必要,只要遍历就行了.于是又改了一份:
  1. 变量 A=array("a","b","c","d","e","f","g"),B=array(),随机位置,值,key,ret,次数=数组大小(A)
  2.     遍历(变量 i = 0; i <次数;  i++)
  3.         随机位置=随机数(0,数组大小(A)-1)
  4.         数组获取元素(A,随机位置,值,key)
  5.         B[i]=值
  6.         数组指定位置删除(A,随机位置)
  7.     结束
  8.     traceprint(B)
复制代码
是的,只有7行(不算调试输出那行).但群里各种半夜不睡的屌丝朋友们鸡冻了!说7行太长.

接下来这7行代码遭受各种惨无人道的**.

我是懵B了,这7行代码硬是被减到了......

直接回帖看的答案的都是1厘米的小唧唧,为了提高也好,学习也罢,解闷也无所谓..
请把你精简之后的代码来代替回复,看你能不能更"短"...
(注:封装函数无效)

游客,如果您要查看本帖隐藏内容请回复


评分

参与人数 1威望 +10 金币 +10 收起 理由
sam7894604 + 10 + 10 感谢抛砖引玉。

查看全部评分

回复

使用道具 举报

推荐
发表于 2015-5-6 07:06:52 | 只看该作者
本帖最后由 sam7894604 于 2015-5-6 07:47 编辑

我也来看看~


------------------------------研究与分享的分隔线------------------------------


首先...你的代码有BUG,会有重复的值,下面是修复过的。

  1.     变量 A = 数组("a","b","c","d","e","f","g"),B = 数组(),key,次数 = 数组大小(A)
  2.     遍历(变量 i = 0; i <次数; i++)
  3.         数组获取元素(A,key = 随机数(0,数组大小(A)-1),B[i])
  4.         数组指定位置删除(A,key)
  5.     结束
复制代码



再来呢,分享我精简过的四行代码版,还去除一个多余 次数 变量,完美无BUG。

  1.     变量 A = 数组("a","b","c","d","e","f","g"),B = 数组(),key
  2.     遍历(变量 i = 数组大小(A) - 1 ; 数组获取元素(A,key = 随机数(0,i),B[i]) && i > 0; i--)
  3.         数组指定位置删除(A,key)
  4.     结束
复制代码


还有终极版,三行代码版,完美无BUG。

  1.     变量 A = 数组("a","b","c","d","e","f","g"),B = 数组(),key
  2.     遍历(变量 i = 数组大小(A) - 1 ; 数组获取元素(A,key = 随机数(0,i),B[i]) && 数组指定位置删除(A,key) && i > 0; i--)
  3.     结束
复制代码


我的精简版都是倒序写入,但是实际使用上不影响,所以你要求的功能可以说是完整实现了。

评分

参与人数 2威望 +1 金币 +11 收起 理由
Demono + 1 + 1 简化得出神入化,对新手来说看着就不好理解.
zxjkings + 10 艹 你也太狠了!!!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

93#
发表于 2018-8-31 19:44:41 | 只看该作者
回复

使用道具 举报

92#
发表于 2018-8-24 01:21:13 | 只看该作者
kkkkkkkkkk
回复 支持 反对

使用道具 举报

91#
发表于 2018-4-3 14:41:29 | 只看该作者
来看看怎么精简代码
回复 支持 反对

使用道具 举报

90#
发表于 2018-3-8 22:50:00 | 只看该作者
学习学习
回复

使用道具 举报

89#
发表于 2018-2-3 22:51:57 | 只看该作者
启动启动
回复

使用道具 举报

88#
发表于 2017-7-8 13:39:25 | 只看该作者
qwe20445
回复

使用道具 举报

87#
发表于 2017-6-17 22:05:49 | 只看该作者
。。。。。。
回复

使用道具 举报

86#
发表于 2017-5-30 14:03:38 | 只看该作者
························
回复 支持 反对

使用道具 举报

85#
发表于 2017-5-22 11:05:33 | 只看该作者
学习学习
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-18 19:43 , Processed in 0.183692 second(s), 26 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表