Skip to content

Instantly share code, notes, and snippets.

@Day0Dreamer
Created November 5, 2018 12:06
Show Gist options
  • Save Day0Dreamer/957b88a9eecbbe3cd56c316e207c1c8e to your computer and use it in GitHub Desktop.
Save Day0Dreamer/957b88a9eecbbe3cd56c316e207c1c8e to your computer and use it in GitHub Desktop.
class KaperkarConstant(object):
_run = 0
def __init__(self, starting_number):
self._starting_n = None
self._first_n = None
self._second_n = None
self._resulting_n = None
self.starting_n = starting_number
self.rearrange_n()
self.get_difference()
KaperkarConstant._run += 1
print('#{}:{} -> {}'.format(KaperkarConstant._run, self.starting_n, self._resulting_n))
if not self.starting_n == self._resulting_n:
self.child = KaperkarConstant(self._resulting_n)
@property
def starting_n(self):
"""Starting 4 digit number."""
return self._starting_n
@starting_n.setter
def starting_n(self, value):
# Make it int or crash
if isinstance(value, float) or isinstance(value, str) or isinstance(value, int):
value = int(value)
else:
raise TypeError('Got to be int or float or str')
if abs(value) > 9999:
raise ValueError('Only 4 character long numbers are allowed')
self._starting_n = str(abs(value)).zfill(4)
def rearrange_n(self):
self._first_n = self.starting_n[3] + self.starting_n[0] + self.starting_n[1] + self.starting_n[2]
self._second_n = self.starting_n[1] + self.starting_n[2] + self.starting_n[0] + self.starting_n[3]
def get_difference(self):
self._first_n = int(self._first_n)
self._second_n = int(self._second_n)
self._resulting_n = max(self._first_n, self._second_n) - min(self._first_n, self._second_n)
kc = KaperkarConstant(7339)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment