From ed17353d05d6164b5822984b0f5f0639a0359334 Mon Sep 17 00:00:00 2001 From: Andrey Prokhorov Date: Wed, 28 Aug 2019 16:12:38 +0300 Subject: [PATCH] Add 'sba.py' --- sba.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 sba.py diff --git a/sba.py b/sba.py new file mode 100644 index 0000000..fb82db2 --- /dev/null +++ b/sba.py @@ -0,0 +1,51 @@ +import sys + +class SBA: + slots = ('_arr', '_size', '_memsize') + + def __init__(self, size): + if not isinstance(size, int): + raise ValueError("Size should be integer!") + self._arr = 1<= self._size: + raise ValueError("Range out of boundaries!") + if (self._arr & 1< 0: + return 1 + return 0 + + def __setitem__(self, sliced, val): + if not isinstance(sliced, int): + raise ValueError("Only integers accepted as position!") + if not isinstance(val, (int, bool)): + raise ValueError("Values accepted as int or bool") + if sliced >= self._size: + raise ValueError("Range out of boundaries!") + + if isinstance(val, bool): + v = {True: 1, False: 0}[val] + else: + if 0 > val > 1: + raise ValueError("Value is out of range!") + v = val + self._arr = self._arr | v<