codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
""" interval.py My submission for Programming Praxis's "Interval Arithmetic" exercise; see http://programmingpraxis.com/2010/12/21/interval-arithmetic/ NOTE: requires the fractions module. GRE, 12/21/10 """ from fractions import Fraction class Interval(object): def __init__(self, x, y, centerRep = False): self.xy = (x, y) self.centerRep = centerRep return def __repr__(self): if not self.centerRep: return "Interval [%s, %s]" % (self.xy[0], self.xy[1]) else: return "Interval of width %s centered at %s" % (self.xy[1], self.xy[0]) def toCenter(self): newX = Fraction((self.xy[0] + self.xy[1]), 2) newY = Fraction((self.xy[1] - self.xy[0]), 2) return Interval(newX, newY, centerRep = True) def fromCenter(self): newX = self.xy[0] - self.xy[1] newY = self.xy[0] + self.xy[1] return Interval(newX, newY, centerRep = False) def __add__(self, other, centerRep = False): s = self.fromCenter() o = other.fromCenter() x = s.xy[0] + o.xy[0] y = s.xy[1] + o.xy[1] return Interval(x, y, centerRep) def __sub__(self, other, centerRep = False): s = self.fromCenter() o = other.fromCenter() x = s.xy[0] - o.xy[0] y = s.xy[1] - o.xy[1] return Interval(x, y, centerRep) def __mul__(self, other, centerRep = False): s = self.fromCenter() o = other.fromCenter() x = s.xy[0] * o.xy[0] y = s.xy[1] * o.xy[1] return Interval(x, y, centerRep) def __div__(self, other, centerRep = False): s = self.fromCenter() o = other.fromCenter() try: entries = [Fraction(a, b) for a in self.xy for b in other.xy] return Interval(min(entries), max(entries), centerRep) except ZeroDivisionError: print "Error: divison by zero in second Interval" return if __name__ == "__main__": X = Interval(1, 2) Y = Interval(3, 4) print X + Y print X - Y print X * Y print X / Y C = X.toCenter() print C print C.fromCenter()
Private
[
?
]
Run code
Submit