2006年11月29日

nifty – 圆角CSS
iframe sandboxing – 还木看

2006年11月16日

如对[1,2,3],将得到[123,132,213,231,312,321]
结果数字不重复。
思路:
x([1,2,3])  ->
 y(1,x([2,3])) + y(2,x([1,3])) + y(3,x([1,2]))

y(1,x[2,3]) ->
[12,13]

代码:

arr = [1,2,3]

def y(num,arr)
  arr.collect{|it| num.to_s + it.to_s }
end

def x(arr)
  return arr.dup if arr.size==1
  result = []
  arr.each_index do |i|
    arr1 = arr.dup
    num = arr1.delete_at(i)
    result.concat(y(num,x(arr1)))
  end
  return result
end

def z(arr)
  arr.uniq.collect{|it| it.to_i}
end

require ‘pp’
pp z(x(arr))

2006年11月14日

materials = (0..9).to_a
result = 0
(0..5).each{|i| result += materials.delete_at(rand(materials.size))* 10**i }
puts result%10000

再省两行代码的实现是:

materials = (0..9).to_a
puts (0..5).inject(0){ |n,i|  n + materials.delete_at(rand(materials.size)) * 10**i } % 10000

思路跟昨天Ttrail说的一样。
用一个数组 materials = (0..9).to_a 存放可以取的数,循环从里面随机取,取完就从数组中删除。
为了保证千位数不是0,我没有特意判断,而是多循环了一次(5次),将最终结果 % 10000截到。
每次的随机数在 0至数组.size之间(不包括),即能随机取到一个合法的组数索引。

– 后记:对一个五位数取模10000就能得到四位数?我真蠢~