Skip to content

Instantly share code, notes, and snippets.

@ttowncompiled
Last active September 15, 2018 13:10
Show Gist options
  • Save ttowncompiled/cc4a19e54e2d969b1bf385e4cfec9afa to your computer and use it in GitHub Desktop.
Save ttowncompiled/cc4a19e54e2d969b1bf385e4cfec9afa to your computer and use it in GitHub Desktop.
Adds a set of methods to classes of Ruby to make them more applicable to algorithmic and mathematical challenges.
class Array
def prod
if self.length == 0
return 0
end
z = 1
self.each do |a_i|
z *= a_i
end
return z
end
end
class Integer
def fact
if self <= 0
return 0
end
z = 1
(2..self).each do |i|
z *= i
end
return z
end
def prime?
if self < 2
return false
end
if self == 2
return true
end
if self % 2 == 0
return false
end
d_i = 3
while d_i <= Math.sqrt(self)
if self % d_i == 0
return false
end
d_i += 2
end
return true
end
end
class Range
def exclude_begin
if self.size == 0
return nil
end
if self.exclude_end?
return ((self.begin + 1)...self.end)
else
return ((self.begin + 1)..self.end)
end
end
def exclude_end
if self.size == 0
return nil
end
return (self.begin...self.end)
end
def prod
if self.size == 0
return nil
end
z = 1
self.each do |i|
z *= i
end
return z
end
def sum
if self.size == 0
return nil
elsif self.size == 1
return self.begin
end
b = self.begin
e = self.end
if b.is_a?(Integer) && e.is_a?(Integer)
e -= 1 if self.exclusive_end?
n = e - b + 1
return (b + e) * n / 2
elsif
return self.reduce{ |a, b| a + b }
end
end
end
class String
def palindrome?
if self.size <= 1
return true
end
i, j = 0, self.size-1
while i < j
if self[i] != self[j]
return false
end
i, j = i+1, j-1
end
return true
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment