(Ruby)#需要1.9版+
counting_numbers=枚举器.new-do|yielder|
(0..1.0/0).each do | number|
屈服值
结束
结束
def trans_mult(事务处理,事务处理)
trans_ret=数组新建
0.最多(事务长度-1)do|索引|
trans_ret.push(transa[transb[index]])
结束
返回trans_ret
结束
定义lolipop(trans)
trans_hash={}
trans_hash[trans.clone]=0
索引=1
trans_current=trans_mult(trans,trans)
而trans_hash[trans_current]==零
trans_hash[trans_current.clone]=索引
索引=索引+1
trans_current=trans_mult(trans_courrent,trans)
结束
cycle_length=trans_hash.size-trans_散列[trans_current]
return[trans_hash.size,cycle_length]
结束
1.最多(10)个do|索引|
tran_size=索引
histo_hash={}
counting_numbers.take(tran_size).repatedpermutation(tran_sze).each{|x|
大小,周期长度=lolipop(x)
#tail_length=大小-周期_长度
if(histor_hash[size-cycle_length]==nil)
histor_hash[size-cycle_length]=1
其他的
histor_hash[size-cycle_length]=历史哈希[size-cycle_longth]+1
结束
}
放置“#{tran_size}|”+histor_hash.inspect
结束