Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for Numbers Factory by UFO665
# migrated from python 2.7
from functools import reduce
def multipliers(n):
lstRes = []
i = 2
while i * i <= n:
if n % i == 0:
lstRes.append(i)
n /= i
else:
i += 1
if n > 1:
lstRes.append(n)
return lstRes
def find(lst, bReverse):
iCur = 0
if any(mul > 9 for mul in lst):
return 0
while iCur < len(lst) - 1:
iCount = 0
iOffset = iCur if bReverse else 0
iMul = lst[iOffset + iCount]
while iMul < 10 and iOffset + iCount < len(lst) - 1:
iCount += 1
iMul *= lst[iOffset + iCount]
if iMul < 10:
iCount += 1
if iCount:
lst = sorted([reduce(lambda res, x: res * x, lst[iOffset:iOffset + iCount], 1)] \
+ lst[:iOffset] + lst[iOffset + iCount:], reverse=bReverse)
iCur += 1
return int("".join(str(digit) for digit in sorted(lst)))
def checkio(number):
lstMultipliers = multipliers(number)
return min(find(lstMultipliers, False), find(sorted(lstMultipliers, reverse=True), True))
March 11, 2016