#(红宝石1.9+)counting_numbers=枚举器.new-do|yielder|(0..1.0/0).each do | number|屈服值结束结束def trans_mult(事务处理,事务处理)trans_ret=排列新0.最多(事务长度-1)do|索引|事务处理推送(事务处理[事务处理[索引]])结束返回trans_ret结束定义lolipop(trans)trans_hash={}trans_hash[trans.clone]=0索引=1trans_current=trans_mult(trans,trans)而trans_hash[trans_current]==零trans_hash[trans_current.clone]=索引#将trans_current.inspect索引=索引+1trans_current=trans_mult(trans_current,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(histo_hash[cycle_length]==nil)histo_hash[cycle_length]=1其他的histo_hash[cycle_length]=历史散列[cycle_ngth]+1结束}放置“#{trans_size}|”+histo_hash.inspect结束