Exemple #1
0
def containsOnlyDigitsOperator(n, k):
    if isinstance(k, (mpf, int, float)):
        k = getMPFIntegerAsString(k)

    for c in getMPFIntegerAsString(n):
        if c not in k:
            return 0

    return 1
Exemple #2
0
def containsAnyDigitsOperator(n, k):
    n = getMPFIntegerAsString(n)

    if isinstance(k, (mpf, int, float)):
        k = getMPFIntegerAsString(k)

    for c in k:
        if c in n:
            return 1

    return 0
Exemple #3
0
def isDigitalPermutationOperator(n, k):
    str1 = getMPFIntegerAsString(n)
    str2 = getMPFIntegerAsString(k)

    if len(str1) != len(str2):
        return 0

    if sorted(str1) != sorted(str2):
        return 0

    return 1
Exemple #4
0
def countDigitsOperator(n, k):
    n = getMPFIntegerAsString(n)

    if isinstance(k, (mpf, int, float)):
        k = set([char for char in getMPFIntegerAsString(k)])

    result = 0

    for c in k:
        result += n.count(c)

    return result
Exemple #5
0
def sumDigits(n):
    result = 0

    for c in getMPFIntegerAsString(n):
        result = fadd(result, int(c))

    return result
Exemple #6
0
def isDecreasing(n):
    n = getMPFIntegerAsString(n)

    for i in range(1, len(n)):
        if n[i] > n[i - 1]:
            return 0

    return 1
Exemple #7
0
def isPalindrome(n):
    result = getMPFIntegerAsString(n)

    length = len(result)

    for i in range(0, length // 2):
        if result[i] != result[-(i + 1)]:
            return 0

    return 1
Exemple #8
0
def getDigitList(n, dropZeroes=False):
    result = []

    for c in getMPFIntegerAsString(n):
        if dropZeroes and c == '0':
            continue

        result.append(int(c))

    return result
Exemple #9
0
def getCyclicPermutationsOperator(n):
    result = [n]

    n = getMPFIntegerAsString(n)

    for _ in range(len(n) - 1):
        n = n[1:] + n[:1]
        result.append(mpmathify(n))

    return result
Exemple #10
0
def replaceDigitsOperator(n, source, replace):
    n = getMPFIntegerAsString(n)

    if source < 0:
        raise ValueError('source value must be a positive integer')

    if replace < 0:
        raise ValueError('replace value must be a positive integer')

    return mpmathify(n.replace(str(int(source)), str(int(replace))))
Exemple #11
0
def isStepNumber(n):
    if n < 10:
        return 0

    n = getMPFIntegerAsString(n)

    for i in range(1, len(n)):
        if abs(int(n[i]) - int(n[i - 1])) != 1:
            return 0

    return 1
Exemple #12
0
def rotateDigitsRight(n, k):
    if k < 0:
        return rotateDigitsLeft(n, fneg(k))

    n = getMPFIntegerAsString(n)

    if k > len(n):
        fmod(k, len(n))

    rotate = int(k)

    n = n[-rotate:] + n[:-rotate]
    return mpmathify(n)
Exemple #13
0
def isPandigital(n):
    n = getMPFIntegerAsString(n)

    length = len(n)

    if length < 10:
        return 0

    digitsToCheck = string.digits

    for c in digitsToCheck:
        if c not in n:
            return 0

    return 1
Exemple #14
0
def getDecimalDigitList(n, k):
    result = []

    setAccuracy(k)

    digits = floor(log10(n))

    if digits < 0:
        for _ in arange(fsub(fabs(digits), 1)):
            result.append(0)

        k = fsub(k, fsub(fabs(digits), 1))

    value = fmul(n, power(10, fsub(k, fadd(digits, 1))))

    for c in getMPFIntegerAsString(floor(value)):
        result.append(int(c))

    return result
Exemple #15
0
def countDifferentDigitsOperator(n):
    return len(list(set(getMPFIntegerAsString(n))))
Exemple #16
0
def permuteDigitsOperator(n):
    return RPNGenerator.createPermutations(getMPFIntegerAsString(n))
Exemple #17
0
def reverseDigits(n):
    return mpmathify(getMPFIntegerAsString(n)[::-1])
Exemple #18
0
def getRightTruncationsGenerator(n):
    result = getMPFIntegerAsString(n)

    for i in range(len(result), 0, -1):
        yield mpmathify(result[0:i])
Exemple #19
0
def splitNumberByDigits(n):
    n = getMPFIntegerAsString(n)

    split = len(n) // 2

    return mpmathify(n[:split]), mpmathify(n[split:])
Exemple #20
0
def duplicateNumberOperator(n, k):
    if k == 0:
        return 0

    return mpmathify(getMPFIntegerAsString(n) * int(k))
Exemple #21
0
def getLeftTruncationsGenerator(n):
    n = getMPFIntegerAsString(n)

    for i, _ in enumerate(n):
        yield mpmathify(n[i:])