Just a simple substitution routine.
#Euler79 class Problem79: def __init__(self, list): self.list = list def Solution(self): code = [0,1,2,3,4,5,6,7,8,9] used = [0,1,2,3,4,5,6,7,8,9] for n in self.list: d0 = int(str(n)[0]) if d0 in used: used.pop(used.index(d0)) i0 = code.index(d0) d1 = int(str(n)[1]) if d1 in used: used.pop(used.index(d1)) i1 = code.index(d1) d2 = int(str(n)[2]) if d2 in used: used.pop(used.index(d2)) i2 = code.index(d2) print d0, d1, d2, i0, i1, i2, used, code, if i1 < i0: code.insert(i0+1, d1) code.pop(i1) if i2 < i1: code.insert(i1+1, d2) code.pop(i2) print code for n in used: code.pop(code.index(n)) answer = "" for n in code: answer += str(n) return "Answer = " + answer if __name__ == '__main__': P = Problem79([319,680,180,690,129,620,762,689,762,318,368,710,720,710,629,168,160,689, 716,731,736,729,316,729,729,710,769,290,719,680,318,389,162,289,162,718, 729,319,790,680,890,362,319,760,316,729,380,319,728,716]) print P.Solution()