diff --git a/osininyai/[1] data-structures/MP_names.py b/osininyai/[1] data-structures/MP_names.py new file mode 100644 index 0000000..ed5f1fe --- /dev/null +++ b/osininyai/[1] data-structures/MP_names.py @@ -0,0 +1,28 @@ +import random as rd +import string + +up=list(string.ascii_uppercase) +consonants=["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z"] +vowels=["a", "e", "i", "o", "u", "y"] +count=0 +names=[] +while count<5000: + name="" + temp=rd.randint(0, len(up)-1) + name+=up[temp] + length=rd.randint(2,9) + for i in range(length): + temp=rd.randint(0, 1) + if temp==0: + letter=rd.randint(0, len(vowels)-1) + name+=vowels[letter] + else: + letter=rd.randint(0, len(consonants)-1) + name+=consonants[letter] + names.append(name) + count+=1 +f=open("names.txt","w") +for i in names: + f.write(i) + f.write("\n") +f.close() diff --git a/osininyai/[1] data-structures/MP_records.py b/osininyai/[1] data-structures/MP_records.py new file mode 100644 index 0000000..001eeb5 --- /dev/null +++ b/osininyai/[1] data-structures/MP_records.py @@ -0,0 +1,73 @@ +import random as rd + +def Shell(arr): + N = len(arr) + n = N // 2 + while n>0: + for i in range (0,N-n): + j=i + while j+narr[j+n]: + t=arr[j] + arr[j]=arr[j+n] + arr[j+n]=t + j=i + else: + j+=n + n=n//2 + return arr + +def records(): + phones=[] + first=0 + second=0 + third=0 + fourth=0 + for i in range(10000): + phones.append(str(first)+str(second)+str(third)+str(fourth)) + fourth+=1 + if fourth==10: + third+=1 + fourth=0 + if third==10: + second+=1 + third=0 + if second==10: + first+=1 + second=0 + phones2=phones.copy() + + f=open("names.txt","r") + count=0 + names=[] + while count<5000: + name=f.readline() + names.append(name[:len(name)-1]) + names.append(name[:len(name)-1]) + count+=1 + f.close() + + names_sorted=names.copy() + for i in range(10000): + names_sorted[i]=names_sorted[i].encode() + Shell(names_sorted) + for i in range(10000): + names_sorted[i]=names_sorted[i].decode() + + records_shuffled=[] + records_sorted=[] + count=0 + while count<10000: + name_var=rd.randint(0,len(names)-1) + phone_var=rd.randint(0,len(phones2)-1) + records_shuffled.append((names[name_var],phones[count])) + records_sorted.append((names_sorted[count],phones2[phone_var])) + names.remove(names[name_var]) + phones2.remove(phones2[phone_var]) + count+=1 + + rd.shuffle(records_shuffled) + return records_shuffled, records_sorted +#print(records_shuffled) +#print(records_sorted) + diff --git a/osininyai/[1] data-structures/[1]MP_BST.py b/osininyai/[1] data-structures/[1]MP_BST.py new file mode 100644 index 0000000..4889c31 --- /dev/null +++ b/osininyai/[1] data-structures/[1]MP_BST.py @@ -0,0 +1,383 @@ +from MP_records import records +import random as rd +import time +import csv +import codecs +import sys +sys.setrecursionlimit(15000) + +def bst_insert(root,name,phone): + if root==None: + entry={"name":name,"phone":phone,"left":None,"right":None} + root=entry + return root + else: + entry={"name":name,"phone":phone,"left":None,"right":None} + if root["phone"]==phone: + root["name"]=name + return root + else: + if (name.encode())<(root["name"].encode()): + if root["left"]==None: + root["left"]=entry + else: + bst_insert(root["left"], name, phone) + else: + if root["right"]==None: + root["right"]=entry + else: + bst_insert(root["right"], name, phone) + +def bst_find(root, name): + a=None + if root!=None: + if root["name"]==name: + return root["phone"] + else: + if (name.encode())>(root["name"].encode()) and root["right"]: + a=bst_find(root["right"], name) + elif root["left"] and a==None: + a=bst_find(root["left"], name) + return a + + +def bst_delete(root,name): + while root["name"]!=name: + if (name.encode())>(root["name"].encode()): + if root["right"]==None: + #print("None") + return + else: + if root["right"]["name"]==name and root["right"]["right"]==None and root["right"]["left"]==None: + root["right"]=None + return + root=root["right"] + else: + if root["left"]==None: + #print("None") + return + else: + if root["left"]["name"]==name and root["left"]["right"]==None and root["left"]["left"]==None: + root["left"]=None + return + root=root["left"] + if root["right"]: + root1=root["right"] + if root1["left"]: + if root1["left"]["left"]: + while root1["left"]["left"]: + root1=root1["left"] + root2=root1["left"] + else: + root2=root1["left"] + else: + root["name"]=root1["name"] + root["phone"]=root1["phone"] + root["right"]=root1["right"] + return + if root2["right"]: + root["name"]=root2["name"] + root["phone"]=root2["phone"] + root1["left"]=root2["right"] + return + #del root2 + else: + root["name"]=root2["name"] + root["phone"]=root2["phone"] + root1["left"]=None + #print(root1.right.data) + return + elif root["left"]: + temp=root["left"]["left"] + root["name"]=root["left"]["name"] + root["phone"]=root["left"]["phone"] + root["right"]=root["left"]["right"] + root["left"]=temp + return + +def bst_list_all(root): + if root["left"]: + bst_list_all(root["left"]) + print(root["name"]," - ",root["phone"]) + if root["right"]: + bst_list_all(root["right"]) + +def test(): + root=None + root=bst_insert(root,"Abba",1) + bst_insert(root,"Babba",2) + bst_insert(root,"Cabba",3) + bst_insert(root,"Aaaaa",4) + bst_insert(root,"Abfga",5) + bst_insert(root,"Arte",6) + bst_insert(root,"Aaxa",7) + bst_insert(root,"Aaax",8) + bst_insert(root,"Aaxx",9) + print(root) + print(bst_find(root, "Aaaaa")) + print(bst_find(root, "Aaxx")) + print(bst_find(root, "Aaax")) + print(bst_find(root, "Babba")) + print(bst_find(root, "Cabba")) + print(bst_find(root, "Arte")) + print(bst_find(root, "Aaxa")) + print(bst_find(root, "Abba")) + print(bst_find(root, "Abfga")) + print(bst_find(root, "Abb")) + #bst_delete(root, "Cabba") + print(root) + bst_list_all(root) + +def run_shuffled(records_shuffled): + insertion_times=[] + finding_times=[] + deletion_times1=[] + print("Shuffled list: ") + for k in range(5): + lisst=None + + #А. Вставка всех записей + start=time.perf_counter() + lisst=bst_insert(lisst, records_shuffled[0][0], records_shuffled[0][1]) + for i in range(1,len(records_shuffled)): + bst_insert(lisst, records_shuffled[i][0], records_shuffled[i][1]) + end=time.perf_counter() + insertion_times.append(end-start) + + #Б. Поиск 100 случайных записей + names=[] + index=rd.randint(0,9899) + for i in range(100): + names.append(records_shuffled[index][0]) + index+=1 + for i in range(10): + names.append("A") + rd.shuffle(names) + + start=time.perf_counter() + for i in range(len(names)): + bst_find(lisst,names[i]) + end=time.perf_counter() + finding_times.append(end-start) + + #В. Удаление 50 случайных записей + for i in range(10): + names.remove("A") + rd.shuffle(names) + deletion_times=[] + + for i in range(50): + start=time.perf_counter() + bst_delete(lisst,names[i]) + end=time.perf_counter() + ttt=end-start + deletion_times.append(ttt) + deletion_times1.append(deletion_times) + + print("Run number ",k+1) + print("Insertion time: ",insertion_times[k]) + print("Finding time: ",finding_times[k]) + print("Deletion times: ","\n",deletion_times) + print("\n") + + temp=0 + for i in range(5): + temp+=insertion_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["BinarySearchTree", u"случайный", u"вставка", insertion_times[0]], + ["BinarySearchTree", u"случайный", u"вставка", insertion_times[1]], + ["BinarySearchTree", u"случайный", u"вставка", insertion_times[2]], + ["BinarySearchTree", u"случайный", u"вставка", insertion_times[3]], + ["BinarySearchTree", u"случайный", u"вставка", insertion_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["BinarySearchTree", u"случайный", u"вставка", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + + temp=0 + for i in range(5): + temp+=finding_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["BinarySearchTree", u"случайный", u"поиск", finding_times[0]], + ["BinarySearchTree", u"случайный", u"поиск", finding_times[1]], + ["BinarySearchTree", u"случайный", u"поиск", finding_times[2]], + ["BinarySearchTree", u"случайный", u"поиск", finding_times[3]], + ["BinarySearchTree", u"случайный", u"поиск", finding_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["BinarySearchTree", u"случайный", u"поиск", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + + temp=0 + del_times=[] + for i in range(5): + for j in range(50): + temp+=deletion_times1[i][j] + temp=temp/50 + del_times.append(temp) + temp=0 + + temp=0 + for i in range(5): + temp+=del_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["BinarySearchTree", u"случайный", u"удаление", del_times[0]], + ["BinarySearchTree", u"случайный", u"удаление", del_times[1]], + ["BinarySearchTree", u"случайный", u"удаление", del_times[2]], + ["BinarySearchTree", u"случайный", u"удаление", del_times[3]], + ["BinarySearchTree", u"случайный", u"удаление", del_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["BinarySearchTree", u"случайный", u"удаление", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + writer.writerows("\n") + +def run_sorted(records_shuffled): + insertion_times=[] + finding_times=[] + deletion_times1=[] + print("Sorted list: ") + for k in range(5): + lisst=None + + #А. Вставка всех записей + start=time.perf_counter() + lisst=bst_insert(lisst, records_shuffled[0][0], records_shuffled[0][1]) + for i in range(1,len(records_shuffled)): + bst_insert(lisst, records_shuffled[i][0], records_shuffled[i][1]) + end=time.perf_counter() + insertion_times.append(end-start) + + #Б. Поиск 100 случайных записей + names=[] + index=rd.randint(0,9899) + for i in range(100): + names.append(records_shuffled[index][0]) + index+=1 + for i in range(10): + names.append("A") + rd.shuffle(names) + + start=time.perf_counter() + for i in range(len(names)): + bst_find(lisst,names[i]) + end=time.perf_counter() + finding_times.append(end-start) + + #В. Удаление 50 случайных записей + for i in range(10): + names.remove("A") + rd.shuffle(names) + deletion_times=[] + + for i in range(50): + start=time.perf_counter() + bst_delete(lisst,names[i]) + end=time.perf_counter() + ttt=end-start + deletion_times.append(ttt) + deletion_times1.append(deletion_times) + + print("Run number ",k+1) + print("Insertion time: ",insertion_times[k]) + print("Finding time: ",finding_times[k]) + print("Deletion times: ","\n",deletion_times) + print("\n") + + temp=0 + for i in range(5): + temp+=insertion_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["BinarySearchTree", u"отсортированный", u"вставка", insertion_times[0]], + ["BinarySearchTree", u"отсортированный", u"вставка", insertion_times[1]], + ["BinarySearchTree", u"отсортированный", u"вставка", insertion_times[2]], + ["BinarySearchTree", u"отсортированный", u"вставка", insertion_times[3]], + ["BinarySearchTree", u"сотсортированный", u"вставка", insertion_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["BinarySearchTree", u"отсортированный", u"вставка", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + + temp=0 + for i in range(5): + temp+=finding_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["BinarySearchTree", u"отсортированный", u"поиск", finding_times[0]], + ["BinarySearchTree", u"отсортированный", u"поиск", finding_times[1]], + ["BinarySearchTree", u"отсортированный", u"поиск", finding_times[2]], + ["BinarySearchTree", u"отсортированный", u"поиск", finding_times[3]], + ["BinarySearchTree", u"отсортированный", u"поиск", finding_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["BinarySearchTree", u"отсортированный", u"поиск", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + + temp=0 + del_times=[] + for i in range(5): + for j in range(50): + temp+=deletion_times1[i][j] + temp=temp/50 + del_times.append(temp) + temp=0 + + temp=0 + for i in range(5): + temp+=del_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["BinarySearchTree", u"отсортированный", u"удаление", del_times[0]], + ["BinarySearchTree", u"отсортированный", u"удаление", del_times[1]], + ["BinarySearchTree", u"отсортированный", u"удаление", del_times[2]], + ["BinarySearchTree", u"отсортированный", u"удаление", del_times[3]], + ["BinarySearchTree", u"отсортированный", u"удаление", del_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["BinarySearchTree", u"отсортированный", u"удаление", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + writer.writerows("\n") + +records_shuffled, records_sorted = records() +run_shuffled(records_shuffled) +run_sorted(records_sorted) diff --git a/osininyai/[1] data-structures/[1]MP_hash-table.py b/osininyai/[1] data-structures/[1]MP_hash-table.py new file mode 100644 index 0000000..6318894 --- /dev/null +++ b/osininyai/[1] data-structures/[1]MP_hash-table.py @@ -0,0 +1,452 @@ +from MP_records import records +import random as rd +import time +import csv +import codecs + +def polynomial_hash(word): + p=11111 + m=(10**9)+9 + hashh=0 + for i in range(len(word)): + hashh+=ord(word[i])*(p**i) + hashh=hashh%m + return hashh + +def hash_to_index(hashh,length): + while hashh>length: + hashh=hashh%(length) + return hashh + +def ll_insert(table,name,phone,index): + if table[index]==None: + entry={"name":name,"phone":phone,"next":None} + table[index]=entry + return table + else: + entry={"name":name,"phone":phone,"next":None} + if table[index]["phone"]==phone: + table[index]["name"]=name + return table + if table[index]["next"]==None: + table[index]["next"]=entry + return table + else: + nexxt=table[index]["next"] + if nexxt["phone"]==phone: + nexxt["name"]=name + return table + while nexxt["next"]!=None: + nexxt=nexxt["next"] + if nexxt["phone"]==phone: + nexxt["name"]=name + return table + nexxt["next"]=entry + return table + +def ht_insert(table,name,phone): + index=hash_to_index(polynomial_hash(name), len(table)) + ll_insert(table,name,phone,index) + return table + +def ht_find(table, name): + index=hash_to_index(polynomial_hash(name), len(table)) + if table[index]!=None: + if table[index]["name"]==name: + return table[index]["phone"] + elif table[index]["next"]!=None: + if table[index]["next"]["name"]==name: + return table[index]["next"]["phone"] + else: + nexxt=table[index]["next"] + while nexxt["next"]!=None: + nexxt=nexxt["next"] + if nexxt["name"]==name: + return nexxt["phone"] + return None + +def ht_delete(table,name): + index=hash_to_index(polynomial_hash(name), len(table)) + if len(table)>0: + if table[index]["name"]==name: + if table[index]["next"]!=None: + table[index]=table[index]["next"] + return table + else: + table[index]=None + return table + elif table[index]["next"]!=None: + if table[index]["next"]["name"]==name: + if table[index]["next"]["next"]!=None: + table[index]["next"]=table[index]["next"]["next"] + return table + else: + table[index]["next"]=None + return table + elif table[index]["next"]["next"]!=None: + nexxt1=table[index]["next"] + nexxt2=nexxt1["next"] + if nexxt2["name"]==name: + if nexxt2["next"]!=None: + nexxt1["next"]=nexxt2["next"] + return table + else: + nexxt1["next"]=None + return table + while nexxt2["next"]!=None: + nexxt1=nexxt2 + nexxt2=nexxt1["next"] + if nexxt2["name"]==name: + if nexxt2["next"]!=None: + nexxt1["next"]=nexxt2["next"] + return table + else: + nexxt1["next"]=None + return table + +def bad_sort(names,phones): + names1=[] + phones1=[] + while len(names)>0: + min_=names[0].encode() + ph=phones[0] + for i in range(len(names)): + nm=names[i].encode() + if nm0: + for i in range (0,N-n): + j=i + while j+n(names[j+n].encode()): + t=names[j] + t1=phones[j] + names[j]=names[j+n] + phones[j]=phones[j+n] + names[j+n]=t + phones[j+n]=t1 + j=i + else: + j+=n + n=n//2 + return names,phones + +def ht_listall(table): + names=[] + phones=[] + pointer=0 + while pointer0: + if lisst[0]["name"]==name: + return lisst[0]["phone"] + elif lisst[0]["next"]!=None: + nexxt=lisst[0]["next"] + while nexxt["next"]!=None: + if nexxt["name"]==name: + return nexxt["phone"] + else: + nexxt=nexxt["next"] + if nexxt["name"]==name: + return nexxt["phone"] + return None + + +def delete(lisst,name): + if len(lisst)>0: + if lisst[0]["name"]==name: + if lisst[0]["next"]!=None: + lisst[0]=lisst[0]["next"] + return lisst + else: + lisst.pop() + return lisst + elif lisst[0]["next"]!=None: + if lisst[0]["next"]["name"]==name: + if lisst[0]["next"]["next"]!=None: + lisst[0]["next"]=lisst[0]["next"]["next"] + return lisst + else: + lisst[0]["next"]=None + return lisst + elif lisst[0]["next"]["next"]!=None: + nexxt1=lisst[0]["next"] + nexxt2=nexxt1["next"] + if nexxt2["name"]==name: + if nexxt2["next"]!=None: + nexxt1["next"]=nexxt2["next"] + return lisst + else: + nexxt1["next"]=None + return lisst + while nexxt2["next"]!=None: + nexxt1=nexxt2 + nexxt2=nexxt1["next"] + if nexxt2["name"]==name: + if nexxt2["next"]!=None: + nexxt1["next"]=nexxt2["next"] + return lisst + else: + nexxt1["next"]=None + return lisst + +def bad_sort(names,phones): + names1=[] + phones1=[] + while len(names)>0: + min_=names[0].encode() + ph=phones[0] + for i in range(len(names)): + nm=names[i].encode() + if nm0: + for i in range (0,N-n): + j=i + while j+n(names[j+n].encode()): + t=names[j] + t1=phones[j] + names[j]=names[j+n] + phones[j]=phones[j+n] + names[j+n]=t + phones[j+n]=t1 + j=i + else: + j+=n + n=n//2 + return names,phones + +def list_all(lisst): + names=[] + phones=[] + if len(lisst)>0: + names.append(lisst[0]["name"]) + phones.append(lisst[0]["phone"]) + nexxt=lisst[0]["next"] + while nexxt!=None: + names.append(nexxt["name"]) + phones.append(nexxt["phone"]) + nexxt=nexxt["next"] + else: + print("List is empty") + return + names1, phones1 = bad_sort(names,phones) + #names1, phones1 = Shell(names,phones) + for i in range(len(names1)): + print(names1[i]," - ",phones1[i],end='') + if i%4==0: + print("\n") + else: + print(", ",end='') + print("\n") + +def test(): + lisst=[] + insert(lisst,"Abba",1) + insert(lisst,"Cafr",43) + insert(lisst,"Babba",2) + insert(lisst,"V",2) + insert(lisst,"Babadsaba",3) + insert(lisst,"Cabr",34) + insert(lisst,"Aaaaa",4) + insert(lisst,"Ba",5) + a=find(lisst,"Aaaaa") + print(a) + + print(lisst,'\n') + delete(lisst,"Abba") + # print(lisst,'\n') + # delete("Aaaaa") + # print(lisst,'\n') + # delete("Ba") + # print(lisst,'\n') + # delete("Babadsaba") + # print(lisst,'\n') + delete(lisst,"Aaaaa") + # print(lisst,'\n') + list_all(lisst) + print(lisst,'\n') + +def run_shuffled(records_shuffled): + insertion_times=[] + finding_times=[] + deletion_times1=[] + print("Shuffled list: ") + for k in range(5): + lisst=[] + rd.shuffle(records_shuffled) + + #А. Вставка всех записей + start=time.perf_counter() + for i in range(len(records_shuffled)): + insert(lisst, records_shuffled[i][0], records_shuffled[i][1]) + end=time.perf_counter() + insertion_times.append(end-start) + + #Б. Поиск 100 случайных записей + names=[] + for i in range(100): + index=rd.randint(0,9999) + name=lisst[0] + while index>0: + name=name["next"] + index-=1 + names.append(name["name"]) + for i in range(10): + names.append("A") + rd.shuffle(names) + + start=time.perf_counter() + for i in range(len(names)): + find(lisst,names[i]) + end=time.perf_counter() + finding_times.append(end-start) + + #В. Удаление 50 случайных записей + for i in range(10): + names.remove("A") + rd.shuffle(names) + deletion_times=[] + + for i in range(50): + start=time.perf_counter() + delete(lisst,names[i]) + end=time.perf_counter() + ttt=end-start + deletion_times.append(ttt) + deletion_times1.append(deletion_times) + + print("Run number ",k+1) + print("Insertion time: ",insertion_times[k]) + print("Finding time: ",finding_times[k]) + print("Deletion times: ","\n",deletion_times) + print("\n") + + temp=0 + for i in range(5): + temp+=insertion_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["LinkedList", u"случайный", u"вставка", insertion_times[0]], + ["LinkedList", u"случайный", u"вставка", insertion_times[1]], + ["LinkedList", u"случайный", u"вставка", insertion_times[2]], + ["LinkedList", u"случайный", u"вставка", insertion_times[3]], + ["LinkedList", u"случайный", u"вставка", insertion_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["LinkedList", u"случайный", u"вставка", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + + temp=0 + for i in range(5): + temp+=finding_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["LinkedList", u"случайный", u"поиск", finding_times[0]], + ["LinkedList", u"случайный", u"поиск", finding_times[1]], + ["LinkedList", u"случайный", u"поиск", finding_times[2]], + ["LinkedList", u"случайный", u"поиск", finding_times[3]], + ["LinkedList", u"случайный", u"поиск", finding_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["LinkedList", u"случайный", u"поиск", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + + temp=0 + del_times=[] + for i in range(5): + for j in range(50): + temp+=deletion_times1[i][j] + temp=temp/50 + del_times.append(temp) + temp=0 + + temp=0 + for i in range(5): + temp+=del_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["LinkedList", u"случайный", u"удаление", del_times[0]], + ["LinkedList", u"случайный", u"удаление", del_times[1]], + ["LinkedList", u"случайный", u"удаление", del_times[2]], + ["LinkedList", u"случайный", u"удаление", del_times[3]], + ["LinkedList", u"случайный", u"удаление", del_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["LinkedList", u"случайный", u"удаление", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + writer.writerows("\n") + +def run_sorted(records_shuffled): + insertion_times=[] + finding_times=[] + deletion_times1=[] + print("Sorted list: ") + for k in range(5): + lisst=[] + + #А. Вставка всех записей + start=time.perf_counter() + for i in range(len(records_shuffled)): + insert(lisst, records_shuffled[i][0], records_shuffled[i][1]) + end=time.perf_counter() + insertion_times.append(end-start) + + #Б. Поиск 100 случайных записей + names=[] + for i in range(100): + index=rd.randint(0,9999) + name=lisst[0] + while index>0: + name=name["next"] + index-=1 + names.append(name["name"]) + for i in range(10): + names.append("A") + rd.shuffle(names) + + start=time.perf_counter() + for i in range(len(names)): + find(lisst,names[i]) + end=time.perf_counter() + finding_times.append(end-start) + + #В. Удаление 50 случайных записей + for i in range(10): + names.remove("A") + rd.shuffle(names) + deletion_times=[] + + for i in range(50): + start=time.perf_counter() + delete(lisst,names[i]) + end=time.perf_counter() + ttt=end-start + deletion_times.append(ttt) + deletion_times1.append(deletion_times) + + print("Run number ",k+1) + print("Insertion time: ",insertion_times[k]) + print("Finding time: ",finding_times[k]) + print("Deletion times: ","\n",deletion_times) + print("\n") + + temp=0 + for i in range(5): + temp+=insertion_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["LinkedList", u"отсортированный", u"вставка", insertion_times[0]], + ["LinkedList", u"отсортированный", u"вставка", insertion_times[1]], + ["LinkedList", u"отсортированный", u"вставка", insertion_times[2]], + ["LinkedList", u"отсортированный", u"вставка", insertion_times[3]], + ["LinkedList", u"сотсортированный", u"вставка", insertion_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["LinkedList", u"отсортированный", u"вставка", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + + temp=0 + for i in range(5): + temp+=finding_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["LinkedList", u"отсортированный", u"поиск", finding_times[0]], + ["LinkedList", u"отсортированный", u"поиск", finding_times[1]], + ["LinkedList", u"отсортированный", u"поиск", finding_times[2]], + ["LinkedList", u"отсортированный", u"поиск", finding_times[3]], + ["LinkedList", u"отсортированный", u"поиск", finding_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["LinkedList", u"отсортированный", u"поиск", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + + temp=0 + del_times=[] + for i in range(5): + for j in range(50): + temp+=deletion_times1[i][j] + temp=temp/50 + del_times.append(temp) + temp=0 + + temp=0 + for i in range(5): + temp+=del_times[i] + temp=temp/5 + + results = [ + [u"Структура", u"Режим", u"Операция", u"Время (сек)"], + ["LinkedList", u"отсортированный", u"удаление", del_times[0]], + ["LinkedList", u"отсортированный", u"удаление", del_times[1]], + ["LinkedList", u"отсортированный", u"удаление", del_times[2]], + ["LinkedList", u"отсортированный", u"удаление", del_times[3]], + ["LinkedList", u"отсортированный", u"удаление", del_times[4]], + [u"Структура", u"Режим", u"Операция", u"Среднее время (сек)"], + ["LinkedList", u"отсортированный", u"удаление", temp,] + ] + + with codecs.open("docs/data/[1]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerows("\n") + writer.writerows("\n") + +records_shuffled, records_sorted = records() +run_shuffled(records_shuffled) +run_sorted(records_sorted) diff --git a/osininyai/[1] data-structures/docs/[1]report.docx b/osininyai/[1] data-structures/docs/[1]report.docx new file mode 100644 index 0000000..d8f1eab Binary files /dev/null and b/osininyai/[1] data-structures/docs/[1]report.docx differ diff --git a/osininyai/[1] data-structures/docs/data/[1]graphs.xlsx b/osininyai/[1] data-structures/docs/data/[1]graphs.xlsx new file mode 100644 index 0000000..b3fabee Binary files /dev/null and b/osininyai/[1] data-structures/docs/data/[1]graphs.xlsx differ diff --git a/osininyai/[1] data-structures/docs/data/[1]results.csv b/osininyai/[1] data-structures/docs/data/[1]results.csv new file mode 100644 index 0000000..4a66e73 Binary files /dev/null and b/osininyai/[1] data-structures/docs/data/[1]results.csv differ diff --git a/osininyai/[1] data-structures/names.txt b/osininyai/[1] data-structures/names.txt new file mode 100644 index 0000000..f355943 --- /dev/null +++ b/osininyai/[1] data-structures/names.txt @@ -0,0 +1,5000 @@ +Hymuyz +Caiymy +Pfti +Keoqqe +Zuykyots +Ddnu +Jkiyoqznyi +Hyyzgmy +Tehoswyygoy +Cxhiajjfqx +Pooaatyz +Sgyela +Tlbxoau +Dyoyypeh +Bej +Drweqfqseyp +Hohaezuy +Feaxl +Zwdxyobqyu +Liduiviusr +Xixvydc +Fgclygymyf +Kat +Zwajyze +Lio +Xfnaupdi +Qaewowcaa +Tvey +Aoarpveegow +Yzygn +Usooieff +Elnivaux +Kylfiylu +Adca +Dojkulbum +Umwyzu +Rhgyjyylek +Dkxui +Wzugyyenq +Meqacac +Symmf +Wyyacyoci +Wiyxeuwr +Gcf +Dygnnpu +Uoewonyye +Aun +Xlkyiheio +Vejyyzoe +Sugcloviy +Hiaeii +Cfyfuqfb +Diyeydaa +Mkiivoehypi +Nbukgoiiqe +Vpocp +Akuo +Simsy +Qeyviyyq +Miueyaat +Sayelauv +Zeezuuatoy +Hmqt +Ooic +Zovayba +Emuayiubqqa +Lyyuwubeo +Key +Cte +Fiomgdiyu +Biieieczo +Jycmiq +Ooturnj +Pur +Byyjzae +Hcyu +Inait +Gvruyu +Ulcuri +Juaqyyzpj +Lipyayu +Tgegskyhyi +Cymisqvitq +Zaiaplu +Rkuwf +Lyrwulyidw +Kknuiulezyg +Jeoyniwey +Wzx +Biivtm +Bgaveain +Lloelilu +Aadneie +Gzuhloiepu +Keyouui +Wkqu +Bujfuesuo +Lyrz +Uafuqy +Deiuvejouui +Huonyvqe +Zmdza +Bguagef +Zliuaaaoof +Jyhygyauff +Vvyukeuli +Nhwprlyc +Rkmygormczu +Dqxx +Ouogmq +Hhla +Rowgztueia +Aac +Uism +Nyyux +Ttauzauyp +Sdms +Syibyoo +Tholfrq +Yat +Peebkue +Rukilibe +Gewiuraugw +Uumi +Peda +Nyhyuxbz +Toagvkeii +Ixqsezmyis +Jex +Qzp +Yqsbiumva +Zmai +Ienoaiqpiy +Olixyaoymey +Huichroa +Taotcf +Ixmoyxu +Rskgho +Liikr +Rqykvjiyyo +Poyvynyiq +Wohbiguuy +Woqe +Fdyuaipuiyb +Oayag +Pzyezvfdy +Kxsgpyyq +Pyucaaecyuy +Ishbywym +Yufua +Ayku +Pvnynzy +Kpimahdkl +Nbteihwy +Jiqr +Aqdrkpeefd +Yeohboouzr +Uuif +Cyyuhwayo +Kaycasexpap +Byip +Eukinoye +Dieauxhybc +Qjuli +Hduucuud +Vaaktrn +Tyhuoyyioa +Wbi +Wyeieenioat +Lateekinfze +Nvtitykzc +Gumy +Moaaoar +Auood +Zuoeiupu +Vupeuapxm +Qakmceta +Iyulju +Vqemlaaiyku +Xyly +Marja +Bsfyumnb +Bxsgbe +Ceygy +Xyyyabri +Zuonhhocrli +Auqaduum +Siycriayo +Vulpjy +Fzu +Hiylazyohs +Rux +Mbiyl +Djhafz +Mkbmapj +Lavtoyygo +Sadsap +Hitiu +Eiiguu +Naorikej +Thuhubg +Vukielji +Ieubidoakie +Ayux +Hitayuvuyft +Biyfodc +Niobnz +Aii +Euejg +Tloohaekqen +Xvgn +Kmucoe +Rayyqtsi +Gyia +Osnfkuuo +Jmkas +Damvefyu +Eyu +Vkzank +Uuef +Eiugea +Ckqypipiaio +Pmnruieev +Bkiau +Tpitbiyaaat +Xxngbt +Qcywwaineeb +Hedarsxit +Vlruegqr +Ciaqanuyhj +Tpy +Pwvgmjhnay +Playri +Hidyez +Xaieq +Legf +Aeaiyrtybs +Hecyid +Ywyfkeeity +Meoy +Kxeolzgv +Xqguchp +Maimep +Ynenkoiga +Zxeimoakba +Wsavmhyzrun +Hza +Dioem +Tbbeuux +Uiaatqpir +Gmeoixj +Fid +Ffmsqai +Xeusabrghk +Fuei +Uehrn +Vqtmeabsrp +Yamjyj +Sioqhwufy +Pihhvhynwum +Wckoe +Hyynuxayxno +Bkoputh +Mcauopibnee +Qpmsixbsiy +Bimey +Dabm +Voxuoyoh +Yechyuiwe +Zeyo +Bezw +Kyea +Akndmfo +Eewyex +Difb +Xiiee +Iac +Lhiycueoyo +Oaau +Lvtoefuumb +Vjmiajgcsdb +Rokkyznswe +Hraq +Ihomo +Iqodxqjcuyr +Zza +Jddjbtw +Uuout +Puimetj +Simjt +Pauj +Iimee +Nbaeaaud +Marli +Hyv +Ckykfm +Vlgaliyuupe +Hhoi +Tmayhoi +Bsy +Neeevmgd +Ywpehuuov +Jayea +Sryzveic +Faryxbyey +Vyhpijo +Rideay +Gmyomi +Tcjeqcyao +Debtyuullb +Yumc +Kuokb +Solsoizeumo +Fouc +Douofaa +Ubea +Pelqtuhaiux +Xon +Loq +Nyybsiz +Vcjskd +Lcagag +Uswit +Miygduwo +Uiazyywneov +Rdxuy +Oqexi +Ndiulvvtp +Tojy +Oamm +Gplkabgm +Ziyke +Cgjlpkusg +Cudnitvosxo +Uoh +Glpceygdq +Blbeiyweanr +Cqauyaxss +Wjyuwgtjyo +Watveoiy +Qbky +Tevaikmdoiy +Ponuuomqaa +Dauh +Kwzyl +Vil +Syvmaona +Jmxjobwu +Keaaewqi +Fiicvuyyevu +Ylyicye +Iyzlnua +Ucwty +Nzmoiy +Fec +Awuupwtnehy +Tnyj +Yoyqyiia +Orilfiyeuk +Wzaet +Xupdvtne +Qmbuosim +Xpioee +Kuejjikeeay +Ayrumiwi +Puszarwy +Zauvoueyopk +Yiiiaopuue +Pduuyfzuvw +Rrubutvvu +Fqkfmoo +Hulfu +Mnfjoo +Tyk +Rjobziimb +Muabutxparr +Iixzi +Tekaoaz +Mab +Dzyuhgyhpy +Nuvuzwsonsf +Zae +Myl +Dvegidebduo +Vipado +Qeoei +Lypay +Zhavcieisg +Fku +Toyyoztkjmo +Qesodkolai +Roaeyaupoya +Vfomy +Xxr +Hqbmtisa +Hixeehjaqu +Acmajzja +Wcofa +Vml +Pezamsrziw +Vooad +Pulnmyii +Fleys +Yanegooe +Wjs +Wpa +Wqueum +Queaerouo +Lqleame +Uord +Hwi +Zde +Jereo +Peiyv +Cyee +Nxuonpuugvd +Tuymawpazy +Xiu +Iyscytg +Lwhkk +Cviukjar +Chjyroem +Lxafomoortg +Oee +Faksp +Sidb +Jpoyewohyme +Djdrlmauo +Yoooioel +Gatayk +Auast +Jbyyyusr +Cxbpyo +Ejfaodgldod +Avjyajcauy +Ovbwfow +Kyvoik +Fryopwoykhi +Ytgviurvaio +Lfhkgijouuh +Cozzuzii +Jdu +Ghkoayoyuw +Vqwkyvxqse +Iegieofv +Akqmu +Nifytufu +Whxhsjwx +Tas +Jay +Kelo +Mhoh +Wwrnuu +Aqivoroo +Vseqeljieuo +Aevogruuy +Lfvw +Giiuijdyoy +Votistxjlpa +Fyjauo +Bquyurt +Cni +Ueiyyzrrfni +Twhcziena +Juztteyxwvr +Levlih +Aeahlubep +Vete +Pdpnihuec +Rkgaspxvtp +Gei +Abhwxma +Kyyj +Lwkjyqla +Tieoepyaers +Eeyythmyaeb +Iqvrau +Foief +Vreidmywbx +Wayv +Kyr +Ndgaasjy +Awthyu +Bivx +Lricrgwcxta +Ibyiqbay +Ievaeluyvu +Wihxtuoqye +Nffiazisjua +Gdeafeyeayu +Yekugsqu +Hijieykxavn +Dbtwlar +Nevypxgoot +Fnxmy +Uyo +Feuhfula +Nkyofxri +Mlnyrqqkfxi +Xay +Chpuytibzuy +Wsdij +Qlijeloaoog +Gayy +Sivuizs +Zacoeluhhz +Myiyyhyuujo +Abqfefojyt +Ntdqqknk +Avbd +Vtkuaysiu +Ixoit +Hae +Wueo +Jqayyuerzu +Dzozyezf +Fior +Zgq +Llvsc +Vwad +Oxfaxoda +Hkyueqmna +Nkwnatse +Wyyhww +Gvsyyoodo +Hkljbasay +Jhner +Bowoay +Taoielok +Cbm +Axomovvj +Eaeyirh +Vjyypre +Ssseylfg +Das +Qyyi +Judxyb +Whyyuqolf +Vueeaeaee +Qldpoab +Rlpz +Dtct +Gasalrnue +Ajqctoneyi +Gymwimduuh +Uobhiqd +Aioi +Ejuo +Rsjdyypg +Nitz +Riefqaif +Gxohnryvt +Hxoydmt +Abulejioawy +Bibu +Bbytwegcuua +Duatp +Eoaay +Uxfeelyc +Dooenbaztl +Doyeoixirul +Jyxynywz +Eeefsoojbye +Taomee +Krgokddyw +Izeyyek +Euymhyiltos +Nmp +Goqoanwo +Iaomuuioya +Ycouvdeuy +Ooynyapa +Euy +Syajre +Pedoyydie +Rzyoyl +Vjqieqt +Wyyqoxoaii +Pdyeeupi +Ayuiujgiyu +Lqiv +Trhim +Khbcniltil +Eoewuryt +Ajda +Bleauez +Tyaesaroy +Mroxyeyfit +Dha +Wha +Ljyuynup +Fzy +Hbadadojug +Gefy +Fvcqkxeikmi +Wosveteyye +Bvrtiduqiyu +Eobw +Zgzuumhmjb +Goiysi +Thlb +Liuiaaos +Ppyihk +Faajzyzy +Gjnxi +Svzcygoct +Deq +Iuoxd +Hxauyfe +Sayyzi +Mexieeyoa +Tiwyijt +Coyaduy +Jnx +Qewb +Aqageuueizt +Kexfpiwy +Myeoytiuaa +Aeta +Shbyq +Euqxiytglea +Iuymhiacr +Touuwgyakua +Boes +Cygubnz +Oyyaxabzyv +Heiqvie +Quogiauq +Ccfoamvay +Heieoeyuug +Dpaayysab +Havgyy +Nynioay +Syka +Vcoxwycyoyp +Iawu +Clyplocjoit +Aeoy +Ufjvayoeu +Ieomtida +Leysxioe +Vbezyittayo +Oouoquup +Wyomeytzso +Qjdulurahuu +Nujfunuy +Wyyyx +Moae +Qicycoa +Wyufay +Zhuuu +Noeyqk +Ffoeyyair +Vhguhejq +Foayuauu +Xuehgcauooy +Cuzgu +Moenmdve +Uhak +Ute +Czxoy +Yfyiovai +Gtsia +Xpi +Psikuryh +Cyuhxhaztq +Mibiq +Jaukclvi +Qasnmoumo +Xlii +Vavgykiozd +Gig +Htufbu +Eeeu +Qayeai +Ewn +Teuawz +Rvtwuya +Keujjb +Jnuuopymf +Weeieii +Zsoyqigaxh +Sdeoyey +Yryhaijuh +Iopy +Tieyufiyaog +Lmeayu +Ebljho +Nubmeahi +Doyhubwyx +Jecabe +Raoypae +Ier +Sjao +Lavtrcky +Qliofoqiy +Yreau +Gebxcdru +Gbayeeyapqi +Wxqyw +Pqgwbe +Okpv +Ruoue +Ytiay +Wyyeyllyki +Peiyeeakk +Uiake +Luubibiiaoy +Yunyoun +Daotyozuy +Oaaz +Ivmupo +Ecilyxgzx +Phdkptiyn +Vaufw +Npivbcewk +Cvf +Toocyhavula +Ryhernyyq +Buodtg +Ygi +Wiliioy +Llgemeqa +Fyyjuki +Fmeozauuooe +Fvzdicdx +Oniwq +Fjim +Bzyljelh +Doiilayoed +Necucomey +Wiy +Rzq +Sqdkva +Jlumyt +Rdtmf +Txdl +Xiamywoeo +Dezd +Aygya +Ayeikkuewr +Youdii +Duyxuewae +Ooqaejojo +Uipwj +Zaiy +Xxqiybao +Faivthioyiu +Xoetrcfkoh +Rou +Wznss +Ueyeiqtcba +Pjejr +Wahekd +Baa +Fywaoepu +Weiooupue +Aep +Bggu +Aalyuyle +Quyvll +Wsntl +Byjsyjya +Lpcfght +Yukep +Ukyfau +Rojpwt +Kysufuxrieu +Hvlyhsyl +Euylytb +Ujo +Tzvjdmeyv +Cyiyayybn +Azetl +Piuuweo +Qayai +Huede +Hmsebwuboec +Hay +Uuyui +Gleuhsvt +Vfyk +Pytyxyaw +Qieuuywq +Xeyse +Hvgvyezyasd +Myhgoogowi +Kauyiru +Foachiycu +Ihyoyetiw +Tka +Mooiu +Zackglm +Aeojesy +Nyfycqo +Hynge +Qyipfai +Cutibx +Qtfvgxn +Oitowhq +Nsv +Ztte +Kwi +Kety +Rlydx +Fxykykzu +Uiieymxaix +Twwzcoiede +Zuuuuyryfmu +Paoue +Cig +Sse +Kdypyayuuuu +Fymcnd +Ariimoyul +Zxeg +Sdte +Vowofait +Njeujoai +Ezivvooyeev +Wplii +Pnaubriiqqg +Lealku +Hacak +Hjuemiuox +Kkalxgd +Qngy +Pddec +Saixueiezy +Bucemioagy +Nres +Rnm +Otorxbs +Wdlwdiblo +Saiieyeoye +Whqeyo +Pyulveiuy +Wmbus +Iyu +Vyhumlcysao +Kmzacafqb +Wyyo +Uyye +Swraayj +Qaulsrqoccu +Kiakunihjw +Dquie +Ngfijy +Pozwurya +Rrzw +Dtu +Yft +Ddiyi +Yes +Keaiwhvuwn +Syaoe +Pxaoaa +Iwuptyaai +Mmetnnoyyy +Aagmmzn +Vgupumoi +Ficao +Gmaivaujxd +Bhyoke +Oihslqq +Xya +Nruuieaq +Eos +Hxzavemxei +Yajtwa +Sfgie +Xio +Zgyye +Cftievnyk +Doagayi +Piuad +Rikmnzhuez +Habse +Uidolaaeuj +Nihzyurayiu +Xgo +Knkhkn +Peecqgu +Ooixyip +Mawvdheaod +Evoyj +Spa +Jdkj +Ciyaybko +Pautuytyyk +Roiwawjsy +Hxaa +Jbpioxoyb +Jip +Vooymo +Ezx +Xai +Zevuuomki +Jpyoozciatf +Tijbdj +Yiaayeovfm +Jasosfpd +Qeuuarboi +Fiopv +Zvi +Mbjub +Vneexelw +Rixnh +Lai +Fue +Pdieccuposo +Quowvoy +Iugeyad +Gtciyma +Kfuod +Mappykyx +Bbqxne +Tojakdou +Wgeabik +Uamioud +Sai +Ywoheuzak +Zoqfina +Ijcjez +Qunwww +Soyggkf +Bahzpumek +Xhk +Ddbiyuyrht +Heuao +Kaizowoyelw +Roism +Xaeamu +Ueq +Eexlyfed +Kuyvj +Hboue +Kqiy +Cme +Lyys +Qyyuuys +Anayavaza +Apy +Okiu +Heayog +Qafaka +Bwya +Lesusg +Tubla +Oqaeeuio +Rmyizsw +Ayp +Symspu +Xamabfymih +Pcoarayieae +Nyhqeiux +Ymmh +Isjk +Hyaumdu +Vohsy +Ttoeuwwy +Jezaouyeu +Luuuoaqemee +Weoezqy +Aooiiufyqji +Bcmpgoi +Kby +Neui +Baoyeyam +Qsybpea +Dagegy +Iaooayvyoe +Lerarzekoad +Myeeapa +Yeruv +Zdfuqiziayo +Boldtwirm +Ittyaokuyn +Hubc +Sitp +Ygaicymas +Eyq +Fdyuhdjyfj +Bidcq +Rewyno +Aya +Ureiuyuao +Gmaapa +Tyeezxaeooe +Znuzbdaog +Pyibypay +Jeyuoxa +Wamuuy +Xyjmaovun +Uoulmoeegqu +Hgeequtj +Gseesai +Voe +Vuscshe +Jud +Oae +Ndkva +Oiyyjiawun +Cenylpibb +Brkqiue +Avaiezzbem +Bnyfeibd +Dkureesoycz +Jxlryivyoiy +Jrwxtisior +Bviloi +Njikyw +Dyyio +Miiobywx +Fnrg +Gyoytroaynu +Baavevaaqxa +Vzdaiw +Sksgi +Hpftj +Eohp +Ziaea +Quomzebnfv +Dan +Quaagye +Ceaiou +Fhoooyu +Xivfaizxy +Qahaeefie +Uyoauz +Liory +Uzoeuy +Euoycoeua +Fesoev +Chutxa +Biworl +Qaawoonz +Oar +Qeybwapb +Ayckryue +Niuiayg +Qynaeoeiem +Hepahydia +Ryem +Qbgc +Mumeme +Kjsnypoeu +Vtzzby +Ntuep +Xop +Xsynayuiao +Qyetvu +Miauectij +Rpgbnzayi +Feelizl +Lytopuyyo +Yvdme +Ayh +Kdyariyui +Zhitxayqz +Jpuzano +Xsbirs +Azeoi +Bgoh +Zoyybo +Huaure +Njeg +Jywyerw +Rmyfieyayti +Ofaalkkcoh +Pdiuyafy +Lloipqqod +Eiaaevihtye +Eedvdbyyguf +Oolk +Biptfyvnli +Gkx +Aioyu +Jytzkuizyxa +Ujlot +Xrehqz +Kefqxsiyomo +Hqyvya +Kjuwuzouaav +Geuafpyo +Sryecki +Ccyaouge +Kuydceuluy +Uma +Aee +Gaedee +Vhecyyodmjc +Qiyywa +Hyepyyalroo +Cymq +Baujeueooou +Jpueco +Qtlxhkynz +Euoa +Ijefccdzy +Byitugfgo +Jyyyo +Xjray +Keo +Duwwawey +Typdmdi +Qyoxobsyf +Mzwrpikegb +Zueja +Ezizbeu +Hxbwuayeo +Cfyotauf +Ugyhhyyt +Mzvgcm +Vcoaevoiz +Auyu +Vcgv +Pqebzrsv +Bonseaogac +Fearti +Freecsyyop +Tuiuueaegi +Ukuaf +Xqtokprpbmz +Xup +Pyogbaon +Tiorgebaya +Dezbaexiu +Tuouiay +Jlwp +Wnfyysensv +Ieysiem +Kdri +Uootf +Teiij +Viiwvoqkyc +Qqsozi +Myaaoee +Bgyw +Akwbjpoa +Egourc +Kiaotcyebu +Idauvmqeai +Koqyvwe +Zbuobp +Giouxbyuefu +Lojqajelh +Sidkve +Qofrbviyyac +Iliyclja +Obyoeanfmu +Xoukybux +Liuauc +Hhbytv +Lgyvuui +Eou +Fykiian +Che +Mciiana +Iyv +Hqiu +Jaaedvyiu +Elgagyem +Npyyiluoz +Narufin +Ovxzuozaeyi +Xkgeoipjvdy +Wgehmh +Xfef +Wfymyeew +Tdezj +Uotiobgb +Ejzyoeukum +Niaumvcnqw +Cru +Kljobhr +Uziaia +Peobtypa +Ryryjhiop +Vouaetk +Harb +Nyz +Yuxaawaaehq +Vko +Uyktzf +Eean +Sibt +Vjecquzu +Kayyeeeahgp +Bulsbykxzr +Wiatyuc +Aylpdoeex +Rnfjjge +Pigw +Myey +Qtybaa +Zeynddb +Sem +Ffuzppaxfi +Vuuomnyiee +Ejabwy +Fmpykyq +Yallutz +Sxaaqdemu +Gaioo +Lojaolweyat +Ovoxkky +Tqobgixo +Tyuee +Aymynoemoj +Xroaqryebf +Pogisv +Wxacso +Musqaaki +Hcau +Uewkdnu +Bse +Dyeijpymm +Oabkokrm +Daudud +Oegymge +Pelniwfyuas +Ioh +Smku +Jttuj +Szueeymyic +Bulubaqqp +Doobt +Bklggw +Oxsosdyiyf +Uinorle +Usddffb +Xvacuupyz +Xop +Lexolb +Gpefrm +Wau +Lxavoie +Qgatiddpzpo +Iyodqcwhymo +Naocxuoe +Fwogq +Xit +Uatogae +Xysasui +Byytaiu +Kapa +Delzu +Yiuo +Alomifalpei +Nyqgjisobpi +Heqouye +Reqtiric +Eao +Mrp +Cskylki +Aicite +Qeawsyllo +Kvsijqxorix +Ykzanyykxa +Gaqy +Lkayrjcur +Kudlytyn +Eilij +Oyymyyiy +Iynbeoeyfy +Bineisid +Ihgb +Wrmemocoqf +Hoae +Hhf +Txue +Zlvueqeaoeb +Slzih +Serouyzueys +Kyoavgs +Woee +Ejcoaulzh +Pofababtooa +Wqsexwv +Iivoukmztoa +Hrzhruloi +Byex +Qoifsiwgsy +Ypymtbos +Lgywcouoqiv +Afoseiy +Yxsbern +Uusq +Eiejykby +Qduaywegoy +Geaqryjsw +Uuuuhoihau +Ddueyy +Ruea +Vmd +Oiyyehe +Eyygweqamai +Kfaigur +Bzee +Myyxoouba +Mpbuu +Ziy +Eepjeivoct +Ceaevcyvec +Getyaio +Yowavsqqlxy +Souliiso +Curi +Rwiooyyudl +Oayyrejf +Qjeedeual +Sukaxx +Uypelkcie +Boxjupobk +Txobx +Ttnmgyaiziu +Garifc +Ghdxdhymakh +Utytmcwogf +Heqdkehtk +Nragj +Napi +Wzusqi +Xaygiueyj +Jotqoaaiey +Sias +Jxeyrloadn +Siyom +Dveavoaq +Fvw +Mzi +Rezyav +Pavpos +Bwdoomqvxv +Oeouueoq +Aqo +Usczkpaei +Jqrxoave +Kdbuy +Myjpv +Gkenaaukcq +Gfcdan +Lualrbiseky +Svii +Sth +Srewzw +Rupdaeywq +Yiziaaezuk +Dqiboo +Uyndau +Rodzlhj +Pkofiosvi +Sueiy +Kgy +Aoemuot +Qkkebvy +Vknq +Dqimgfjo +Soumecieuu +Voiu +Fkytkyymbh +Ffsy +Xeqgsy +Mdiohrwjyz +Wezyeyg +Uubhdyosway +Twaikoysael +Smeviikolo +Uecekypyivn +Lvxu +Bbz +Oznysarreot +Ieip +Kiebg +Qegoxfoopuc +Wouibo +Znxygrb +Jasnplz +Debyxtxyoue +Osa +Uyaalar +Pengwixixfr +Wbmic +Bdiujnq +Hyk +Nmimriigaf +Cooube +Cwaebzybuop +Ljiayxly +Wixufso +Xyyaxufaoh +Syukosut +Baqkslwjd +Cybkuust +Cuyao +Zua +Pctes +Cei +Yaubl +Doouuui +Vxgkozjou +Uyabe +Smsnauwsa +Beghiwaukc +Svax +Nguoyapl +Doyijpuyx +Dmyyko +Nuexoerhhcl +Aszn +Ygaylaooeo +Rzfutwjeu +Jowyveqt +Uyy +Aouoo +Wuynrbgai +Eeie +Nvyeiaubwe +Mccjiruvhd +Ceimoegwo +Yqulc +Wbmgaoxue +Zukbno +Rye +Zvjolu +Gqapyrmacot +Jao +Xaideeeqoo +Emol +Bfvingc +Quo +Wfa +Poqhei +Uoybauswxx +Epclouls +Qbrjbliein +Nyhyqyeiumg +Zyoyche +Tlayeoay +Log +Gyooacjyiud +Whi +Ynnywupoyau +Jbxs +Mravaouyag +Vxvjydquzgo +Uokz +Vquna +Yyxakioe +Eou +Kemoinue +Dxsuvlif +Myfeubh +Cayaggpiekc +Bpbkuepiorh +Toiir +Vyryic +Yyr +Vpiaq +Kioi +Oeveosaarf +Gzwy +Aaipbnmeded +Xuaata +Pkcirf +Efydianifje +Mrubeye +Iiayuxypyp +Ziokaoyoyu +Uuey +Bigjniu +Zeapzy +Hyprjjimsi +Higyqqstjy +Kio +Yoqekucgajk +Gykmo +Msuywyadty +Rkey +Yoozooa +Zug +Mhmkzixf +Yeusa +Kfeiabnrny +Giyezi +Dtyrfliyaex +Xappox +Xnreyimo +Auoujni +Jejauiekid +Jpaipdird +Lxydubhez +Ftxxhoiuf +Favtg +Apupeiifk +Radeecdcoy +Zuxnkwmcpvk +Ftv +Efgyiuk +Kebacoya +Gywuk +Roy +Bao +Injcyz +Gycuiauy +Lpyeiirnak +Rouyoiuya +Ccxo +Qkde +Lraaan +Oby +Ywxyeqi +Xnza +Vyaqyujypu +Bueaofh +Uyx +Tenuaoeyhyj +Jmsuxeqaa +Mupxjfy +Kuzti +Wgeouuaaj +Gaqpra +Yezof +Gye +Nywlhoo +Pycreaaf +Fofsy +Evwkyim +Ooiqvvtpfb +Jueqcdgqhue +Aaouynuuqr +Yyecag +Woixe +Vyyoqoua +Ohdayeh +Lleiyd +Doizyoyyy +Xyeun +Wyrxdfty +Kfuy +Suuiyuyl +Cyohjvuwiy +Quibieh +Ubmv +Rvzyei +Fdkow +Nile +Hyti +Psua +Vjryhti +Ctw +Zjiaikipn +Kjmuozvi +Pyydycfuek +Relyeuiswqr +Mmkjvatda +Wuvmunub +Gkyooemri +Yawuaaa +Sniyniew +Jyyiiy +Rkojioqehl +Eozga +Zbekuyihr +Hokkeig +Ovgat +Zinrydi +Yeyqzyigeok +Bygneyyo +Cyescfiye +Faivoeu +Xjhqfiuef +Bdxo +Hskjonyiol +Ugraaufqav +Vheyahyouh +Waauyt +Ezyevl +Vyjddeudeye +Luvyj +Yybbkeda +Qezyyf +Wsapgehun +Kyemaoa +Nhfuioc +Zanir +Piiaiaoe +Rmso +Qutya +Houeitol +Geouuvlu +Ooaouovrk +Tful +Scta +Gkai +Jgjh +Jaaio +Vujyvuf +Duuisjna +Zoqyieeatxa +Nkiaoae +Mufbf +Ijnquoya +Tyvbyyep +Ailufusdyy +Iblw +Foyny +Amge +Hoauduihr +Sof +Nuhhwredu +Yue +Ypvuyrriu +Uupwugqoze +Free +Pljiyqlnau +Eszufihti +Jauydob +Sxuthsm +Ieay +Lyatuhdea +Audes +Reo +Htyeyx +Pco +Hraqoryooa +Layiguijat +Rucvyo +Kawzocohloo +Kxe +Sqyyjpydrdb +Lnlac +Upi +Codeaowyuey +Hwtgi +Obeywq +Tvliiyht +Wqzflungmoo +Cyytocowo +Gczu +Wrqsyeey +Lvydwd +Heuwfhokxd +Fuolslwiuum +Pyuyujcw +Muouaoqagrn +Uvay +Ary +Pci +Suiks +Ooqajk +Cjqlkwkioi +Nkpeetioy +Cuu +Qiydxqpgu +Ofeo +Wouetawaipe +Wssbosukiis +Wzidaaf +Zyahjsprh +Lujseolcyo +Ycaeohgsi +Qreuuo +Ysey +Emjrraanqo +Alk +Liymgay +Ujae +Cyauyaxosiz +Cllhh +Noibsbvay +Vodouiybcu +Rdlave +Jzeeycuz +Xyekvz +Lbht +Yonoxdwaui +Daepaeips +Fvcyxtwluso +Taeum +Payepuewo +Qoifpreinau +Aciqiiebay +Kwqs +Utcpgua +Gnluqfiuz +Oeybqw +Xovuqkeeiyi +Leyyegxtii +Aoame +Wxafho +Rofyyag +Dmyezy +Zyiya +Pnidhae +Vlbsee +Aysieugjrhx +Tuyvuqewy +Qeooe +Zlebyu +Mioizvhoe +Paf +Pphgqyia +Pmy +Suyv +Nuebumikoj +Xaiinltr +Kywy +Rdrufvdo +Roj +Guiyyaogdsc +Aelyuqkh +Oossaiauer +Oqcaaeyy +Teiuneyl +Gevy +Nfex +Xexroaci +Azhiwga +Niuwoyo +Vres +Agrathkacs +Diafioekoxu +Puo +Zxuyoa +Byiiyqp +Yuxallol +Jejcpayvl +Otoj +Kdoequamtui +Redk +Lyi +Kylmqhxoui +Xhg +Cucxl +Iyyyauu +Ybys +Lcoothuufap +Yabs +Wuyyijc +Qayyewopiaf +Yhwyxovee +Koiyyyc +Lqyu +Bvpabv +Ceosi +Txagoido +Zieimkemeou +Foyuyau +Dauuyz +Swonfnakik +Mhuuadfyk +Xrtuku +Cudaoayae +Gleuyorxfxo +Fie +Coyj +Pbxjaa +Kwotaypstua +Foyeoibt +Kor +Culfvzlzyub +Cawfpu +Jwfoasto +Luaa +Wvwgoipu +Zonybah +Bcyy +Reeru +Yqeeojiiou +Oyiohkiy +Iwszxapb +Iczguuf +Nawobif +Noicnioes +Vuvx +Feiumun +Xip +Sjog +Kea +Tqkeeeume +Wjdeu +Tzezujiup +Cbyykgpqycv +Eegvgy +Jxnowooqeu +Odypkyb +Giy +Qesoz +Avkbnsnehl +Lswizrjyu +Goaseuuckry +Apxv +Vfdeyfsup +Hkaa +Buxwho +Cqlei +Qta +Biiyb +Pxlbbiiuidt +Hcyixzikaut +Wbeid +Qyhcqug +Yye +Mipctkayir +Zcjsfp +Msikm +Scuiiy +Beel +Wuyiseqxive +Ujvxa +Oeyi +Uvcyaiuco +Evkmvupy +Woeylaeyx +Uoj +Ixebyezainu +Oha +Qvu +Wzaygu +Oexulaeffol +Fuyx +Sngl +Hgufb +Nizvdlie +Aeyz +Jsu +Rwuamiod +Zsofaywemou +Xnyiy +Cwieameboz +Gvjojgnaap +Igeqatz +Bca +Vao +Eaueugjzgy +Caaadx +Biomvhiok +Nbvams +Jevdaya +Jizeu +Memjyjgyio +Rqdmool +Ggyeor +Ucdxy +Gqfknwffeh +Kuydou +Rfyiuofaeu +Coo +Fpekflcl +Qaym +Wyoguqy +Ido +Rkje +Yye +Iaycciu +Qmeojuma +Eylp +Bfi +Munr +Vyymp +Puuc +Tkj +Steequjass +Djovvefrysi +Wnttajaue +Mfetoit +Goj +Uyyivd +Zuyimzaexoo +Sgvshujr +Iaisxxso +Iyqf +Peeuwukuryj +Jeuzv +Noaeyjevouq +Lyyi +Betyuuo +Fygowinx +Akgjjddoih +Exzoiywg +Uge +Deaflaa +Gldyijyiiy +Fgvaxyyzzih +Bowtfgorxj +Kgergepolw +Dkuieoeo +Lwidxuyjee +Sgloiuuao +Bfageojmtiy +Uau +Uuikwiecc +Ltzorie +Feyppin +Ybe +Wyedroidy +Tkhw +Wuxoty +Kof +Fqourot +Guichedjq +Ytlbfvhi +Jfkaimedmw +Uorv +Pmal +Thykaiak +Semtuqaoao +Fwwgqyrc +Efsbwyyiuso +Xswyipdoim +Imhetuquque +Vyoemdj +Zorafpbijik +Ogaeeborapl +Vuukevuppxx +Dgqoi +Yixp +Amywgonyuk +Kke +Hkni +Mopjylyai +Aiavyuufyi +Dao +Frzerboo +Gaxtgit +Nyajiguv +Wcuyc +Aqaeyopdzi +Ayhlymkut +Xwpjyawzc +Wsoksuaz +Iuquguauqyo +Wiatkoao +Rswkiq +Xueeepajw +Vumyhliufod +Dksozwhwkd +Jyw +Guqiywhq +Mujvkrzzt +Yiuxoheep +Kyuiioyzwye +Giilfjke +Lven +Nahxa +Omaxznori +Fiiqayrcxho +Hydyty +Uaidaoeuuo +Dokeiael +Qarevukio +Blymuovds +Nbgvof +Sinhpa +Gduyow +Oyikxruaoo +Suylurew +Pmaldq +Ylyfaywyio +Hwyl +Xjzfiwayep +Xocrry +Eyopezxat +Ezyakyyvj +Auoftgzyio +Neui +Okuxauontg +Dqyakhdqy +Xcivuaugi +Kbiasynaa +Zyqahei +Sihwiusaha +Guxniiehvao +Tysee +Ayhpkah +Pyu +Ryuobeqpoo +Sydd +Bvyui +Rayiva +Byi +Xloiabio +Luepby +Jgynub +Ktinuv +Ejiacaeo +Mytlmxye +Brmcuo +Poyyjzgtwxe +Qjsuxfyoyg +Qyhhbpk +Biatw +Ialqyeesrn +Tyyarji +Gkralw +Oepybmzl +Qzzy +Uiikppe +Srqmgi +Msakquva +Mceyyq +Eaeymyo +Vuoyyyyixaf +Qhowriykxpa +Waabo +Vuupqc +Uajezw +Xyczg +Yxy +Igre +Teew +Osbikjyki +Tyjbexk +Haienblujd +Slnaj +Hbodoclbz +Ujaiirnd +Rcbikqb +Qiy +Engf +Luywyuh +Cyeiuk +Xse +Uwjoayaiuoc +Ywqogag +Wbzkax +Byt +Odohu +Beeywdyy +Grul +Salieafanrw +Ooojaow +Oipyiai +Qiu +Zyeaenek +Gzuzyb +Jlruyhqibl +Tabaguyfey +Vgvuym +Xeihoaoo +Xaej +Dymqhg +Nhyztawr +Ypg +Bus +Zaxuhaif +Wqiuamaup +Zxqebop +Bhqctcdfh +Jdyeaogeta +Bivuh +Duxiulely +Vayauyreu +Fiamooaynpa +Uoazob +Goiawybucor +Egriyaii +Pndvaeyihdy +Reiozeze +Wxiuou +Skysthgha +Caliqbixi +Gfoememeu +Skba +Tuyyiyeuxre +Qevmecdq +Ofl +Amaddiv +Oxiugm +Fefeveeyotg +Qieki +Ewwyuikujy +Gyte +Hat +Bmaoaai +Zojxsqe +Ohrboxsyooy +Hlao +Yugeeiae +Nqaqp +Jxykadori +Ljaiyiujxo +Koiabbhoyny +Mafiu +Tok +Zhuw +Dypycz +Gyeouhblz +Waylqyhbyu +Ioepewjiomy +Dene +Byy +Fpiy +Gbzkbbqaa +Vsrkyqxyy +Hyahch +Kyba +Hgosp +Pazeh +Jbkoep +Rugydniy +Ubrrh +Ajavrajpvz +Gouoken +Grau +Bbhfdwl +Kozn +Xyioqvued +Nteiymogcfa +Hzk +Iuyooy +Whtfuqatau +Oeynuo +Zrym +Beiyudd +Duoedice +Renyioi +Pylyiu +Qudoe +Menrry +Ettve +Fnihmea +Ufuaeyhuy +Ngauaayrx +Kta +Seiiapwg +Zyyoogoj +Oeu +Moymuwio +Wiwuouejy +Hnwa +Kgqyioiwx +Wqgeeaeoain +Kibebuylxty +Afohocdppl +Byipeeasa +Haqojpidt +Ogz +Byocaean +Iuiob +Fukiiu +Eofdagafex +Uqyovxgio +Nzanzajtyn +Erovuuiyjus +Qoxipvk +Fjjach +Kruk +Ysytc +Fuvuievxuu +Oouao +Efor +Bfjalwueu +Oeiingp +Kaumep +Uydzayr +Uzibdriuwvo +Wudvygdcjo +Qxevakryi +Aurydtn +Nuamuh +Hnio +Qfoezfbohha +Saax +Xrohqwlpw +Duyuyymazx +Tsjeqoo +Ppcoqxyy +Zeo +Uyupdpe +Qqjgsq +Akuu +Oyyyde +Ryexuz +Sja +Iyiyiphe +Dyewxb +Guyioyv +Qomp +Jipu +Keyh +Mljptxzzpna +Wvyedye +Njyyaqjo +Lycmga +Gel +Zcqxi +Copbi +Fjyoey +Hjm +Knhebuiob +Cgeze +Uehaapoie +Juebusm +Pyuodv +Keyagobazv +Dpifuispimj +Desuhji +Epohaufusp +Maeseuk +Iameeq +Mjystnyo +Huaiaoidg +Dyi +Hryizoeenya +Foqwaam +Tawzuugos +Rweoeourq +Vulcvv +Eaoajhia +Hwkokiiyv +Pvlmyuay +Racp +Muvuiqnjy +Byrayksucyu +Seakyiue +Stvocoad +Jitzyamm +Pbqrtkya +Jroyyq +Qynughapwie +Fxuikidweg +Bksduuyuxae +Deuyh +Daidcepafa +Sypl +Nuidbr +Vcfw +Flwoeei +Daupe +Xpvr +Heol +Naejjym +Tajiwywle +Vaifdoib +Fyysdzcnpk +Lyiuzgy +Iehaaoohiwt +Geuhwxz +Yjt +Opgvywmeibj +Gyiuyhqyue +Xoqo +Gogyodxbycd +Vurwozdcfp +Xdbzjs +Pxnm +Gxyen +Vpsoaytr +Oolu +Kgurfahz +Cmim +Hffayhna +Fany +Aeluetcqza +Josufo +Caer +Siyjo +Bxuyuvyae +Xdpvz +Kfs +Eadi +Vgqonixumws +Uixay +Qesxpefeu +Xajagvseceq +Yayefhewpe +Zdjbimoyxn +Ulwaia +Hoexa +Syahz +Fubiuibeuq +Ahifusit +Ffsuuaau +Pizjijgum +Cwny +Julkc +Fyc +Yoi +Zeiuum +Tymaatlu +Huu +Geuyflieovy +Guexkfigyku +Obbxuqyw +Soyibrsna +Cex +Cfi +Eylbr +Owadtb +Zgikdo +Hyatu +Miqg +Fyziyx +Curyiv +Gaa +Pjueucizt +Nlnu +Mig +Uooe +Dbyue +Vvp +Vrf +Iuffeeqcoyu +Talyyu +Oiouwih +Yoyy +Hwn +Vgaygeiuos +Qpgdpdwievb +Ququyc +Jjrylpyotyp +Bac +Eioopukzc +Oouksee +Iyavorma +Lyk +Tgyjmyskexi +Gkawohhygo +Oruhvg +Rba +Wycayjbirt +Xqvuiruqy +Okeeooi +Zkgyzqs +Kskanko +Yljyayakel +Qugiira +Qoemwuo +Moofo +Mhu +Tdba +Hil +Huoyovyaij +Skiyuspxii +Bjxt +Liaqeyayaku +Bgrzupcyra +Aywku +Psuytlezx +Xbol +Iayuayp +Rokezeo +Jisyy +Rqlewmwcy +Rrdt +Jycvyalyc +Qybtem +Kuyieiin +Nifouc +Quywopqmu +Hkag +Ediuiiczxrf +Nufordutvn +Jjj +Jqyk +Lua +Eeyyi +Gvyqiv +Buyfyekovoy +Vayhboq +Fnikaf +Hacoqe +Mkogja +Byuuuyon +Fpyykosqyu +Uaaaj +Pobooluce +Rueuuys +Sjnvyqyyk +Oikmtfhdam +Lpuhhtphu +Mlkayr +Wkai +Sottoi +Kapo +Cyizueoo +Wbyyupjhjk +Leoyiooieb +Wyc +Xiavyerimw +Iauiik +Qiifdu +Xeu +Pdooaygmu +Kyzysiioes +Andipyuv +Waiz +Jqcic +Nfeoulyca +Ldywma +Yiuecpax +Mgkaxnua +Uupieyluwyo +Tkkkhuuaani +Lhneui +Sanyyqy +Oebyaszgaq +Eyugmy +Cylaodu +Dfeyaoi +Apooauo +Leaoauoyu +Kztreda +Yywqxrrlyj +Eyeddyaqykm +Butoryigva +Xaeai +Mwutzlf +Bgkjomwazg +Uwdyge +Duoyyoa +Zkdwxuivlev +Kaixy +Qyhavykhyq +Vebykiiueo +Cauye +Vadrgvohlxz +Zey +Jaevdkug +Wol +Rooi +Via +Cucatae +Jioqe +Vxyun +Fvluh +Mim +Oaiioyopj +Ebugaio +Xla +Dnedcys +Oonynwxgrcz +Bjixvgyiutx +Fiyd +Eefxqpooaof +Ixdegd +Pfoliraltqa +Feobu +Miofvyszij +Quvz +Zaihoyeo +Nanjiyrq +Llnwq +Dxufkofqxsr +Lauaylqoiji +Uebryyao +Douje +Bgyajycp +Jofiobuuy +Baezuyiao +Rwcovszvypi +Bkaaroo +Efie +Jewhauehemm +Lfc +Sjusqybmky +Jqhcgn +Wayixiuy +Whete +Nasrealyocn +Dhyitvix +Sotqpy +Jvveoboiai +Qcfuoruzyn +Ltqeftoxbji +Ooosx +Pxej +Ivh +Caii +Jaavuwlgn +Euu +Urkuy +Fnsjaececbu +Xdannql +Jiehezvxuu +Wye +Zqeqyuakhd +Ioai +Lyreiyauotq +Woyahio +Duu +Uwtqpcu +Nxvyqxvky +Qayuxxabc +Rrxvayhi +Ryaoduaxnip +Tveuy +Lnyfpy +Kekr +Vewerkvca +Naefxlwjtea +Vgxmeui +Fotefiquae +Lqif +Hzmiettyrco +Jusuzyn +Rziazuko +Kobulw +Lesdigyuiq +Saoiiyks +Neyomiguelg +Qmw +Umuloyhuru +Ojo +Yohyistoyoc +Dpwheviaayu +Taezvyosy +Ryyxk +Eiipiuoa +Foiufkaulyo +Eyidd +Prai +Jce +Hykyotye +Seieeukauh +Dned +Diouwxmauj +Cmzooei +Hyooizkd +Ptgaimi +Fycyeyoanvk +Gitrvou +Qdylxf +Bolheupapo +Zooaoqpfznl +Woyijavyab +Tvna +Lyrf +Puouaj +Xrnoaypuuxn +Dgkauibuu +Wwfwyfa +Wneiygu +Toyivuw +Zvya +Lgtuajweeyj +Jsodduy +Wveprqa +Pqiqht +Qvz +Tuzjuiugdf +Tuukfeyoyld +Nnlie +Zgkbnnmwjsu +Qfunw +Sscya +Xyfe +Duth +Eusooitykco +Ocayfiaeia +Lvru +Eezmcbyyl +Exouu +Vyavgryy +Jegftiac +Dyyebyva +Mqauycldby +Jeadcp +Nfreaaby +Myippopu +Gycaqa +Gukoaydoro +Zvieuuapky +Ayyjie +Yoaixpmlim +Oyzub +Rkic +Evhqbeodm +Ttn +Wuiryeduos +Kdddocu +Qurcrasow +Yiouusnsy +Vagivh +Coo +Cjeeny +Eaiawcak +Quufkz +Bgysqydmai +Hinkhit +Pyi +Nafuzewgy +Ayzeuo +Yyii +Vagmbugpl +Yentu +Foykk +Rehir +Drblyfkim +Iluoiyaeyog +Mco +Gxavcikdluy +Deiyu +Rssayiov +Fpvqd +Mkyewvywaya +Iuaieg +Njfbuyuucze +Yxiziq +Zqish +Yks +Kjy +Jzgub +Ruidzaaak +Teoosegefp +Kvagl +Ruyyli +Mubeiyim +Otiyaayo +Oyu +Nob +Zyyq +Trsoaoaaii +Yeyuwyfd +Pjou +Dgweiosqovs +Yzywzxie +Cwnxplvgo +Ysrucuypouy +Qoia +Gqohkan +Rzdudgyyu +Zxzy +Riu +Ecxeotglu +Drtoocdzfca +Wfoyiyuorm +Suozavaeu +Oioveoyjuu +Mialdegbl +Yiamnkm +Yhixazvh +Cbwevi +Cxypc +Osijehuodip +Pdeoiitiu +Lgaeaevvr +Swkyxuine +Nxrya +Vrsli +Nwivumvu +Ltjsaeu +Zquwi +Oqietndc +Iej +Ganyun +Lzhajae +Vjicayei +Gaaohl +Naguo +Ybourgyi +Eiqely +Leaiyinkh +Ltbyemojcu +Pfxe +Wysyyee +Qcmibrynfy +Occ +Xolglgd +Vblnoagr +Htseheuu +Vxd +Lgwgxb +Cmearje +Watbfyyzty +Jbxxbuo +Tyuhqoiv +Bifogy +Dpmqdvroyd +Yyeef +Jltidyt +Nla +Qpmbtiiyyh +Woai +Ktytmbt +Oiwat +Ffshy +Olo +Soabo +Qkiey +Bioyag +Noxdnjzeg +Nyiy +Eegpdx +Waby +Rqueem +Jouu +Wgoaum +Mnoripyi +Bnyrmjkz +Iaesu +Oyg +Jrjriovjqza +Ffelray +Fmukfloigi +Zfvaqjzuu +Ueor +Aybrsyiokyu +Qezno +Yvebvifg +Numuuygqf +Faued +Mgygtcgas +Fmueahf +Raapiceadu +Caotaselu +Oaaabid +Xduxyncxuv +Fiuiiye +Loeef +Jihoiaez +Rwewsoido +Kogajz +Tluupib +Uhehfkuyq +Iawi +Txzyjic +Jeayieh +Rring +Azu +Sdlvze +Ieefqfeiaei +Ealvyigk +Lwqixiej +Vhxcyyhu +Yyirlwvecnv +Sgoou +Uoaaya +Ucta +Deohi +Aoxah +Naiookyl +Feyaxryliwd +Qoiyyegaciq +Hxy +Kaxe +Xicih +Dyhyqufd +Aly +Lrs +Olea +Pee +Rihlbe +Hrqfaa +Skqe +Laoqauooq +Acgkaoou +Muwgllya +Yeusc +Curngsoait +Kautyaemzyg +Lmv +Sajevy +Xgeaogcoqi +Fuaeenjeu +Bxorhupi +Lbyyiel +Key +Gee +Cyoc +Ppioep +Xxkentcymy +Xiq +Tiyevesayc +Xyynuzbvi +Oolheai +Ykhfd +Neeooi +Fiuame +Umn +Qnuypybbnlx +Hgbtybhxmrc +Fgooyt +Sfc +Nodlfvyosi +Pajuoeiootb +Wyetgpva +Ziijyeygy +Kouaebw +Lawvuan +Mlytqe +Qysgm +Giioejpt +Lnduy +Zda +Hepwopeovyx +Ayyoza +Dyeeohhceh +Jsieuuih +Rujt +Dem +Tzoo +Swayhe +Iwyt +Oaeuaooia +Zcfiii +Ldie +Onyunmca +Yjeuosv +Oyojuvoua +Wtec +Mio +Nfbir +Jioysy +Gaynl +Iom +Ruiyamyyyba +Fdoac +Wzfyedaf +Kaagb +Zoyeali +Thyxwyu +Ubyiiypug +Ayiwvb +Fofihyfney +Xbaeyiydaca +Dnldyywipou +Saepzha +Jjhoagiwnq +Zyky +Moocw +Ciafehzyw +Persaa +Okasohd +Ajwcyuieoo +Vuaqeay +Nseoyaiie +Rquomgef +Tyiuu +Joaroiytecs +Gzauoyolu +Vneu +Vot +Tkgyudae +Xkhipn +Gywraoyapee +Iyirppq +Dewnarfvhqi +Vxbachih +Qeaua +Gjo +Vaaxgwynk +Cuijs +Dbdfdwmu +Nucoc +Dqzaoiyi +Oozfoeq +Jigrxise +Iymutkvif +Varz +Reoefr +Dcamnyu +Oqiftvi +Jdorxsyezo +Yocvschuug +Jte +Orppfiyuf +Rovjaov +Lee +Qaysxueb +Fnyhwiuaaff +Rtane +Jnka +Oacyzuoob +Kvpyxziey +Kyimerp +Ttpbmvf +Fuey +Spwac +Eoanyiia +Shgwpwnyi +Noxu +Uuanae +Bbgouaacd +Mjahig +Muudeaie +Doqqisq +Sgauoizzgsy +Kueovk +Aykog +Ceftuiowpy +Yocqaudzsbh +Wyxuuakh +Ofnuoonuy +Zcvygfp +Lyyehorae +Szolzboobec +Syk +Raiktngao +Sermjip +Uqsz +Mcvyaee +Oiwpsuizva +Adepox +Hij +Cmevulh +Tmuy +Ebpg +Ueayyeoy +Auoatkye +Nua +Wqux +Zrwvvm +Eofylokbuyr +Zyoeyu +Akdeoiwjfm +Ladtatfoe +Zeesbey +Ktiajjyaygo +Ayooay +Aeyeiuu +Ueareuyi +Belul +Bftwi +Hyl +Wtegiyh +Ywuuuip +Hdcnyumebu +Pulkc +Gbyafj +Vdosdg +Dueqoosi +Qabuuqz +Owlfha +Flaauwyxuzm +Wyi +Dyyuft +Juslxzi +Iuwtr +Noxtojab +Beksxi +Gsyi +Hawpkyuu +Yexzvyyijy +Uaiiw +Ffabzlfudyv +Ljuajyl +Sizcckihimb +Miperpcfh +Biiefvboz +Kaowp +Akyzyy +Axu +Yoiuoue +Lrmeuwe +Zewphk +Fveauc +Txoyhuwxwc +Myzkiqmo +Tegzeawcoul +Siupyhouzui +Skuptjaypj +Vieqoavxyt +Roibuukjxog +Wwyyrtayujv +Uwjvw +Dyyuy +Ziiovxoa +Cxdajocqu +Tpivmiyui +Ieyudqtiuv +Xnidp +Kaegzoe +Tijergyuu +Lviismmyoe +Fdyhuhhl +Icf +Vyoicyew +Qryuymi +Legbaie +Dza +Qsneuusoli +Xlyupoo +Xoe +Meuk +Waasopqy +Iyr +Lgzcqieiole +Yix +Lyyye +Unuaouyp +Yojsuyxiu +Ppkojyjue +Bpo +Myoye +Ueyeyi +Vffeoaapzug +Rerl +Csg +Rnqfiajah +Dkpoafmnoev +Wux +Tuiv +Aakuzezxye +Dymoya +Toaylmdgtd +Heuiakoj +Pwmgyzyeuw +Plcpe +Iixzoia +Ucypew +Ouys +Vwpasrmeeba +Bpey +Fyauwe +Ccdiwmrye +Leexty +Jojwius +Xmyuzhlwur +Meaqwtcpo +Qlduuo +Hhoryptu +Fazyoq +Gypaommoegs +Nyvatouldjf +Jueioqae +Gayrbl +Pigepabbo +Pmiopkpo +Fwykseag +Kpyimk +Pujoisciioy +Vyugilw +Mzxy +Rusky +Wer +Mwomiaeze +Asei +Obugyewalxy +Oeaxer +Ejiayix +Copuxms +Yliymusnuu +Hiak +Teyazfi +Xaqoau +Cykayyye +Peyuakt +Qmyeie +Pya +Bediuwa +Jgpvuoe +Datndyiaeex +Ikmq +Rukukku +Tygyky +Yaeyfiqi +Uuvrgfu +Rueiyiy +Tfio +Cgiyozuk +Tekw +Fifftk +Daieghsyae +Zafgiueiu +Uafueisreum +Ydiioudyt +Aiodzfiymz +Axqui +Kpitmoagxm +Wtrzsumd +Jyaukgteioa +Zuhxy +Giuyuicjy +Liispenqh +Asaiydzevad +Seguimoe +Zdufungiy +Ffeiq +Oiweauax +Geyuiaibifg +Lzieyadwr +Nmztdtiwdu +Osmoa +Nzu +Okibeiionww +Lyayuslwill +Dbe +Lwzqnepjqs +Eedaj +Waxnqkvbeek +Bws +Pwupaewyyda +Mmihzoti +Mybog +Aisyuuu +Ysaiqumyq +Eymyyye +Lqoyree +Xtolto +Eeair +Qry +Wekuiope +Eyeooizimhm +Ooe +Uopuy +Jteoildva +Gwikqcuu +Iweoyuuqka +Hbsiakaeo +Aaxs +Yfliyr +Kaelydhb +Exouywb +Nauo +Wqgk +Esueaazzv +Nptvua +Glvyy +Mffoaiquy +Zisy +Vtlp +Xymefr +Eycfjit +Audunvshl +Yfz +Pqqo +Kugjlqoj +Cuyr +Xuegokavu +Bvvqr +Noniwyh +Tyeuqugv +Jhglj +Dwoygtyed +Zopyeqwoe +Uunm +Xwubizubwy +Oexiefaeea +Myfuyo +Ikeuyao +Asukazy +Woeoesiiqy +Mdllsyfu +Npeorfl +Rpoakdvqybf +Skpegej +Anii +Myvu +Qjyo +Bkyiititqo +Bauaoocabie +Puabyh +Pes +Tqeyyeddchy +Bayaeqtey +Oohpyltuvui +Efyau +Pohuluonhda +Emnejxeyz +Tqipjjy +Visrzmyz +Jxuvzk +Ntoyry +Mxcdp +Dmayg +Suop +Wyagqlaa +Naiayxyjzop +Ruie +Uohitekrk +Ytsyrn +Euovczrni +Tztyuoj +Gyaoce +Ymbk +Ihooiwy +Zycxftn +Vjiaynui +Wtiu +Xhgxyukpoi +Tauopjtad +Icmatwauyc +Duyeyhhxea +Yueyxiyuu +Vbpoi +Zpued +Marel +Ypmmq +Hgua +Umdyuq +Xvy +Gkyfujgyw +Rla +Vix +Mniaid +Luoqysib +Sriyo +Sdiob +Ule +Vtye +Iayoayy +Fue +Xdvahe +Kuyjuyswczb +Bemeey +Deroteuurr +Yitscyozyok +Cmyoxw +Yaobwvuy +Oynz +Oey +Ninosgubzv +Muhh +Fybqeiyuyo +Esaicddu +Lnlgogmajzu +Kvcoany +Jiycjiiejy +Vyod +Feyuiqin +Yjyyzxoi +Vco +Hkpreyali +Fopliyrqsm +Ouwgooyuo +Kzaycmh +Ziyeeoz +Pymmwtamje +Ptyigoeouq +Quz +Nas +Cuv +Zak +Mzueu +Cpf +Kvcjnheqlga +Kyaeksbucea +Yvxu +Uuizeye +Iokajgodz +Otudyoabq +Bevhoua +Gezrylvc +Woqaodzzgau +Ntruk +Ywyhepni +Cxa +Kayd +Clwbjxd +Xvin +Ram +Izeh +Tqetebeimeo +Oyuitdpxu +Inikofbn +Qehxou +Omhfkajy +Frtowox +Aoquyrezdb +Xtoihan +Nvopyao +Mydlf +Uotou +Vyy +Quytkfkbabb +Coneyhgyo +Iiooyuiau +Dxmeocto +Noyyoouovaq +Naezucs +Xurekwbxyu +Mapxy +Zum +Rakeoaeulw +Joyppce +Cynlvta +Aoufeh +Xipeynyexl +Roeqbir +Esaipo +Vpiudllb +Tpocowyq +Napjyusjyoe +Auo +Jijwkohen +Bobeec +Wyyenicteau +Oiudutdyqvh +Yadxxu +Okixaxogp +Duh +Tuudc +Wwbi +Ciccpli +Jhaoyka +Sli +Fabo +Drbxehyelaa +Byele +Ikbb +Feze +Svaeiy +Uuqs +Qthchozm +Vae +Xykeeejyv +Hyux +Wmgeeqydy +Bydohimis +Zeybuda +Xeemcc +Veei +Tpwyyxz +Kosaro +Iju +Vabzzy +Laxwmidekry +Pfyze +Uvvi +Xxujggcx +Bex +Tdbyuquuob +Hay +Khyz +Kiu +Luyuwmonib +Keldkoovan +Lbakao +Csd +Hdeyshgvoys +Yuxiwrr +Mmozebqrj +Duqfedpu +Wafei +Xriyixnoy +Lceyrkranvf +Mlila +Royeu +Zctyni +Ryydoefwkp +Jivuynzi +Djguap +Phyuuio +Twh +Dyh +Izkeuq +Viyyydnre +Wbeicljc +Gymeuwp +Wkiduj +Hop +Dyyymy +Aey +Leebrzbitxn +Ckurooyore +Qoqa +Miniuoso +Wkeoojmft +Xeafieuqqe +Xuzayu +Zfcpadriej +Ada +Vyqiyewjpf +Iyy +Uhusawoaz +Neceuq +Mrya +Pzmaap +Vkxwa +Mdaukyonzoi +Bshegylun +Yajy +Ilmugmgy +Yppjmnfvc +Aqpje +Fpoqaui +Xise +Cimeyof +Cquadyqw +Yutqlmp +Kyy +Fzdsor +Lyuboypy +Gyimefiyiq +Cfay +Naoy +Kzavnezdyli +Cydyd +Geo +Oti +Gpdagyn +Lenk +Vukeguh +Gdnueieyqeo +Lnuyiivooe +Dpav +Pea +Inrdvbwxyi +Vgweaysq +Lcikfzitk +Juoawovuhy +Hdxaz +Vnateuxc +Zjryoeaasiw +Gmasu +Xikauiteug +Lomeioe +Kfefltavmqr +Qiopudnaxm +Zqo +Ieaxnlcw +Eyuymmsn +Ggutsmyzii +Waba +Bjy +Ozjvikv +Poutoatadt +Equczu +Zeccxieo +Irodaui +Yzalx +Ngisoyhahle +Fpjsbz +Wyihaigoc +Fsqs +Jkorwpemyak +Swaxjp +Rdo +Knxwjsq +Koisik +Jiyxuoaeey +Ydafkde +Zafheg +Moq +Tuueea +Auexyzuoeyy +Mhoosytuue +Euolyqei +Wyf +Bmzea +Coz +Zmaiuplayf +Ano +Ssjleooialz +Dvaygq +Wuyyoie +Fsg +Oenailoe +Aioouyoga +Pyspeu +Xxkomkupmc +Geyyqexuyio +Doyuojy +Nie +Vaeaeioa +Vyayayuhphj +Bemaae +Meanux +Xyn +Pcfrfpvq +Fiukaaav +Kegroazsl +Xpyuflsseo +Nencwdu +Radaoaymilv +Gyayux +Unfoequsyo +Lyu +Mwe +Lyeyif +Agyvdyiuy +Arizz +Afzaagyl +Naaafiuyuby +Iavywxsb +Dlro +Mgonfowpbt +Wupijy +Zevouzuoba +Jiesysaya +Wfuqlvwj +Mai +Hgoygf +Xhyuoy +Qaiilvkv +Tbnaowaimj +Miioylo +Vyayahobexy +Mumci +Auyllaoaau +Jok +Eeioya +Rxzv +Syk +Yujwtwyie +Vaigez +Dtaaivcsyou +Zoyu +Giiyyecg +Mdvkuyi +Ycaqicl +Oixab +Tyylaaihinn +Reauuyoqe +Ypeghmyaow +Pnesimunq +Sfrgdyyby +Csjybhjuxx +Pebedge +Tixe +Ysyrbi +Ofgvcmtyqg +Neayfuyauyg +Tumndgs +Mdatuyp +Maeqfq +Gyvkaqrpafu +Bpueqqhuya +Hpaeyopeu +Tiei +Byww +Tcyazvddy +Ameuuzmxbe +Rul +Okpebxrru +Fualueafe +Qykofehm +Sguvyvajr +Cyeyebeuaio +Jyapcrbu +Sugiehezy +Yphuia +Nua +Azyxaeo +Yuiaxaey +Awyj +Qhkyaneagx +Qveq +Syvsizvuy +Sczacpyvok +Wafyogyyavz +Vyoreavcm +Forhu +Waxfyoo +Yyfoajizyee +Cgjhitu +Maiiinyuzvs +Befboe +Nadoee +Fpuuzba +Lyokyab +Doxaybaaxmn +Sob +Oqjsni +Cpdbuli +Uluziyg +Dyelo +Mxco +Ulwvdy +Dyzo +Ciczshzpg +Jga +Wye +Ryhogoy +Tajaz +Byibpocuyh +Xybpz +Xhygiwgoli +Nuvitauoeb +Vneyoioqesu +Aziefenuhsc +Wgiqedwadik +Lgyidequq +Gudtoeteyyq +Byipkt +Aazsyboia +Recophu +Yyimg +Mkketu +Ookiojoq +Geob +Glyplvaz +Ethooe +Eaaayl +Feyhhue +Gikolwnqyv +Yguucy +Nipyyyejgl +Fyay +Xauoygyeh +Ijiiu +Lyo +Ubcesbbwu +Jizum +Zlb +Ryztizeezp +Yna +Wdyaoe +Zraoiuziqy +Jhbpuagfa +Aeti +Puak +Vzuutyn +Hoporifct +Srxiyhe +Meeeynonao +Pus +Khykayaoaa +Isvpimuumfa +Tlxydnxzbkd +Nyqcyzoy +Qhiohegiw +Qae +Hmuvnryriys +Dhquvo +Ekiky +Blupibaj +Myvptetfawu +Oehbizyoo +Baskiez +Bny +Pfud +Dliho +Xcvi +Nia +Mexfpeouuk +Rmksyz +Nienczqtos +Bxipaumpe +Fymtimeoilk +Tbojo +Keppfe +Yyuiroaoye +Wrzooohaeyx +Dnoeveagynu +Gefarueohyd +Zeylfbe +Dicbsaceaui +Mpoinn +Daidjybi +Kuaii +Zuygtrjokp +Vyvujreez +Fhayln +Zoibrpyqiaa +Mtgauyfeeo +Mbsouqt +Gwcpaaoauo +Pankg +Pke +Mukayed +Wwqjs +Yvqxpubhep +Ljw +Pxuoomn +Ummipqh +Bmnidui +Ttadawz +Ziidd +Oeuojhxp +Qvmwoiqsgay +Nyie +Horaumn +Krtliiiyaa +Peuaviup +Eyhowul +Searioasy +Ralcxyyayf +Eeut +Dqituqaxyia +Jmjeuuadgfl +Lwueoqeizt +Vhsr +Nizelyiu +Iimeskyubxw +Vkei +Dwc +Vuoeya +Rqieeinogry +Gaovdfcgm +Agxkxycya +Xwbinhvi +Secl +Wopuf +Uoyl +Znbdfko +Uyue +Vmatookcuyu +Tdyufy +Iuoofuaxbep +Pjydlg +Ywuc +Qdoiiqfiyo +Dhbog +Aebolftyawg +Oqpaaeou +Onimhf +Cqqioaiuac +Uierziuou +Dqamfuie +Xiie +Cxeudimaomk +Qye +Dauyiwa +Vygtymetqv +Hyuuat +Kwunctaorqa +Qie +Edna +Yofide +Auddou +Tufmhoia +Gyauooazoip +Eiyd +Izaz +Vbyz +Rcboieudpi +Baigweqnwy +Bnreygcou +Bftuuhu +Uaicwi +Iedu +Ymon +Peezezat +Jeiw +Ejofuguard +Pji +Nyayzeuji +Derz +Ahwzzmyat +Nilopesvpji +Ufuquxzyd +Eeaeooxbe +Qemyr +Cewu +Gpxubhawdy +Cqdhuako +Aapzpzolw +Lhotur +Yqriy +Luxuytskiey +Rwfw +Feuzceiu +Lylw +Doo +Mlyadmynt +Docjju +Nvooa +Oihilniyi +Tgwuxxegi +Fyhhi +Mfk +Jucrcuhiadv +Zsuouuaazay +Naysyizi +Lyveveyr +Jybjexyahs +Zcuuyiz +Rwiujp +Deobiznuqhg +Zhyi +Xepeaainb +Auueuavyf +Mayo +Xfhfyqeqo +Nhwaul +Criij +Oaqf +Loj +Koyuoeyiu +Bxjdvsaxvl +Kpspy +Gjry +Ymyiey +Rxyyai +Lyvyeicr +Holz +Mkwbyiyrtyt +Dohhizjyoq +Ohby +Sab +Yynba +Usoe +Wigiuu +Eyju +Ayaiqle +Byoohbye +Uilogyou +Ymug +Koij +Lxhyilm +Arlhzza +Ofvlf +Cyaq +Nlxua +Lvuoe +Wrjiuvwyoc +Uuoteeub +Bolyaueipi +Vudyrra +Svjmuaiu +Mylai +Aehy +Faefpeiorof +Ozio +Ogvzdc +Cyubeay +Wuuu +Vqthfy +Lbvfxgckei +Codpudfrf +Jgoazyayli +Bygeu +Lah +Tyv +Iuuyvyd +Rvuuyoso +Vuwzqjeuett +Pbgzafori +Kuqa +Wjco +Bqehiyu +Hjwyigu +Fcjiyjac +Syidufu +Gyareonyii +Lheqpbyhyvu +Ysaauun +Hzgneoqx +Pconybrj +Mawoaw +Zxhha +Yvjxk +Weoyyaai +Dvyazi +Hwy +Uywymq +Qrq +Oyxzfnv +Rtoyi +Soieyyyypu +Zyaa +Gpeersui +Pgfko +Mlaekvu +Nogenuopg +Hdi +Zeuya +Guhhppc +Gaaf +Dyohuucyir +Mnetx +Mmy +Ayy +Weaauy +Acegewc +Pzr +Qceoyowvi +Iqurug +Rvdiopii +Emtehebnbq +Xjvfo +Liqajyko +Kjeees +Ddz +Pkdyyaia +Jshm +Facuuq +Rarj +Jse +Xunaaiaeiji +Qonfnyln +Niamawajigo +Plrgloje +Ideyhu +Vyozria +Rrfdanodqf +Ylwe +Mxa +Pypjyiun +Areh +Jfsd +Fherznoi +Vopwrmyes +Rem +Fzuxuiyhi +Deijyicyfa +Yuhx +Wajmydigoew +Zaruhslyvao +Emuhaqrvai +Ruqikud +Pbi +Xgikukabay +Oaupiuozqqo +Xyvoqeany +Sid +Zuy +Eizpeooyy +Guapv +Aybeauiqecf +Rtp +Acaejnu +Ayoiysuyldb +Zybllcnib +Koneioeny +Wqyduoykfe +Lopc +Rosmrfuzet +Pivadyeglar +Yioaoi +Eba +Vayxy +Pthbakksia +Moumu +Yxyhtex +Qrtaiymoeu +Oaezu +Dzzugc +Uanplu +Ayiyjgyzft +Ifuidfyi +Qedo +Jyeeyn +Whyyczegb +Citooa +Elp +Bbfsnu +Guy +Oemimaadoi +Abkufqu +Odqliuohok +Iiaxedkyy +Rayiyaoo +Kanhvauuup +Qaalgja +Hviguyaea +Dpoa +Dpg +Waynkk +Piiaiuf +Nioa +Ayibienlj +Siduuaofsek +Ynopaspu +Erwoqbid +Syi +Jwunii +Xfubio +Wfya +Vjuijm +Uqyjsyaquo +Belo +Nmjxyx +Uiwyqiyqta +Qpcpqtdbeux +Fna +Kooa +Munbeymiof +Veiuioyym +Rlgeye +Aipuuiioob +Gyrdk +Utkrkq +Xyi +Cow +Wmmyfopocat +Joiqkn +Ijawb +Byif +Xajziwu +Etbfxfudqua +Coaewisvry +Rfwjdyoep +Ayf +Galnynaar +Qyqek +Deowwe +Keojqbocaxy +Mgeo +Noo +Hbieorzqlzg +Naw +Suiy +Nzoykiiykew +Wejyexxpib +Npwipy +Iolunukyq +Nvlmjxivq +Aoevveyuha +Aes +Yqyetay +Jookv +Wqi +Mlhadoeqbuo +Xcifangugz +Uvvuyysyby +Rvwaud +Eowpgyy +Paa +Mum +Xcozeyebu +Rjgok +Wvimwphmr +Xyap +Gwzcejwhll +Zerqphc +Jeuyvdced +Xfycg +Fouufxjiraz +Jehogya +Icadmzuuugz +Atyaynv +Jua +Tipn +Paav +Gyi +Gmpyjtuue +Qyyuhbyxwu +Ediy +Cozmqyhaoac +Iefyfgc +Juyepojyju +Woudgpeeei +Wdwunrycg +Uyodl +Fsiqasyiye +Lcyluulub +Kbehx +Tkebuyroiki +Luudeansm +Hizoyk +Iaxnc +Pzvpiysju +Twyziyvu +Oeailyep +Vjb +Pguo +Acyekbuj +Gvy +Urxaj +Iiulqaoo +Xqryqrpao +Faujw +Zuaiuoy +Psvnvaod +Edis +Paqyfp +Aeu +Uaqmviueey +Rpuidoeuh +Wydlgcedyx +Dyayvy +Rayjsd +Gneypy +Covraagf +Nodztblpjo +Shyhcrbigf +Bpeyareocwb +Vaavytzu +Uoyqjhh +Jdckdywye +Hfj +Qyajde +Aikygy +Zqjgkxt +Taw +Ruv +Taafaavbk +Wyerkeaul +Llozo +Fry +Swsaesaijuz +Egvyqoialqh +Jalyopvauuc +Joeyeypuyru +Tkokoa +Uty +Zsyniueaoan +Geoyxyeu +Hkrimas +Gaysosar +Qrou +Veeiqcoioa +Kiiemeuyuab +Kmhgcpyoxhy +Nuoaoma +Fcerm +Omoczlh +Omudbu +Hdr +Nsoajuixxty +Wavvjia +Fyx +Hyzcfivfeic +Duybx +Wynay +Quiivr +Gaquoebaa +Zosidc +Xeqosylqssy +Dyxuyglee +Rtp +Qeixlomi +Hqiuo +Mampwny +Biekauopoy +Jaoxla +Jylut +Kolkyc +Pld +Lafa +Gbuia +Oro +Yvz +Wukncep +Sauuyrqyre +Aroieuqti +Oatenoep +Louymiv +Siedokil +Ufoyoyihtom +Pzybydsyha +Jiuuyhwysyy +Fyy +Riuyy +Mcar +Tyyaeei +Uoawala +Eedlueae +Cescyey +Oycpoza +Kylrvh +Uaycuyvaers +Extt +Poio +Scesn +Mhiqedyawwc +Noxa +Lbuyehxzea +Keyieobe +Caavpud +Xtozhyebyoy +Hrqinynzbiu +Bwa +Sop +Kvmeeravu +Wyei +Bruqw +Qkoiury +Taoysh +Sbyoyiynul +Jyyf +Nan +Nbe +Ydoyeyai +Ciogar +Wbjjitd +Lzbac +Wjoloy +Pgve +Too +Dxlhc +Xluuwodaa +Isroekeey +Jufb +Oiusoatuid +Vueeioecik +Jpogyaiy +Gfmltyanu +Duyseosocbi +Ztry +Fyaiuqeate +Hyi +Koveypkas +Gavyou +Bybtiodm +Mcmg +Giueo +Ras +Dyeyweyi +Jaqoejxou +Gaofibeno +Voy +Fyw +Iii +Guryhugiye +Oea +Cerrnaqu +Thqmkoyyfae +Peuqinnin +Umnuhooay +Qtijaikog +Tnpwotdro +Xijaijywgcd +Lwvucyano +Wetoo +Bte +Aoiijzyieol +Ggyp +Yqb +Hemyqekue +Czduhiokko +Szl +Roeeyu +Coro +Jklrjfdxo +Uuoicuiyxt +Yykobc +Euqmz +Jyvncy +Reatpoijyz +Somyyoy +Vyrsycua +Dfshaie +Jaqop +Xzhifys +Lkio +Hvyn +Qodaetx +Eouztnok +Mnpiziwxyia +Hejui +Tugwkriot +Diygedvghy +Dzrkoeul +Rusgvq +Aqotmd +Fsltoyronea +Qtoaoee +Aauie +Vaiuyalo +Iovkgwi +Gyuhou +Koi +Tnemyuy +Zzsfubiatiu +Uhyzeroyua +Kao +Pboisiifeao +Vgvduoca +Nvazyduyvy +Nikarxuvaym +Ziivyii +Mmziaptxaa +Wauyoaabaa +Tva +Fus +Teyco +Jtockrrkapy +Juviiyeyoyd +Uwhebw +Sjohx +Pshyyucio +Kea +Ceaewy +Lmjufyyx +Dgeysfayu +Vyoa +Beydgieubae +Kfu +Geiuauayguw +Oqbniebxa +Budlu +Bnadyie +Maocau +Lykupux +Xegetew +Eyev +Oedafyl +Loyounq +Htadvolej +Nima +Yay +Teauiyy +Geio +Qajgp +Etoe +Lfuua +Labuyuartho +Riexoij +Wyyy +Taifoeywiei +Pwyvyzeei +Gpyljmumov +Maieo +Aqxoriuc +Bymprogh +Ryn +Fuojoyvo +Fpeeweqyuu +Zskuueiouzh +Pnily +Eikzeo +Qdfetotyaht +Rjieez +Hnaryai +Eoyydoh +Crazudcs +Dof +Ciospn +Hvpkuage +Duau +Scifoj +Hxaptiuuoy +Wylkueyl +Sehxymm +Eryxwuyjoe +Ayueuou +Ewta +Alovnylasov +Onuicuyyhe +Weu +Fea +Xqkrprtyu +Eeehyozoy +Qnolaav +Zyx +Diguvac +Biosaauouji +Xyo +Stujjbd +Jysuee +Kiyweuse +Wezcek +Lebby +Ajgxtz +Boyqbyuey +Betw +Hda +Daofiab +Wyehzeai +Pybu +Jtun +Kasaioy +Ujceij +Koaclyuqo +Qdepyiyah +Qvbdyycxeay +Bpduysxeq +Naoisoyt +Lpukapfo +Sxbmfloi +Tuoiqowstyi +Yutecatdeyk +Wieaiunv +Xyyyey +Uovoykxuh +Dyz +Leyqy +Eoydga +Eulwjdo +Tyagfayb +Aycn +Xoh +Nhsurcwdei +Seyhigjth +Hrkyneuk +Kesyvq +Ndvozyeouea +Lal +Dnpyjug +Kvjafrayui +Yrtodmfqae +Oukay +Myaiiaasirn +Fsidhwaiaei +Teoyajfiz +Moubok +Qoebluyj +Jeiepvi +Likzac +Moisa +Oupanuiey +Vbiekl +Dyan +Rawijcyoczi +Knelroryafy +Cnea +Cquhbm +Taeqalylom +Wliiiuxcm +Upzji +Hioxmov +Cojiuyeu +Reuyfbif +Vijs +Tom +Ply +Lrbnik +Yhl +Eubkshkei +Oqxz +Vysmykui +Dki +Luwadxydcra +Deiey +Kizauyexcau +Ziyojtz +Dkisfc +Iotfe +Gyqeaiu +Teki +Roqozos +Miy +Poogyuol +Syuueu +Rjoqcrk +Pecjfuyyyu +Osxm +Mfygmieas +Umoiroaeu +Ihypiey +Gavioyetw +Aaf +Oyced +Abee +Fboqy +Neyyuou +Huisi +Jypuaeya +Btukrooyaiu +Ujvvq +Fgppz +Eyi +Oenak +Aopudy +Dfpxuytycw +Uuypayii +Jbetooasue +Hieaeka +Zome +Sgwea +Xking +Hjiyyexkega +Ryyuyaez +Ayxvyaaeaa +Nyeukxaaubm +Bwi +Nyrjqjgroev +Zjqxihsacfo +Sqccyuepsay +Jeypn +Ataufndd +Dhyiicmacku +Fphubl +Jjimqufmi +Zoexdqtuyw +Yeegk +Dcbfga +Pqvytz +Mmeoo +Nweijos +Yzerehyeh +Keyiao +Vewenzew +Qazgehyufi +Ziauyid +Kuqqzfpqdza +Yyvnhxydkuh +Cevjof +Juxunobvsvi +Qqkhauywkne +Glebyky +Reuiyoseuo +Tegpu +Maaayo +Navayuvc +Ycapl +Cjfoeebtquy +Iudsz +Ayykzvxvle +Vrgf +Qirac +Bayminoiv +Imteebf +Voietpaa +Oaamet +Maalh +Cdnue +Tcnwncse +Zotruyev +Aye +Oba +Aymlytqn +Keeacevgy +Bfbkq +Ivaui +Tsyv +Uubxaeci +Jydoexiwew +Pskv +Aioj +Uoaqoo +Vpeuyiyehf +Pynarebur +Jay +Aipci +Day +Nns +Nugeo +Rdhqa +Hzeeaddf +Faesianqydi +Oliqyeo +Jneefunah +Ivfmtwo +Bjvuueuukty +Tlaaaldu +Eorourqd +Wib +Uiguvyxz +Qoihncjsia +Iuciyacu +Ooasaidmfjc +Cxucu +Jeyvwaiugea +Newlwae +Pwoeciiin +Qzccitl +Lyhho +Teauuv +Rfsfnbuety +Dgaow +Kaantlyiil +Egyryekye +Dfinuobeyvt +Bup +Qyboao +Uahnu +Ioebj +Cazlypzlaii +Eayb +Vcux +Tvlzj +Lmi +Nzoyozb +Viel +Taoaereooyy +Wcatxyy +Oybu +Pus +Uugeagop +Tos +Erfo +Qyoigzrhyuu +Lyaoa +Doy +Enia +Oxryaeueh +Tjzxy +Ryemu +Slmi +Euaza +Oeysug +Gufmoyb +Kyt +Yag +Vtcheoi +Gqd +Yazioi +Wtnoitpit +Ayyeea +Zuiayspie +Gwzuheib +Iexnu +Cypagcceeoe +Tao +Ubuogepao +Cuyoocpyd +Rxny +Gnkizvaoep +Tesqe +Uyxc +Weqvruygou +Guopekc +Cymt +Xouh +Lee +Duea +Yfag +Jqnrgraia +Riyaaui +Fiuktxjuo +Wyo +Uyuwkqiuu +Fukuut +Ycsisigoa +Axdpenu +Xvt +Luefiooa +Moyk +Ejqpxokuj +Jaaaeilkekw +Qynyl +Wxeyeoxoui +Yzt +Ssku +Rdwsrp +Hrh +Gvqqafawa +Zpduioqif +Repatbuf +Stuoouqyf +Sdnurgoqeg +Qyvfyoxln +Kcdyuxmt +Cvrmr +Rin +Faaoei +Ssyr +Pncwhu +Qsod +Auteaccizs +Syaeehiali +Kjogpaxurj +Wyrpiuiipaq +Noilyoez +Fizaea +Fumuqqidui +Dyaaygid +Uija +Gbboyqhuo +Ezue +Uid +Wuiop +Njise +Aixamyylad +Iouhgjucoun +Gifd +Dxyceybfoya +Wyi +Vvcxea +Suxteg +Iduy +Dte +Boiuidmuct +Zytocmyjgla +Cyuno +Svlias +Esnbooa +Aoootu +Btaneio +Bmokioiohxj +Zeova +Zopouafgas +Mfezmsodiz +Dnyiryk +Gyinyu +Iduy +Lul +Hsifyo +Zuvfsaokay +Xyjiydyiyey +Uoysyoqomlp +Swls +Hqyjqw +Bzuykeoqs +Vuuce +Aaaeu +Vrblakt +Gikmou +Gpywq +Uroyvyea +Duyyae +Wyxpq +Pixxzeuwet +Hhmderygq +Rowee +Dvvkvi +Wyohyj +Suizoei +Oem +Gooieaoyyn +Tkyworbyyd +Egqcolyuuex +Rmeojiq +Vabxsezpdy +Lusciobyii +Mcvy +Rywas +Gyv +Msyvvyhu +Smz +Uojepopdexy +Guiyeuyyayg +Tvoiu +Bsmvvoieue +Fejofotgj +Koilyovpczu +Gapyt +Gmgtiacn +Daadoev +Yoeqlja +Urai +Gputdvyja +Yealutoih +Uoqyi +Xxoxpyomty +Ejpurayg +Reeimeulino +Reuet +Qooovep +Axwaojdoy +Qppciydsee +Xeoh +Rzynmg +Lzec +Roojleoufcu +Peaysimyuy +Hsmirayhe +Yaeiizyeayn +Tugxecgues +Yoaduwocw +Viezupuey +Ymizyuf +Qycaouyu +Xebuosnt +Upipya +Vax +Woyagiasmaa +Ebfydmfm +Ploxno +Scyhhooedg +Efaoay +Koypeeaeeo +Mvyyvicyudp +Jnaakl +Mfwjinoy +Ncayooirqi +Crhyw +Vztynpgxy +Wzytgpyk +Xpdfjgbiwq +Oxytol +Oxivo +Uohy +Vroxum +Fwytizihcs +Lzyoahrrju +Rqugtip +Exxiwneiea +Por +Xxo +Hyly +Extqexy +Hvvgaywuvb +Ydzjfu +Xijquaoaefi +Swkyguoe +Qeaxvnsb +Ohezvakdoz +Awmeoyy +Vwm +Oyr +Kafvf +Wgurie +Soo +Woemz +Ooyuohjyfu +Jqanar +Myej +Swyd +Jnwk +Lptaa +Dqypebb +Gmukrfeo +Ptluyraduod +Ridazxeuqou +Kuxyvysoeu +Lgyomvpy +Yoph +Wiomahayi +Lydofi +Ysyuvisoeoy +Vllzhyu +Tuo +Ruyagvei +Oyfutofm +Hipmawezhyx +Babvweu +Aoevaryp +Ioazyyey +Isaeoo +Pguyqi +Yymauuyuiyc +Lyoeuvndnv +Mqsoaq +Exioryeyyue +Kood +Njkpqsymrz +Tvbdescayx +Bgtiuyonev +Gct +Zuaexinlg +Bqokesoafj +Auiuy +Vahmiigtub +Ukdwlrmz +Cdueof +Xsyq +Ceeo +Jjiem +Xubyaquky +Sljeryoimz +Pgj +Bymofiim +Zaqb +Rybokt +Palbtgaufdz +Joiyrpj +Qzotsg +Meiahi +Lydiijk +Zioa +Cinrsk +Quaeoum +Civiewch +Nhfldaaemyn +Gyjrujqu +Oleutyui +Zwuioeyj +Oizluniuuix +Uzy +Rzupeyooia +Tyui +Bfkclhhxia +Dojao +Qcjda +Lybuiekoz +Qoyj +Fdqruhhxf +Dypcyn +Cilo +Xoosayiuyuu +Okx +Teixuyqkc +Lwagugliime +Qydejco +Pgeciainn +Qudox +Dxeei +Jmvujp +Suxegfyo +Ybk +Zeqp +Qnlpg +Dubatoe +Sntyibetzbo +Aeuykmy +Dqi +Touaiyoyg +Dyjyiuaeue +Rqggihoe +Meueabyi +Xszsyurjuuy +Fotyekw +Gopfoiiayv +Yoirqleiqa +Vppiyl +Tiqie +Irsztzmohe +Reriave +Uyunjui +Ebdrzifg +Ggipruyn +Pcxyiaieiyb +Etu +Kyyylweoy +Teoieduucj +Zqeediuk +Vjuameuicw +Ocaeodi +Naexes +Hedeewiiay +Tyuawiqqy +Jiezyx +Qhiyw +Meyoeu +Jotpyoxht +Oysyixquuvd +Kixsiijf +Ihsvboky +Lanyurti +Eynhzbr +Cuuppoy +Fsoubusyly +Ornyevom +Pys +Feeyl +Noiieoy +Wiuxoweyqk +Jce +Bsrxeyiae +Fkeczgjyqw +Nzfclsi +Aifbx +Oedac +Hiyeaievry +Cvv +Mxyqeocavrp +Wbyw +Khyao +Solpueiei +Xyufa +Ywrb +Csunq +Ucyue +Tzuxa +Ieiyeiiu +Uyzzlio +Pukum +Tzaygope +Fiseyiuivfz +Qoolbkejwt +Inaevqj +Qyy +Ynikauiraa +Wecoraojiiw +Xhiay +Dqiy +Vjo +Rahywg +Fzg +Nuy +Wbnoz +Teadiuezkiy +Ayxagyeya +Jpkwqi +Hwcahyozt +Uuzvau +Jcvol +Xoua +Qevnxjnzo +Xyt +Ftryo +Wsokananyox +Goaux +Jjsiauya +Peonxordo +Gji +Fgcfq +Jugdiw +Wyzoiyxpaab +Jztu +Vbesebogklu +Gyvm +Bekyaepht +Wuyfsuwxie +Mhoiyuxu +Gcruoryacqu +Lmheouejuhw +Ndeuu +Qeyreuxieod +Vmwayogy +Aubeveeo +Vnfgaoprry +Npnadaeoyf +Qaqw +Mwgenlja +Kyapjmydriy +Yisypauihe +Ounaffomezy +Ijoauepeae +Pfr +Vaohyoe +Eizcsmqjc +Zyaiiyuoji +Pkyuyminf +Drungk +Kyovihwrn +Rahn +Atododhfskf +Pte +Rumtelygftw +Baducsvf +Nhdfasuxyku +Ggoyeaidpyo +Tzrioouo +Gofubub +Neue +Knqwko +Lpjhiey +Igoyyyqjaw +Krtepnijir +Ydluq +Zytovyl +Ityu +Vasae +Xgtc +Zrougaseeie +Nqjynrveiu +Edouqyifsoh +Nuputlu +Byyyicy +Xpvibsau +Xiap +Kyulhyniphc +Lygidxadqeo +Duyoh +Axza +Xaioy +Jimec +Xydvey +Gyyxpk +Gijiayenfa diff --git a/osininyai/[2] maze/1.txt b/osininyai/[2] maze/1.txt new file mode 100644 index 0000000..7349d19 --- /dev/null +++ b/osininyai/[2] maze/1.txt @@ -0,0 +1,4 @@ +#### +# E +# ## +#S## \ No newline at end of file diff --git a/osininyai/[2] maze/2.txt b/osininyai/[2] maze/2.txt new file mode 100644 index 0000000..8e5faa8 --- /dev/null +++ b/osininyai/[2] maze/2.txt @@ -0,0 +1,10 @@ +##E##### +# # +# #### # +# # # +# # #### +# # # +# #### # +# ## # +# # +##S##### \ No newline at end of file diff --git a/osininyai/[2] maze/MP_maze_gen.py b/osininyai/[2] maze/MP_maze_gen.py new file mode 100644 index 0000000..666a473 --- /dev/null +++ b/osininyai/[2] maze/MP_maze_gen.py @@ -0,0 +1,142 @@ +import random as rd + +def CreateMazeFile(size): + if size==10: + with open("maze_10x10.txt","w") as f: + for i in range(size): + line="" + for j in range(size): + temp=rd.randint(0, 2) + if temp==2: + line+="#" + else: + line+=" " + if i==0: + l=list(line) + temp=rd.randint(1, size-2) + l[temp]="E" + line1="" + for k in range(len(line)): + line1+=l[k] + line=line1 + elif i==size-1: + l=list(line) + temp=rd.randint(1, size-2) + l[temp]="S" + line1="" + for k in range(len(line)): + line1+=l[k] + line=line1 + line+="\n" + f.write(line) + elif size==50: + with open("maze_50x50.txt","w") as f: + for i in range(size): + line="" + for j in range(size): + temp=rd.randint(0, 5) + if temp>3: + line+="#" + else: + line+=" " + if i==0: + l=list(line) + temp=rd.randint(1, size-2) + l[temp]="E" + line1="" + for k in range(len(line)): + line1+=l[k] + line=line1 + elif i==size-1: + l=list(line) + temp=rd.randint(1, size-2) + l[temp]="S" + line1="" + for k in range(len(line)): + line1+=l[k] + line=line1 + line+="\n" + f.write(line) + elif size==100: + with open("maze_100x100.txt","w") as f: + for i in range(size): + line="" + for j in range(size): + temp=rd.randint(0, 5) + if temp>3: + line+="#" + else: + line+=" " + if i==0: + l=list(line) + temp=rd.randint(1, size-2) + l[temp]="E" + line1="" + for k in range(len(line)): + line1+=l[k] + line=line1 + elif i==size-1: + l=list(line) + temp=rd.randint(1, size-2) + l[temp]="S" + line1="" + for k in range(len(line)): + line1+=l[k] + line=line1 + line+="\n" + f.write(line) + elif size==0: + with open("maze_no_walls.txt","w") as f: + size=rd.randint(10, 100) + for i in range(size): + line="" + for j in range(size): + line+=" " + if i==0: + l=list(line) + temp=rd.randint(1, size-2) + l[temp]="E" + line1="" + for k in range(len(line)): + line1+=l[k] + line=line1 + elif i==size-1: + l=list(line) + temp=rd.randint(1, size-2) + l[temp]="S" + line1="" + for k in range(len(line)): + line1+=l[k] + line=line1 + line+="\n" + f.write(line) + elif size==-1: + with open("maze_no_exit.txt","w") as f: + size=rd.randint(10, 100) + for i in range(size): + line="" + for j in range(size): + temp=rd.randint(0, 5) + if temp>3: + line+="#" + else: + line+=" " + if i==size-1: + l=list(line) + temp=rd.randint(1, size-2) + l[temp]="S" + line1="" + for k in range(len(line)): + line1+=l[k] + line=line1 + line+="\n" + f.write(line) + + +CreateMazeFile(10) #10x10 +CreateMazeFile(50) #50x50 +CreateMazeFile(100) #100x100 +CreateMazeFile(0) #no walls +CreateMazeFile(-1) #no exit + + \ No newline at end of file diff --git a/osininyai/[2] maze/[2] Maze.py b/osininyai/[2] maze/[2] Maze.py new file mode 100644 index 0000000..fdcfd5f --- /dev/null +++ b/osininyai/[2] maze/[2] Maze.py @@ -0,0 +1,499 @@ +import heapq +import time +import codecs +import csv + +class Cell: + def __init__(self,x,y,isWall,isStart,isExit): + self.x=x + self.y=y + self.isWall=isWall + self.isStart=isStart + self.isExit=isExit + def isPassable(self): + if self.isWall==False: + return True + else: + return False + +class Maze: + def __init__(self,grid): + self.grid=grid + self.width=len(self.grid[0]) + self.height=len(self.grid) + self.start=None + self.exit=None + for i in range(self.height): + for j in range(self.width): + if self.grid[i][j].isStart==True: + self.start=(j,i) + if self.grid[i][j].isExit==True: + self.exit=(j,i) + + def getCell(self,x,y): + return self.grid[y][x] + + def getNeighbours(self,cell): + x=cell.x + y=cell.y + cell_up=None + cell_down=None + cell_left=None + cell_right=None + + #up + if y>0: + if self.grid[y-1][x].isPassable()==True: + cell_up=self.grid[y-1][x] + #down + if y<(self.height-1): + if self.grid[y+1][x].isPassable()==True: + cell_down=self.grid[y+1][x] + #left + if x>0: + if self.grid[y][x-1].isPassable()==True: + cell_left=self.grid[y][x-1] + #right + if x<(self.width-1): + if self.grid[y][x+1].isPassable()==True: + cell_right=self.grid[y][x+1] + + #neighbours=[cell_up, cell_down, cell_left, cell_right] + neighbours=[cell_down, cell_right, cell_up, cell_left] + return neighbours + +class TextFileMazeBuilder: + def build(self,filename): + with open(filename,"r") as f: + lines=f.readlines() + grid=[] + x=0 + y=0 + for i in range(len(lines)): + line=lines[i] + x=0 + row=[] + for j in range(len(line)): + if line[j]=="#": + row.append(Cell(x,y,True,False,False)) + elif line[j]==" ": + row.append(Cell(x,y,False,False,False)) + elif line[j]=="S": + row.append(Cell(x,y,False,True,False)) + elif line[j]=="E": + row.append(Cell(x,y,False,False,True)) + x+=1 + grid.append(row) + y+=1 + return grid + +class MazeBuilder: + def buildFromFile(self,filename): + grid = TextFileMazeBuilder().build(filename) + return Maze(grid) + +class SearchStats: + def __init__(self,ttime,visited_cells,path_length): + self.ttime=ttime + self.visited_cells=visited_cells + self.path_length=path_length + +class BFSStrategy: + def findPath(self,maze,start,exxit): + tstart=time.perf_counter() + queue=[] + queue.append((maze.getCell(start[0],start[1]),0)) + visited_cells=[maze.getCell(start[0],start[1])] + Path={} + f=0 + count=0 + while len(queue)!=0: + temp=queue.pop(0) + cell=temp[0] + steps=temp[1] + directions=maze.getNeighbours(cell) + count+=1 + + if (cell.x,cell.y)==exxit: + end=time.perf_counter() + #print(end-tstart) + f=1 + break + + for i in directions: + if i!=None: + flag=0 + for j in visited_cells: + if i==j: + flag=1 + break + if flag==0: + queue.append((i,steps+1)) + visited_cells.append(i) + Path[(i.x,i.y)]=(cell.x,cell.y) + reversePath=[] + if f==1: + cell=exxit + while cell!=start: + reversePath.append(cell) + cell=Path[cell] + reversePath.append(cell) + reversePath.reverse() + #print(len(reversePath)-1) + return reversePath, count + +class DFSStrategy: + def findPath(self,maze,start,exxit): + tstart=time.perf_counter() + queue=[] + queue.append((maze.getCell(start[0],start[1]),0)) + visited_cells=[maze.getCell(start[0],start[1])] + Path={} + f=0 + count=0 + while len(queue)!=0: + temp=queue.pop() + cell=temp[0] + steps=temp[1] + directions=maze.getNeighbours(cell) + count+=1 + + if (cell.x,cell.y)==exxit: + end=time.perf_counter() + #print(end-tstart) + f=1 + break + + for i in directions: + if i!=None: + flag=0 + for j in visited_cells: + if i==j: + flag=1 + break + if flag==0: + queue.append((i,steps+1)) + visited_cells.append(i) + Path[(i.x,i.y)]=(cell.x,cell.y) + reversePath=[] + if f==1: + cell=exxit + while cell!=start: + reversePath.append(cell) + cell=Path[cell] + reversePath.append(cell) + reversePath.reverse() + #print(len(reversePath)-1) + return reversePath, count + + + +class AStarStrategy: + def H(self,exxit,cell): + Hn=0 + if exxit!=None: + Hn=abs(exxit[0]-cell.x)+abs(exxit[1]-cell.y) + return Hn + def findPath(self,maze,start,exxit): + tstart=time.perf_counter() + queue=[] + f=self.H(exxit,maze.getCell(start[0],start[1])) + heapq.heappush(queue, (f, f, (start[0],start[1]))) + + f_scores=[] + for i in range(maze.height): + row=[] + for j in range(maze.width): + row.append(None) + f_scores.append(row) + + g_scores=[] + for i in range(maze.height): + row=[] + for j in range(maze.width): + row.append(None) + g_scores.append(row) + + f_scores[start[1]][start[0]]=f + g_scores[start[1]][start[0]]=0 + Path={} + flag=0 + count=0 + while len(queue)!=0: + temp=heapq.heappop(queue) + cell=temp[2] + directions=maze.getNeighbours(maze.getCell(cell[0], cell[1])) + count+=1 + + if (cell[0],cell[1])==exxit: + end=time.perf_counter() + #print(end-tstart) + flag=1 + break + + for i in directions: + if i!=None: + temp_g=g_scores[cell[1]][cell[0]]+1 + temp_f=temp_g+self.H(exxit,i) + + if f_scores[i.y][i.x]==None: + g_scores[i.y][i.x]=temp_g + f_scores[i.y][i.x]=temp_f + heapq.heappush(queue,(temp_f,self.H(exxit,i),(i.x,i.y))) + Path[(i.x,i.y)]=cell + elif temp_f0: + path_length=len(path)-1 + else: + path_length=0 + return SearchStats(end-start, visited, path_length) + +def test(): + #maze=MazeBuilder().buildFromFile("1.txt") + #maze=MazeBuilder().buildFromFile("2.txt") + maze=MazeBuilder().buildFromFile("v.txt") + #maze=MazeBuilder().buildFromFile("maze_10x10.txt") + #maze=MazeBuilder().buildFromFile("maze_50x50.txt") + #maze=MazeBuilder().buildFromFile("maze_100x100.txt") + #maze=MazeBuilder().buildFromFile("maze_no_walls.txt") + #maze=MazeBuilder().buildFromFile("maze_no_exit.txt") + print(maze.exit) + print(maze.start) + stats=MazeSolver(maze, "BFS").solve() + print(stats.ttime,stats.visited_cells,stats.path_length) + stats=MazeSolver(maze, "DFS").solve() + print(stats.ttime,stats.visited_cells,stats.path_length) + stats=MazeSolver(maze, "AStar").solve() + print(stats.ttime,stats.visited_cells,stats.path_length) + #print(PathFindingStrategy("BFS").findPath(maze,maze.start,maze.exit)) + #print(PathFindingStrategy("DFS").findPath(maze,maze.start,maze.exit)) + #print(PathFindingStrategy("AStar").findPath(maze,maze.start,maze.exit)) + #PathFindingStrategy("BFS").findPath(maze,maze.start,maze.exit) + #PathFindingStrategy("DFS").findPath(maze,maze.start,maze.exit) + #PathFindingStrategy("AStar").findPath(maze,maze.start,maze.exit) + +def run(): + maze=MazeBuilder().buildFromFile("maze_10x10.txt") + results = [ + [u"Лабиринт", u"Стратегия", u"Среднее время (мс)", u"Посещено клеток",u"Длина пути"] + ] + temp=0 + for i in range(10): + stats=MazeSolver(maze, "BFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append(["10x10", "BFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "DFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append(["10x10", "DFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "AStar").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append(["10x10", "AStar", temp, stats.visited_cells, stats.path_length]) + + with codecs.open("docs/data/[2]results.csv", "w", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerow("") + + maze=MazeBuilder().buildFromFile("maze_50x50.txt") + results = [] + temp=0 + for i in range(10): + stats=MazeSolver(maze, "BFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append(["50x50", "BFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "DFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append(["50x50", "DFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "AStar").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append(["50x50", "AStar", temp, stats.visited_cells, stats.path_length]) + + with codecs.open("docs/data/[2]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerow("") + + maze=MazeBuilder().buildFromFile("maze_100x100.txt") + results = [] + temp=0 + for i in range(10): + stats=MazeSolver(maze, "BFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append(["100x100", "BFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "DFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append(["100x100", "DFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "AStar").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append(["100x100", "AStar", temp, stats.visited_cells, stats.path_length]) + + with codecs.open("docs/data/[2]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerow("") + + maze=MazeBuilder().buildFromFile("maze_no_walls.txt") + results = [] + temp=0 + for i in range(10): + stats=MazeSolver(maze, "BFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append([u"Без стен", "BFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "DFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append([u"Без стен", "DFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "AStar").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append([u"Без стен", "AStar", temp, stats.visited_cells, stats.path_length]) + + with codecs.open("docs/data/[2]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerow("") + + maze=MazeBuilder().buildFromFile("maze_no_exit.txt") + results = [] + temp=0 + for i in range(10): + stats=MazeSolver(maze, "BFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append([u"Без выхода", "BFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "DFS").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append([u"Без выхода", "DFS", temp, stats.visited_cells, stats.path_length]) + + temp=0 + for i in range(10): + stats=MazeSolver(maze, "AStar").solve() + temp+=stats.ttime + temp=temp/10 + temp=temp*(10**3) + results.append([u"Без выхода", "AStar", temp, stats.visited_cells, stats.path_length]) + with codecs.open("docs/data/[2]results.csv", "a+", "utf-16") as f: + writer = csv.writer(f) + writer.writerows(results) + writer.writerow("") + +run() + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/osininyai/[2] maze/docs/[2]report.docx b/osininyai/[2] maze/docs/[2]report.docx new file mode 100644 index 0000000..32e3ce3 Binary files /dev/null and b/osininyai/[2] maze/docs/[2]report.docx differ diff --git a/osininyai/[2] maze/docs/data/[2]graphs.xlsx b/osininyai/[2] maze/docs/data/[2]graphs.xlsx new file mode 100644 index 0000000..e78dc41 Binary files /dev/null and b/osininyai/[2] maze/docs/data/[2]graphs.xlsx differ diff --git a/osininyai/[2] maze/docs/data/[2]mermaid_diagram.png b/osininyai/[2] maze/docs/data/[2]mermaid_diagram.png new file mode 100644 index 0000000..d571884 Binary files /dev/null and b/osininyai/[2] maze/docs/data/[2]mermaid_diagram.png differ diff --git a/osininyai/[2] maze/docs/data/[2]results.csv b/osininyai/[2] maze/docs/data/[2]results.csv new file mode 100644 index 0000000..6dd2c28 Binary files /dev/null and b/osininyai/[2] maze/docs/data/[2]results.csv differ diff --git a/osininyai/[2] maze/maze_100x100.txt b/osininyai/[2] maze/maze_100x100.txt new file mode 100644 index 0000000..37fc812 --- /dev/null +++ b/osininyai/[2] maze/maze_100x100.txt @@ -0,0 +1,100 @@ + ## ## # # # ### # # # ### ## ## ## # # # # ## # # # # E # + # ######## # # # ## # # # # # ## # ## # # ### # ## # # + # # # ## ### # ## # # # ### # # # # # # # # # ## ## + # # ## # # ## # # # # # # # # # ### ## ## # ## # # # ## + # # #### # # # # # ## # # # # ### # # ### ## # # # # # ## +# # # # # # ## # # # ## # ### # # # # # # # # # # # #### # ## +# ## # # # ### # ## ## # # ## ## # # # # # # # ## # # ## + ## ## ## ## # # ## # # # # ## ## # ### # # ## ### # ## # + ### ## ### # # # # ## ## # # ## ## # # # # # +## ## # # # ## # ## # # # # # ###### # ## # # # ## # ## +# ## # # ## #### # # # # # ## ## ### ## # # # ## # ### + # # # # # #### ## ## # # # ## # ## # # # # # # # # ## # # # +# # # # # ## ### # # # # # # ## ### # # ## # # ### # # # # # # ## + # # ### # # ###### # # # ## ## ## # # # # # # # + # # ### ## ## ## ## # ####### # # # # # # # # ### ## ## ## # # # # + # # # # ## # # # # # # ## # # # ## + # # # # # # ## # # ## # ### # # # # # # ## ## ## # ### +# # # ## ### ## # ## # #### # # ## ### # # ## # # ## # # ## + # ## ## # # # # # ### ## # ## # # # ## ## # # ## # # # # # # # + ## # # ## ## # # # # # # # # ## # # # ## # # + # # ## # # ## ### ## ## # ### # # # # # # # ## ## ## # # ## # + # # # # ## ### # # # ## # ## ## ## # ### # ## # # ### ## # # ## ## +### # # ## ## # # ## ## # ## # ## ### # ## # # ### # # # ## # # ### + ## # # # # # ## ## # #### # ## # ## # # ## # # # # # ## ## ## # ## # # + # # ### # ## # ## # # ## # # # # # ## # # # # ### # # + #### ## # # # # #### ### ##### ### # # # # # ## # # # # # # + # ## ## # # # ## #### # # ## # # # ###### ## # + ## # # ### # # # # # #### # # ## # # # # ### ### ## # # # # ### + # # ### ## # # # # ## ##### ### # # # ## # # #### + # ### # # ###### # ## # # ## # # # ### # # # # + # # # ## # ## ## ## ### ### ## #### # ## ## ### ### # # + # ## # #### # ## # # # # # ## ### ## # # # # # # # # # # # # # # ## + # # # # # ## ## # # # ## # # # ## # # # ## # + ## # # # # # # # ### # ### # # # #### # # # # # # ## # # + ### # # ## # # ## # # # ## # # ## #### # # # # # # # # ## +## ### # #### # # # # ### ## # ## # # # # # # # ### # ## # # + ## # # ## # # # # # # # ## ### ## # # # # # # # # # # # +# ## ## ## # ### ### ## # # # # ## # # # ### ## # ### ## # +# ## # # ### # # # # # ## ## ## ## # ## ### # # # # # ## + # ## # # ## ## # # # # # ## ## # ## # # # # + # # # ## # ## ## ## # # ## #### # # # # # # ### # # + # # # # # ## # # # # # # # # # # # ### # ## # # # ## # ## + # ## # ### # # # # # # # # # # # ## ## ## ## # ## # ## # # # +# # # # # # # # # # # # ### # ## # ### # # # # ### + # # # # # # # # ## # ## # # # # # # # # ## # # ## ### ## + # # ### ## # # # ### # # # ##### # # ## ## # # ### # +### # # ## ## # # # # ## ## # # #### # ### # ## # + # # # # # # # # ## ## ### # ## ## # ## # # ### # +# # # ### # # # ### # # # ## ### # # # # #### # # # # # # + # # # ## # ## # # ## # ## ### # # # # ###### # +# ## ## # # # # # # #### ## ## # # # # # # ## # +# ### ## # ### # # # # ## # ## # # # # # ## # # # # # # ## # # + # ## # # ## ### ## ## # # # # # # # ### ## # # ## + ## # ## # # ### ## # # ## # # ## ## # ### # # ### # ## + #### # #### # #### # # # # # ## #### # # # ### ## # # #### + ### # # # # # # ### # ### ## ## ## # # # # # ## # # # # # # # +# # # ## # ## ## # # # ### # ### ### # # # ## # # # # # # # +# ### ## ### # ### # ## # # ### # # # ## # # # ## # + # # # ## ## # # ## ## # ## ## ## ## #### # # #### ## # + # # # ## # ## ### ## # ## # # # # ## # ## # # # # # # +# # # # ### # # # ## ## # ## ## # ## ## # # # ### +# ## ## # # # # # ## # # ## #### # ### # # # ## + # # # ## # # ## # ## # # # # # #### # ## # ## # # ### # + ## # # # ## ## ### # # ## # # # # # ### # ## # # ## # # ## +# ## ## # # ## ## # # ## ## # ## # ## ## # # # ## + # #### # # # # ## # # ## # # # # # # ### # # ### # # # # + # # ## # ### # # # ## # # # # # # # # # # ## + # # # # ## # # # # #### ## # # # # # # # ### # # ## # ## # ## ## ### + # # ## # ## # # # # # # # # # # # ### ## # # # # #### +## # # ## # # ## # # # # # # ## ## # # # # # # # # # + # # ### ## # # # # # ## # ## # # # # # # # # # ### # # # # # + # # ## # # # # # ## # ### ## ## # # # ## # # # # ## # # + # ## # # ## # # ## # # # # # # # # ## # # # ### # ## +# # ## # # # # ## # # # # ## ## ## ### # ### # # # ### ### # + # # ## # # # # # # # ## # # ## # # ## # # ## # # # + # # # #### # # #### # ### ## # ## # ## # ## # ### ## + # # # ## # # # # # ## # # ## # # # # # # # # # ## # # # # # # + # # # # # # # # # # ## # ### # ## ## ### # ## # # # # + # # # ### # # ## # # ### # # # # # # ## # ## ## + # # # # ## # # # # # # ### # ### # ### ## # ## ##### + ## # ## # # # ## # # ##### ### ### # ## # ## ### # ## +# ## #### # ## ### # # # ## # ## ### #### # # # ### ## # ### + # # # # #### # # # # ## #### # #### ## # # # ####### # + ## # ### ## # # # ## ## # # ### # ##### # # #### # # # ### + ### # ## # ## ### # # # # # ## ## ## # # # ##### # # # # # + ## ## # # ## #### # # # # ## ### # ## # #### # # # # + # # # # ## # ### ## # # ## # # # ## # # ### # # ### ## # +# ## # # ### ## ### # #### # ## # # # # # # # # ### + ### # # # # # # # # # #### # ### # # ## # # ##### # # # # # # + ## # # # ## ## # ## ###### # ## # # # # ## #### # # # ## # # + # # # ## # ## ## # ## # ## #### ## # # # # ## # ## # # # + #### # # # # # # ## # # ### # # # # # ## # # # # # # + # # ## ## # # # # # # # ###### ### # # # # # ## ## +# # # # ### # # ### # # # # ## ### ### # # ### # # ## ## + # ## # # # ## # ## # # # # # # # #### ## # ### # # # # # + # # # ### # ## # # # # ## # # ## # # ### # # # ## # ## +## # ### # # # # # ### # # # ## # ## # # ## # #### # + # # # ## ##### # ## # # # #### # ## # # ## ### #### # ## # # ## ## # # + # # # ### ## # # # ## # # # # # # # # ## # # + # # # # # # # ## ## # # S # # # # # # # # #### # # diff --git a/osininyai/[2] maze/maze_10x10.txt b/osininyai/[2] maze/maze_10x10.txt new file mode 100644 index 0000000..1688a1e --- /dev/null +++ b/osininyai/[2] maze/maze_10x10.txt @@ -0,0 +1,10 @@ + E # ### + # # # + # + # ## +# # # + # # +# # +# # # # + # # + # S diff --git a/osininyai/[2] maze/maze_50x50.txt b/osininyai/[2] maze/maze_50x50.txt new file mode 100644 index 0000000..cf41103 --- /dev/null +++ b/osininyai/[2] maze/maze_50x50.txt @@ -0,0 +1,50 @@ +################################################## +################################################## +################################################## +######S ##### # ## +###### ##### # ## +############### ##### ##### ######### ## +###### ###### ##### ##### ##### ## +######## ###### ##### ######### ##### ## +###### ##### ##### ##### # +###### ##### ##### ##### # +###### ##### ############### ##### ## +###### ##### ##### ##### ##### ## +###### ##### ############### ##### ## +###### ##### ##### #### ## +###### ##### ##### ## +###### ############### ##################### +###### ##### ###### ##### ## +###### ###### ######### ##### ############### +###### ### ##### ## +###### ## +###### ######################## ########### +###### ######################## ############ +###### ######################## ########### +###### ######################## ########### +###### ##### ## # +###### ##### ######################### ## +###### ##### ######################### ## +###### ##### ######################### ## +###### ##### ######################### ## +###### ##### ##### ###### # +###### ############## ##### ########### +###### ############### ##### ########### +###### ############### ##### ############ +###### ############### ##### ########### +###### # +###### # +######### ############### ##### ######## ## +###### #### ##### ##### ## +######################### ##### ########### +###### ##### ##### E ## +###### ##### ##### ## +###### ############### ##### ##### ## +###### #### ##### ##### ## +###### ############### ##### ##### ## +###### ##### ##### # +###### ##### ##### # +###### ######### ############## ##### ## +###### #### ##### ## +###### ######################## ## +################################################## diff --git a/osininyai/[2] maze/maze_no_exit.txt b/osininyai/[2] maze/maze_no_exit.txt new file mode 100644 index 0000000..a9c99b3 --- /dev/null +++ b/osininyai/[2] maze/maze_no_exit.txt @@ -0,0 +1,17 @@ + ## + # # # ## +## ### # # # + # # # # # # + # ## # +### ## # # + # # # # # # + # ### # + # ## ## +## # # # + ### # # # +## ## # + # # ## # +## # # +# # ## ### ### +# # # ## # + # #S## diff --git a/osininyai/[2] maze/maze_no_walls.txt b/osininyai/[2] maze/maze_no_walls.txt new file mode 100644 index 0000000..d648aab --- /dev/null +++ b/osininyai/[2] maze/maze_no_walls.txt @@ -0,0 +1,47 @@ + E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + S diff --git a/osininyai/[2] maze/v.txt b/osininyai/[2] maze/v.txt new file mode 100644 index 0000000..1f12128 --- /dev/null +++ b/osininyai/[2] maze/v.txt @@ -0,0 +1,132 @@ +################################################################################################################################################################ +################################################################################################################################################################ +#################################################################################################### ###################################################### +################################################################################################### #### ################################################### +################################################################################################# ######## ################################################# +######################################################################################## #### ############ ############################################ +##################################################################################### ## ################## ########################################## +####################################################################### ######## ############################### ######################################## +###################################################################### ## ###### ################################### ####################################### +##################################################################### ### ###################################### ###################################### +##################################################################### ############################## ################## #################################### +##################################################################### ################ ###### ################## ################################## +##################################################################### ############ ####### ######## ################# ################################# +###################################################################### ########### ####################### ####### ###### ################################ +##################################################################### ######## ##################################### ##### ############################### +#################################################################### ### ########################################## ##### ############################## +#################################################################### ##### ##### ####################################### ###### ############################## +#################################################################### ### ## ################### ################# ####### ############################## +##################################################################### ## ############################# ############# ######## ############################# +##################################################################### ############################################ ########## ############################## +###################################################################### ############################################### ######### ############################## +##################################################################### ###### ##################################### ########## ############################## +##################################################################### ####### ######### ######### ################# ######### ############################## +####################### ######################################## ####### ######## ########## ############### ### ## ### ############################## +################### ### #################################### ################# ########### ################# ## #### ############################### +################# ########## ################################## ################ ###################################### ################################ +################ ############ ################################### ############## ################################# ##### ################################## +############### ############# ################################### ############## ################################### #### ################################## +############### ############# #################################### ############### ############################### ###### ################################## +############## ############# ##################################### ################ #################################### ################################### +############## ############# ##################################### ####################################################### ################################## +############## ############ ###################################### ##### ####################### ######################## ################################## +############### ########### ####################################### #### ####################### ###################### ################################## +############### ########## ####################################### ### ######################### ##################### ################################## +################# ########## ####################################### ### ################### ### ##################### ################################### +################# ########### ###################################### ####### ######## #####################E #################################### +################# ############# ##################################### ########### ######################## ########################################### +#### ########### #################################### ######################################### ############################################ +### ############### ######## ################################### ########## ######################## ############################################## +## ##################### ######## ################################## ################################### ################################################ +## ######################### ######### ################################## ############################### ################################################# +## ################################### ################################## ############################ ########################################## +### #################################### ################################ ########################### ###### #################################### +#### #################### ######################### #### ###################### ####### #### ################################ +### ############### ############ #### ############### ######## ################## ######### ######## ############################# +## ###################### ############# ####### ###### ######### ######## ########### ############ ########################## +## ######################### ############# ################################ ######### ############# ############### ####################### +## ################################## ### ################################## #################################### ################### ##################### +### ############################### #### ################################### ################################# ###################### ################### +#### ######## #### #### ##################################### ############################ ######################### ################# +#### ############## ### ###### #### ######################################### #################### ############################# ############## +### ################### ####### #### ############################################# ############## ################################### ############ +### ###################### ###### #### ################################################### ##################################################### ########### +### ####### ############### ##### #### ########################################################################################################## ######### +#### ####### ############ #### #### ##################################################### ####################################################### ######## +##### ######## ### ##### ###################################################### ############################ ########################### ####### +####### ############ #### ###### ############################# ##################################### ############# ############################ ##### +########### ####### ########################### ######################## ############################ ############################ #### +######################### ####### ########################## ########################## ############################ ############################## ### +########################### ###################### ############################################ ############# ############################## ## +################################### ########### ##### ############################## ############## ############# ############################### ## +######################################## ############ ############################# ############## ############# ####### ##################### ## +################################################################# ############################# ############################ ###### ###################### ## +################################################################# ############################################# ############ #### ####################### ## +################################################################## ############################################# ############# ### ####################### ### +################################################################## ############################## ############################ ## ######################## #### +################################################################## ############################## ############################ ######################## #### +################################################################## ############################################# ############# ####################### ##### +################################################################## ############################################# ############# ####################### ###### +################################################################## ########################################################### ####################### ####### +################################################################## ############################################## ######### ##################### ######## +################################################################### ############################################ ####### ### #################### ######### +################################################################## # ########################################## #### ##### # ############## ########## +################################################################## #### ###################################### ######## ## ######## ########### +################################################################## ######## ################ ################ ############# ####### ##### ############# +################################################################## ############ #### ############################### ######### # ############## +################################################################## ######################## ################################ ########### ################ +################################################################## ############################################################## ############ ################# +################################################################## ############################################################## ############ ################# +################################################################## ############################################################ ############ ################# +################################################################## ######################################################### # ########## ################# +################################################################## ###################################################### ### ###### ################### +################################################################# ############################################### ####### #### ##################### +################################################################# ### ######################################## ########## ####### #################### +################################################################# ######## ############################# ############## ######## ################### +################################################################# ############ ########## #################### ###### #################### +################################################################ ##################### ############################## ############################ +################################################################ ################################################################ ############################ +################################################################ ################################################################# ############################ +############################################################### ################################################################# ############################ +############################################################### ################################################################# ############################ +############################################################### #################################### ########################### ############################ +############################################################## ################################### ############################# ############################ +############################################################## ################################### ############################## ############################ +############################################################## ################################## ############################### ############################ +############################################################# ################################# ################################ ############################ +############################################################# ################################ ################################# ############################ +############################################################ ################################# ################################# ############################ +############################################################ ################################ ################################ ############################ +############################################################ ################################ # ################################ ############################ +########################################################### ################################ ### ################################ ############################# +########################################################### ############################### #### ############################### ############################# +########################################################### ############################### #### ############################## ############################# +########################################################## ############################### ##### ############################## ############################## +########################################################## ############################### ##### ############################## ############################## +######################################################### ############################## ###### ############################# ############################## +######################################################## ############################### ####### ############################# ############################### +######################################################## ############################## ####### ############################ ############################### +####################################################### ############################### ######## ############################ ############################### +####################################################### ############################## ######## ############################ ################################ +###################################################### ############################## ######### ########################### ################################ +###################################################### ############################### ########## ########################### ################################# +##################################################### ############################## ########## ########################## ################################# +##################################################### ############################## ########### ########################## ################################## +#################################################### ############################## ############ ######################### ################################## +#################################################### ############################## ############ ######################### ################################## +################################################### ############################# ############# ######################### ################################### +################################################### ############################ ############## ######################### ################################### +################################################### ############################ ############### ######################### #################################### +################################################### ############################ ################ ######################## #################################### +################################################### ########################## ################# #################### ##################################### +################################################### ####################### ################### ################################# +#################################################### ################## #################### ############################## +################################################### ######### ####################### ########################### +################################################## ############################# ######################## +################################################## ####################################### ######################## +################################################## ############################################# ######################### +################################################## ########################################################################################## +################################################### ############################################################################################ +#################################################### ############################################################################################### +###################################################### S #################################################################################################### +################################################################################################################################################################ \ No newline at end of file