class Range
def coerce(n)
case caller[0].match(/`(.*)'/)[1]
when "-"
[self.class.new(-last, -first, exclude_end?), -n]
else
[self, n]
end
end
def +(n); first+n..last+n end
def -(n); first-n..last-n end
def *(n); (first*n..last*n).step(n) end
end
module Enumerable
def squared
map{ |x| x**2 }
end
def sum
inject(0,&:+)
end
end
p (6 + (1..12)).squared.sum
p (6 - (1..12)).squared.sum
p (6 * (1..12)).squared.sum
p ((1..12) + 6).squared.sum
p 6 - (1..12)
p (1..12) - 6
p ((1..12) - 6).squared.sum
p ((1..12) * 6).squared.sum
p ((1..12).squared * 36).sum
Y2xhc3MgUmFuZ2UKCWRlZiBjb2VyY2UobikKCQljYXNlIGNhbGxlclswXS5tYXRjaCgvYCguKiknLylbMV0KCQl3aGVuICItIgoJCQlbc2VsZi5jbGFzcy5uZXcoLWxhc3QsIC1maXJzdCwgZXhjbHVkZV9lbmQ/KSwgLW5dCgkJZWxzZQoJCQlbc2VsZiwgbl0KCQllbmQKCWVuZAoKCWRlZiArKG4pOyBmaXJzdCtuLi5sYXN0K24gZW5kCglkZWYgLShuKTsgZmlyc3Qtbi4ubGFzdC1uIGVuZAoJZGVmICoobik7IChmaXJzdCpuLi5sYXN0Km4pLnN0ZXAobikgZW5kCmVuZAoKbW9kdWxlIEVudW1lcmFibGUKCWRlZiBzcXVhcmVkCgkJbWFweyB8eHwgeCoqMiB9CgllbmQKCglkZWYgc3VtCgkJaW5qZWN0KDAsJjorKQoJZW5kCmVuZAoKcCAoNiArICgxLi4xMikpLnNxdWFyZWQuc3VtCnAgKDYgLSAoMS4uMTIpKS5zcXVhcmVkLnN1bQpwICg2ICogKDEuLjEyKSkuc3F1YXJlZC5zdW0KcCAoKDEuLjEyKSArIDYpLnNxdWFyZWQuc3VtCnAgNiAtICgxLi4xMikKcCAoMS4uMTIpIC0gNgpwICgoMS4uMTIpIC0gNikuc3F1YXJlZC5zdW0KcCAoKDEuLjEyKSAqIDYpLnNxdWFyZWQuc3VtCnAgKCgxLi4xMikuc3F1YXJlZCAqIDM2KS5zdW0=