コード例 #1
0
def test(number, end=2):
    number_digits = set(num2digits(number))
    for x in range(2, end + 1):
        multiplied = number * x
        multiplied_digits = set(num2digits(multiplied))
        if not number_digits == multiplied_digits:
            return False
    return True
コード例 #2
0
def is_palindrome(number):
    digits = num2digits(number)
    size = len(digits)
    for i in range(size // 2):
        if digits[i] != digits[size - i - 1]:
            return False
    return True
コード例 #3
0
def pandigital(num, digitsNumber=9):
    digits = []
    multiplier = 1
    while len(digits) < digitsNumber:
        multiplied = num * multiplier
        digits.extend(num2digits(multiplied))
        multiplier += 1
    return digits
コード例 #4
0
 def permute(seed):
     seedDigits = num2digits(seed)
     legalDigits = list(set(range(1, 10)).difference(seedDigits))
     legalDigits.sort(reverse=True)
     for i in legalDigits:
         yield seed * 10 + i
コード例 #5
0
'''
A googol (10100) is a massive number: one followed by one-hundred zeros; 100100 is almost unimaginably large:
one followed by two-hundred zeros. Despite their size, the sum of the digits in each number is only 1.

Considering natural numbers of the form, ab, where a, b < 100, what is the maximum digital sum?
'''
from src.utils.digits import num2digits

max_sum = -1
for i in reversed(range(100)):
    if i % 10 == 0:
        continue
    for j in reversed(range(100)):
        digits_sum = sum(map(int, num2digits(i**j)))
        if digits_sum > max_sum:
            max_sum = digits_sum
print(max_sum)
コード例 #6
0
def reverse_add(number):
    digits = num2digits(number)
    digits.reverse()
    reversed_number = digits2num(digits)
    return number + reversed_number
コード例 #7
0
def digit_gen():
    current = 1
    while True:
        for digit in num2digits(current):
            yield digit
        current += 1