加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 taroxd 于 2015-1-11 14:26 编辑
def Σ(*°w°) first = °w°.shift proc = block_given? ? Proc.new : ->(e) { e } if first.kind_of?(Enumerable) && °w°.empty? first.map(&proc).inject(:+) else °w°.inject(proc.(first)) {|a, e| a + proc.(e) } end end alias ∑ Σ ∑ = Σ = method(:Σ) sym2arr = ->(sym, *) { sym.to_s.chars.map(&:ord) } Object.define_singleton_method(:const_missing, sym2arr) define_singleton_method(:method_missing, sym2arr) Σ(1, 2, 3) #=> 6 Σ[1, 2, 3] #=> 6 Σ(1..100) #=> 5050 Σ(1..100) {|i| i * i } #=> 338350 Σ(*°w°) #=> 471 Σ(´□`) #=> 75157 Σ(*°∀°) #=> 9056
def Σ(*°w°)
first = °w°.shift
proc = block_given? ? Proc.new : ->(e) { e }
if first.kind_of?(Enumerable) && °w°.empty?
first.map(&proc).inject(:+)
else
°w°.inject(proc.(first)) {|a, e| a + proc.(e) }
end
end
alias ∑ Σ
∑ = Σ = method(:Σ)
sym2arr = ->(sym, *) { sym.to_s.chars.map(&:ord) }
Object.define_singleton_method(:const_missing, sym2arr)
define_singleton_method(:method_missing, sym2arr)
Σ(1, 2, 3) #=> 6
Σ[1, 2, 3] #=> 6
Σ(1..100) #=> 5050
Σ(1..100) {|i| i * i } #=> 338350
Σ(*°w°) #=> 471
Σ(´□`) #=> 75157
Σ(*°∀°) #=> 9056
|