-
Notifications
You must be signed in to change notification settings - Fork 0
/
EvenSteps.py
34 lines (29 loc) · 1.27 KB
/
EvenSteps.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class EvenSteps:
"""
Each Even Step has its own object.
This class holds a dictionary of Remainder objects, remainder pairs, alpha.
Strangely, there are several remainders that come in pairs:
remainder, 2*remainder+1. This class collects these pairs for ease of use.
Once a number has been sequenced, the next lowest number can be found by:
next lowest num = alpha*num + 1. Alpha is based on even/odd steps. Beta is
based on the specific sequence and is stored in the Remainder object.
"""
def __init__(self, even_steps, odd_steps):
"""
:param even_steps:
:param odd_steps:
:return:
"""
self.even_steps = even_steps
self.odd_steps = odd_steps
# Completed is if the sequence has calculated beyond 2 ** even steps
self.completed = False
# Calculates alpha = 3^odd_steps/2^even_steps
# Part of the equation: next lowest num = alpha * num + beta.
# Beta is owned by the specific remainder and differs based on sequence
self.alpha = 3.0 ** self.odd_steps / 2.0 ** self.even_steps
@classmethod
def dict_init(cls, even_dict):
even = cls(even_dict['even'], even_dict['odd'])
even.completed = even_dict['completed']
return even