(使用上の注意)いろいろめちゃくちゃなのはきにしてはならない
090208
### 日付の差を返す関数 ###
#a = "2005-02-11"
#b = "2004-05-12"
def DayDifference(a, b)
begin
return (Date.new(a[0..3].to_i,a[5..6].to_i,a[8..9].to_i) - Date.new(b[0..3].to_i,b[5..6].to_i,b[8..9].to_i)).to_i
rescue
if a==""
return (Date.new(2005, 2, 11) - Date.new(b[0..3].to_i,b[5..6].to_i,b[8..9].to_i)).to_i
elsif b==""
return (Date.new(a[0..3].to_i,a[5..6].to_i,a[8..9].to_i) - Date.new(2005, 2, 11)).to_i
else
p a
p b
return 0
end
end
end
def TimeDifference(day1, day2)
days = (day2 - day1).divmod(24*60*60) #=> [2.0, 45000.0]
hours = days[1].divmod(60*60) #=> [12.0, 1800.0]
mins = hours[1].divmod(60) #=> [30.0, 0.0]
puts "#{days[0].to_i} d + #{hours[0].to_i} h + #{mins[0].to_i} m + #{mins[1]} seconds " + day2.to_s#=> "2 days + 12 hours + 30 minutes + 0.0 seconds"
end
def AEMI(sum, val1, val2, cooc)
sumf = sum.prec_f
val1f = val1.prec_f
val2f = val2.prec_f
coocf = cooc.prec_f
mi1 = (coocf / sumf) * Math.log10(coocf * sumf / (val1f * val2f))
if (sumf + coocf - val1 - val2)< 0.0 then
mi2 = (sumf + coocf - val1 - val2) / sumf * Math.log10((sumf + coocf - val1 - val2) * sumf / ((sumf - val1f) * (sumf - val2f)))
else
mi2 = 0.0
end
if (val1f - coocf)< 0.0 then
puts mi3 = (val1f - coocf) / sumf * Math.log10((val1f - coocf) * sumf / (val1f * (sumf - val2f)))
else
mi3 = 0.0
end
if (val2f - coocf)< 0.0 then
puts mi4 = (val2f - coocf) / sumf * (Math.log10((val2f - coocf) * sumf / (val2f * (sumf - val1f))))
else
mi4= 0.0
end
return mi1 + mi2 - mi3 - mi4
end
#小さい方を返す関数
def min(a,b)
if a<b
return a
else
return b
end
end
#大きい方を返す関数
def max(a,b)
if a>b
return a
else
return b
end
end
#ハッシュカウンター
def hashcount(hash, keyword)
if hash.key?(keyword)
return hash[keyword] = hash[keyword] + 1
else
return 1
end
end
最終更新:2009年02月08日 20:17