From b20061004c2476a940ebc5ac794c6a13c3586425 Mon Sep 17 00:00:00 2001 From: TurboFen <47735879+TurboFen@users.noreply.github.com> Date: Sat, 21 Mar 2020 19:43:42 +0300 Subject: [PATCH 1/6] Add files via upload --- arraylist.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 arraylist.py diff --git a/arraylist.py b/arraylist.py new file mode 100644 index 0000000..290bf00 --- /dev/null +++ b/arraylist.py @@ -0,0 +1,64 @@ +from array import array + + +class ArrayList: + + def __init__(self, arr): + if type(arr[0]) == int: + self.myarr = array('i', arr) + print("Hell yea!") + if type(arr[0]) == str: + self.myarr = array('u', ) + for a in range(0, len(arr)): + self.myarr.extend(arr[a]) + print("Hell yea!") + if type(arr[0]) == float: + self.myarr = array('f', arr) + print("Hell yea!") + + def __len__(self): + n = 0 + for a in self.myarr: + n = n + 1 + return n + + def __count__(self, perem,ind): + tmp = 0 + for a in range(0, self.__len__()): + if (type(perem) == float): + if round(self.myarr[a], ind) == perem: + tmp = tmp + 1 + else: + if self.myarr[a] == perem: + tmp = tmp + 1 + return tmp + + def __contains__(self, item): + return item in self.myarr + + def __reversed__(self): + return self.myarr[::-1] + + def __index__(self, item): + for a in range(0, self.__len__()): + if self.myarr[a]==item: + return a + + return ValueError + def __getitem__(self, item): + if item > self.__len__(): + return TypeError + else: + return self.myarr[item] + + +mas = (1, 2, 3, 0, 1, 1, 1, 1) +mas2 = (1.253, 2.4, 3.4, 4.4, 1.4, 1.2, 1.2) +mas1 = "hello World" +check = ArrayList(mas) +print(check.__len__()) +print(check.__count__(1,1)) +print(check.__contains__(1)) +print(check.__reversed__()) +print(check.__index__(1)) +print(check.__getitem__(6)) \ No newline at end of file From 2abb8a9b9762eea3a1940bcb8e24c2caa3204e72 Mon Sep 17 00:00:00 2001 From: TurboFen <47735879+TurboFen@users.noreply.github.com> Date: Sun, 22 Mar 2020 21:35:19 +0300 Subject: [PATCH 2/6] Mutable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit реализация протокола Mutable --- arraylist.py | 99 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 85 insertions(+), 14 deletions(-) diff --git a/arraylist.py b/arraylist.py index 290bf00..37a4a7e 100644 --- a/arraylist.py +++ b/arraylist.py @@ -6,15 +6,12 @@ class ArrayList: def __init__(self, arr): if type(arr[0]) == int: self.myarr = array('i', arr) - print("Hell yea!") if type(arr[0]) == str: self.myarr = array('u', ) for a in range(0, len(arr)): self.myarr.extend(arr[a]) - print("Hell yea!") if type(arr[0]) == float: self.myarr = array('f', arr) - print("Hell yea!") def __len__(self): n = 0 @@ -22,10 +19,10 @@ def __len__(self): n = n + 1 return n - def __count__(self, perem,ind): + def __count__(self, perem, ind): tmp = 0 for a in range(0, self.__len__()): - if (type(perem) == float): + if type(perem) == float: if round(self.myarr[a], ind) == perem: tmp = tmp + 1 else: @@ -41,24 +38,98 @@ def __reversed__(self): def __index__(self, item): for a in range(0, self.__len__()): - if self.myarr[a]==item: + if self.myarr[a] == item: return a return ValueError + def __getitem__(self, item): if item > self.__len__(): return TypeError else: return self.myarr[item] + def __iter__(self): + return self.myarr.__iter__() + + def __setitem__(self, key, value): + self.myarr[key] = value + + def __delitem__(self, key): + del self.myarr[key] + + def append(self,value): + self.myarr += array(self.myarr.typecode, [value]) + + def __clear__(self): + for a in range(0, self.myarr.__len__()): + del self.myarr[a] + + def pop(self, key): + a = self.myarr[key] + del self.myarr[key] + return a + + def remove(self, value): + for a in range(0, self.myarr.__len__()): + if self.myarr[a] == value: + del self.myarr[a] + return + return ValueError + + def __extend__(self, arr): + for a in range(0,len(arr)): + self.myarr += array(self.myarr.typecode, [arr[a]]) + + def __insert__(self,key,value): + arr = array(self.myarr.typecode) + for a in range(0,key-1): + arr.append(self.myarr[a]) + arr.append(value) + for a in range(key,self.myarr.__len__()): + arr.append(self.myarr[a]) + self.myarr = arr + + def reverse(self): + arr = array(self.myarr.typecode,) + arr.extend(self.myarr[::-1]) + self.myarr=arr + + + + + + + + -mas = (1, 2, 3, 0, 1, 1, 1, 1) +mas = (1, 2, 3, 0, 1, 1, 2, 1) mas2 = (1.253, 2.4, 3.4, 4.4, 1.4, 1.2, 1.2) mas1 = "hello World" -check = ArrayList(mas) -print(check.__len__()) -print(check.__count__(1,1)) -print(check.__contains__(1)) -print(check.__reversed__()) -print(check.__index__(1)) -print(check.__getitem__(6)) \ No newline at end of file +check = ArrayList(mas1) +# print(check.__len__()) +# print(check.__count__(1,1)) +# print(check.__contains__(1)) +# print(check.__reversed__()) +# print(check.__index__(1)) +# check.__setitem__(0,8) +# print(check.__getitem__(0)) +# check.__delitem__(0) +# print(check[0]) +# print(check.__iter__()) +# check.append("f") +# print(check[11]) +# check.clear() +# print(check[0]) +# print(check.pop(1)) +# print(check[1]) +# check.remove("h") +# print(check[0]) +# mas3=" and you" +# # check.__extend__(mas3) +# # for a in range(check.__len__()): +# # print(check[a]) +# check.__insert__(0,"A") +# for a in range(check.__len__()): +# print(check[a]) +# print (check.__reversed__()) \ No newline at end of file From 50fcfdaf60acbd1d93085807b9d9778e106bfc9b Mon Sep 17 00:00:00 2001 From: TurboFen <47735879+TurboFen@users.noreply.github.com> Date: Wed, 25 Mar 2020 21:40:27 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D1=80=D0=B5=D0=B2=D0=BE=D1=80=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From e3d4aff7649155bde0ae2663d2ae22dcba62799b Mon Sep 17 00:00:00 2001 From: TurboFen <47735879+TurboFen@users.noreply.github.com> Date: Wed, 25 Mar 2020 21:42:25 +0300 Subject: [PATCH 4/6] =?UTF-8?q?=D1=80=D0=B5=D0=B2=D0=BE=D1=80=D0=BA=20?= =?UTF-8?q?=D1=81=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 95e96502044edb6133ae56bc0274384ee1872bc5 Mon Sep 17 00:00:00 2001 From: TurboFen <47735879+TurboFen@users.noreply.github.com> Date: Wed, 25 Mar 2020 21:49:18 +0300 Subject: [PATCH 5/6] =?UTF-8?q?=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20?= =?UTF-8?q?=D1=82=D0=BE=D1=82=20=D1=80=D0=B5=D0=B2=D0=BE=D1=80=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- arraylist.py | 123 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 88 insertions(+), 35 deletions(-) diff --git a/arraylist.py b/arraylist.py index 37a4a7e..4cad30a 100644 --- a/arraylist.py +++ b/arraylist.py @@ -1,15 +1,44 @@ from array import array +class Iter: + + def __init__(self, collections, cursor=-1): + if (cursor < -1) or (cursor > len(collections)): + raise ValueError() + self.collections = collections + self.cursor = cursor + + def __iter__(self): + return self.cursor + + def __next__(self): + if self.cursor + 1 >= len(self.collections): + raise StopIteration() + self.cursor += 1 + + def current(self): + return self.collections[self.cursor] + + def first(self): + self.cursor = -1 + + def previous(self): + if self.cursor + 1 >= len(self.collections): + raise StopIteration() + self.cursor -= 1 + + class ArrayList: def __init__(self, arr): + if type(arr[0]) == int: self.myarr = array('i', arr) if type(arr[0]) == str: self.myarr = array('u', ) for a in range(0, len(arr)): - self.myarr.extend(arr[a]) + self.myarr += array(self.myarr.typecode, [arr[a]]) if type(arr[0]) == float: self.myarr = array('f', arr) @@ -50,7 +79,8 @@ def __getitem__(self, item): return self.myarr[item] def __iter__(self): - return self.myarr.__iter__() + it = Iter(self.myarr) + return it.__iter__() def __setitem__(self, key, value): self.myarr[key] = value @@ -58,49 +88,62 @@ def __setitem__(self, key, value): def __delitem__(self, key): del self.myarr[key] - def append(self,value): + def append(self, value): self.myarr += array(self.myarr.typecode, [value]) def __clear__(self): - for a in range(0, self.myarr.__len__()): - del self.myarr[a] - - def pop(self, key): - a = self.myarr[key] - del self.myarr[key] - return a + self.myarr = self.myarr.typecode + + def pop(self, key=0.1): + if key == 0.1: + value = self.myarr[self.myarr.__len__() - 1] + arr = self.myarr + self.myarr = array(arr.typecode) + for a in range(0, arr.__len__() - 1): + self.myarr += array(arr.typecode, [arr[a]]) + else: + value = self.myarr[key] + arr = self.myarr + self.myarr = array(arr.typecode) + for b in range(0, arr.__len__()): + if b != key: + self.myarr += array(arr.typecode, [arr[b]]) + return value def remove(self, value): - for a in range(0, self.myarr.__len__()): - if self.myarr[a] == value: - del self.myarr[a] - return - return ValueError + arr = self.myarr + self.myarr = array(arr.typecode) + num = 0 + for a in arr: + if (a != value): + self.myarr += array(arr.typecode, [a]) + if (a == value) and (num == 1): + self.myarr += array(arr.typecode, [a]) + if (a == value) and (num == 0): + num = 1 + if num == 0: + return ValueError + else: + return - def __extend__(self, arr): - for a in range(0,len(arr)): + def extend(self, arr): + for a in range(0, len(arr)): self.myarr += array(self.myarr.typecode, [arr[a]]) - def __insert__(self,key,value): + def __insert__(self, key, value): arr = array(self.myarr.typecode) - for a in range(0,key-1): - arr.append(self.myarr[a]) - arr.append(value) - for a in range(key,self.myarr.__len__()): - arr.append(self.myarr[a]) + for a in range(0, key): + arr += array(self.myarr.typecode, [self.myarr[a]]) + arr += array(self.myarr.typecode, [value]) + for a in range(key, self.myarr.__len__()): + arr += array(self.myarr.typecode, [self.myarr[a]]) self.myarr = arr def reverse(self): - arr = array(self.myarr.typecode,) - arr.extend(self.myarr[::-1]) - self.myarr=arr - - - - - - - + arr = array(self.myarr.typecode) + for a in range(self.myarr.__len__() - 1, -1, -1): + arr += array(self.myarr.typecode, [self.myarr[a]]) + self.myarr = arr mas = (1, 2, 3, 0, 1, 1, 2, 1) @@ -119,7 +162,7 @@ def reverse(self): # print(check.__iter__()) # check.append("f") # print(check[11]) -# check.clear() +# check.__clear__() # print(check[0]) # print(check.pop(1)) # print(check[1]) @@ -132,4 +175,14 @@ def reverse(self): # check.__insert__(0,"A") # for a in range(check.__len__()): # print(check[a]) -# print (check.__reversed__()) \ No newline at end of file +# print (check.__reversed__()) +# check.reverse() +# for a in range(check.__len__()): +# print(check[-1]) +# print(check.__iter__()) +it = Iter(mas,5) +print(it.__iter__()) +# it.__next__() +# print(it.__iter__()) +# print(it.current()) +# print(check.__iter__()) From 1ae46e04fb03425f0f609c1887c0e56afc500bf8 Mon Sep 17 00:00:00 2001 From: TurboFen <47735879+TurboFen@users.noreply.github.com> Date: Fri, 27 Mar 2020 20:26:38 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20clear?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- arraylist.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arraylist.py b/arraylist.py index 4cad30a..ed428d9 100644 --- a/arraylist.py +++ b/arraylist.py @@ -9,6 +9,7 @@ def __init__(self, collections, cursor=-1): self.collections = collections self.cursor = cursor + def __iter__(self): return self.cursor @@ -92,7 +93,7 @@ def append(self, value): self.myarr += array(self.myarr.typecode, [value]) def __clear__(self): - self.myarr = self.myarr.typecode + self.myarr = array(self.myarr.typecode) def pop(self, key=0.1): if key == 0.1: