def isHexagonalNumber(self, n): """Determine whether n is hexagonal number. Return False if 'n' is not hexagonal number, else return the position of 'n' in the hexagonal number sequence. Arguments: n -- input number """ delta = math.sqrt(8 * n + 1) if integer.isInt(delta): x = (delta + 1) / 4 if integer.isInt(x) and x > 0: return int(x) else: return False
def isTriangleNumber(self, n): """Determine whether is triangle number. Return False if 'n' is not triangle number, else return the position of 'n' in the triangle number sequence. Arguments: n -- input number """ delta = math.sqrt(8 * n + 1) if integer.isInt(delta): x = (delta / 2) - 0.5 if integer.isInt(x) and x > 0: return int(x) else: return False
def __init__(self, start=2): """Arguments: start -- the number starts from (default 2) """ if integer.isInt(start) and start >= 2: self.gen = start self.start = start else: raise ValueError('Start number must be an integer and not less than 2.')
def numToDigitArray(num): """Return an array of int which represent the number by digit. Arguments: num -- input number """ if integer.isInt(num): digitArray = [] strArray = str(num) for s in strArray: digitArray.append(int(s)) return digitArray else: raise ValueError("Number must be integer.")
def reset(self, start=None): """Reset generator. Arguments: start -- if not set, reset to the start number which initialized with (default None) """ if start is None: self.gen = self.start else: if integer.isInt(start) and start >= 2: self.gen = start self.start = start else: raise ValueError('Start number must be an integer and not less than 2.')
def numToShortDigitArray(num, digitArray): """Parse number into provided digitArray. If the length of digitArray is smaller than the length of num, then only last fitable digits will be filled into the array. Arguments: num -- input number digitArray -- digit array that needed to be filled """ if integer.isInt(num): strArray = str(num) rStrArray = strArray[::-1] numLength = len(strArray) digitLength = len(digitArray) for i in xrange(0, numLength): if i < digitLength: digitArray[digitLength - i - 1] = int(rStrArray[i]) else: raise ValueError("Number must be integer.")