def largest_digit(number):
return int(max(str(check_num(number))))
def desc_digits(number):
return int(''.join(sorted(str(check_num(number)))[::-1]))
def asc_digits(number):
return int(''.join(sorted(str(check_num(number)))))
def kaprekar(number, counter=0):
if number == 6174:
return counter
number = desc_digits(number) - asc_digits(number)
return counter + 1 if number == 6174 else kaprekar(number, counter + 1)
def check_num(number):
if len(str(number)) > 4:
raise SystemExit('You have passed a number with more than 4 digits, and a kidney stone.')
while len(str(number)) < 4:
number = '0' + str(number)
return number
print("Challenge Group")
for ii in [1234, 3253, 9800, 3333, 120]:
print(largest_digit(ii))
print("\nBonus 1 Group")
for ii in [1234, 3253, 9800, 3333, 120]:
print(desc_digits(ii))
print("\nBonus 2 Group")
for ii in [6589, 5455, 6174]:
print(kaprekar(ii))
ZGVmIGxhcmdlc3RfZGlnaXQobnVtYmVyKToKICAgIHJldHVybiBpbnQobWF4KHN0cihjaGVja19udW0obnVtYmVyKSkpKQoKZGVmIGRlc2NfZGlnaXRzKG51bWJlcik6CiAgICByZXR1cm4gaW50KCcnLmpvaW4oc29ydGVkKHN0cihjaGVja19udW0obnVtYmVyKSkpWzo6LTFdKSkKCQpkZWYgYXNjX2RpZ2l0cyhudW1iZXIpOgogICAgcmV0dXJuIGludCgnJy5qb2luKHNvcnRlZChzdHIoY2hlY2tfbnVtKG51bWJlcikpKSkpCgkKZGVmIGthcHJla2FyKG51bWJlciwgY291bnRlcj0wKToKICAgIGlmIG51bWJlciA9PSA2MTc0OgogICAgICAgIHJldHVybiBjb3VudGVyCiAgICBudW1iZXIgPSBkZXNjX2RpZ2l0cyhudW1iZXIpIC0gYXNjX2RpZ2l0cyhudW1iZXIpCiAgICByZXR1cm4gY291bnRlciArIDEgaWYgbnVtYmVyID09IDYxNzQgZWxzZSBrYXByZWthcihudW1iZXIsIGNvdW50ZXIgKyAxKQoKZGVmIGNoZWNrX251bShudW1iZXIpOgogICAgaWYgbGVuKHN0cihudW1iZXIpKSA+IDQ6CiAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgnWW91IGhhdmUgcGFzc2VkIGEgbnVtYmVyIHdpdGggbW9yZSB0aGFuIDQgZGlnaXRzLCBhbmQgYSBraWRuZXkgc3RvbmUuJykKICAgIHdoaWxlIGxlbihzdHIobnVtYmVyKSkgPCA0OgogICAgICAgIG51bWJlciA9ICcwJyArIHN0cihudW1iZXIpCiAgICByZXR1cm4gbnVtYmVyCgpwcmludCgiQ2hhbGxlbmdlIEdyb3VwIikKZm9yIGlpIGluIFsxMjM0LCAzMjUzLCA5ODAwLCAzMzMzLCAxMjBdOgogICAgcHJpbnQobGFyZ2VzdF9kaWdpdChpaSkpCnByaW50KCJcbkJvbnVzIDEgR3JvdXAiKQpmb3IgaWkgaW4gWzEyMzQsIDMyNTMsIDk4MDAsIDMzMzMsIDEyMF06CiAgICBwcmludChkZXNjX2RpZ2l0cyhpaSkpCnByaW50KCJcbkJvbnVzIDIgR3JvdXAiKQpmb3IgaWkgaW4gWzY1ODksIDU0NTUsIDYxNzRdOgogICAgcHJpbnQoa2FwcmVrYXIoaWkpKQ==