コード例 #1
0
ファイル: 026.py プロジェクト: christian-oudard/project_euler
    []
    >>> rep_digits(6)
    [6]
    >>> rep_digits(7)
    [1, 4, 2, 8, 5, 7]
    >>> rep_digits(8)
    []
    >>> rep_digits(9)
    [1]
    >>> rep_digits(10)
    []
    """
    digit_list = []
    seen_pairs = set()
    order = base
    while True:
        digit, rem = pair = divmod(order, n)
        if pair == (0, 0):
            return [] # Exact division, no repeating digits.
        # Check if we've seen this digit and remainder before. If so, we've
        # found the repetition, so return.
        if pair in seen_pairs:
            i = digit_list.index(pair)
            return [d for d, r in digit_list[i:]]
        # Mark the digit as seen, and go to the next higher order.
        seen_pairs.add(pair)
        digit_list.append(pair)
        order = rem * base

print(max_key((n, len(rep_digits(n))) for n in range(1, 1000)))