
def is_concatenated_product_9_pandigital(n):
    validation_array = [0 for _ in range(9)]
    result = ""
    total_length = 0
    for i in range(1, 10):
        current_product = str(i * n)
        for d in current_product:
            if d == "0":
                return False
            index = ord(d) - 49
            validation_array[index] += 1
            if validation_array[index] > 1:
                return False
        total_length += len(current_product)
        result += current_product
        if total_length == 9:
            return result

        if total_length > 9:
            return False
    raise Exception("We should not get here.")


def euler_038():
    r = []
    for i in range(10000):
        p = is_concatenated_product_9_pandigital(i)
        if p:
            r.append(int(p))
    return max(r)


if __name__ == "__main__":
    print("e038.py: " + str(euler_038()))
    assert(euler_038() == 932718654)
