Skip to content

Commit 1a95ebe

Browse files
authored
Not done: Commit seq
1 parent 8225dda commit 1a95ebe

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

cyaron/sequence.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from .utils import *
2+
3+
class Sequence:
4+
"""Class Sequence: the tool class for sequences.
5+
"""
6+
7+
def __init__(self, formula, initial_values=[]):
8+
"""__init__(self, formula, initial_values=[]) -> None
9+
Create a sequence object.
10+
int formula(int, function) -> the formula function ...
11+
"""
12+
self.formula = formula
13+
if list_like(initial_values):
14+
self.values = {k: v for (k, v) in enumerate(initial_values)}
15+
elif isinstance(initial_values, dict):
16+
self.values = initial_values
17+
else:
18+
raise Exception("Initial_values must be either a list/tuple or a dict.")
19+
20+
def __get_one(self, i):
21+
if i in self.values:
22+
return self.values[i]
23+
24+
self.values[i] = self.formula(i, self.__get_one)
25+
return self.values[i]
26+
27+
def get(self, left_range, right_range=None):
28+
if right_range is None:
29+
return self.__get_one(left_range)
30+
31+
return [self.__get_one(i) for i in range(left_range, right_range+1)]

0 commit comments

Comments
 (0)