赞 | 0 |
VIP | 10 |
好人卡 | 49 |
积分 | 10 |
经验 | 22958 |
最后登录 | 2020-8-1 |
在线时间 | 2161 小时 |
Lv3.寻梦者 酱油的
- 梦石
- 0
- 星屑
- 1020
- 在线时间
- 2161 小时
- 注册时间
- 2007-12-22
- 帖子
- 3271
|
本帖最后由 禾西 于 2010-9-13 06:21 编辑
從左至右,從上至下。
hash = {自身=>[前置1,前置2]}
因為hash的keys不可靠,因此可能要套一個用來排序的index- win_width = 100 #窗口寬度
- index = [ 1 , 2 , 3 , 5 , 4 , 6 ]
- hash = {1=>[0],2=>[1],3=>[1],5=>[1],4=>[2,3],6=>[3]}
- yy = {}
- xx = {}
- layer = []
- for i in index
- deep = 0
- value = hash[i]
- while value != [0]
- deep += 1
- key = value[0]
- value = hash[key]
- end
- yy[i] = deep
- layer[deep] ||= 1
- layer[deep] += 1
- end
- fill = [1,0] #填充表,記錄現在這層的填充狀況。fill[0] 是 x,fill[1] 是 y,y是層次。爲甚麼從1開始?你懂的……
- for i in index
- if fill[1] != yy[i]
- fill[0] = 1
- fill[1] = yy[i]
- end
- xx[i] = win_width / layer[ yy[i] ] * fill[0]
- fill[0] += 1
- end
- for i in index
- p i,yy[i],xx[i]
- end
复制代码 |
|