A student talked about Kaprekar’s constant (6174) during their my favorite presentation.
Really cool.
Steps (from wikipedia):
Here’s an example (also from wikipedia):
For example, choose 3524:
5432 – 2345 = 3087
8730 – 0378 = 8352
8532 – 2358 = 6174
Fun right? Also fun to program, here’s the python code that tries every number from 1000 to 10000, and counts how many steps it takes to get to 6174 and puts the results in a csv file:
def largest(nstr):
if (len(nstr) == 0):
return ""
elif (len(nstr)==4) and (nstr[0] == nstr[1] == nstr[2] == nstr[3]):
return "7641"
digit = -1
index = 0
for i in range(0,len(nstr)):
if (digit < int(nstr[i])):
digit = int(nstr[i])
index = i
return str(digit) + largest(nstr[0:index]+nstr[index+1:len(nstr)])
def kaprekarSteps(n):
count = 0
nstr = str(n)
while (n != 6174):
l = int(largest(str(nstr)))
lstring = str(l)
s = int(lstring[::-1])
n = l - s
nstr = str(n)
while (len(nstr) < 4):
nstr = "0" + nstr
count += 1
return count
f = open('kaprekar.csv','w')
c = 1000
while (c < 10000):
f.write(str(c)+ "," + str(kaprekarSteps(c)) + "\n")
c += 1
f.close()