Untitled

 avatar
unknown
python
2 years ago
811 B
6
Indexable
import time

results = []


def recursion(digit, initial, candidate, n):
    c = candidate

    if digit < 0:
        if sum([pow(int(d), n) for d in str(candidate)]) == candidate:
            results.append(candidate)
        return

    if digit == 0:
        recursion(digit=digit - 1, initial=0, candidate=candidate + initial * pow(digit, n), n=n)

    if digit > 0:
        for x in range(initial + 1):
            recursion(digit=digit - 1, initial=initial - x, candidate=c, n=n)
            if x != initial:
                c += pow(digit, n)


if __name__ == '__main__':
    # Dwse input
    input_N = 8

    start = time.time()
    recursion.counter = 0
    recursion(9, input_N, 0, input_N)
    end = time.time()
    print(f'Wall time passed: {end - start}s')
    print('Results:')
    print(results)
Editor is loading...