I will share my algorithm just for the heck of it and to see if you see any problem.
Underlying theory: Divisible by 15 == divisible by 3 and divisible by 5 If a number is divisible by 3 any rearrangement of its digits is also divisible by 3. Therefore to get the largest number, put the digits in descending order. If the number is not divisible by 3 it can be made divisible by 3 by removing one or 2 non-multiple-of-3 digits To be divisible by 5 the rightmost digit must be 0 or 5. If it is neither then a 5 must be moved from the interior to the end. s = the test case input If there are no '0's and no '5's in s then impossible. Convert s (string) to a list, sort it, reverse it. If rightmost digit is not '0' or '5', remove a '5' from the list (we will append it at checkout) On a "parallel path": i = int(s) # make numeric r = i % 3 # get modulo if r == 0 # divisible by 3 (regardless of the order of the digits) proceed to checkout else attempt to remove one or two digits to bring the modulo to 0 if possible remove just 1 digit (the lower the better) (the candidates are, for r ==1-1,4,7 r==2-2,5,8) otherwise if possible remove 2 digits (the lower the better) (the candidates are, for r ==2-1,4,7 r==1-2,5,8) otherwise impossible checkout: if we removed a '5' from the list, append it join and print the list -- Bob Gailer 919-636-4239 Chapel Hill, NC _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor