def check_position_time(self, dimensions, variables, ncFile): try: sort = Sort(self.data.get_header()) variablesList = variables.variablesList for dimension in dimensions: if not dimension in variablesList or 'value' in variablesList[ dimension] and variablesList[dimension]['value'] != "": self.appendMiddleDictionary[dimension] = -1 continue variableNC = ncFile.variables[dimension] dataCSV = self.data.get_data_by_column( variablesList[dimension][sort.sort_column( variablesList[dimension])]) positionFirstElementBigger = numpy.where( variableNC[:][:] > dataCSV[:][0]) positionFirstElement = numpy.where( variableNC[:][:] == dataCSV[:][0]) if len(positionFirstElementBigger[0][:]) != 0 and len( positionFirstElement[0][:]) == 0: self.appendMiddleDictionary[ dimension] = positionFirstElementBigger[0][0] else: self.appendMiddleDictionary[dimension] = 0 self.appendDictionary[dimension] = 0 except: Log().set_log_error('Error dimensions not found') Log().set_log_info('The script has closed unsatisfactorily') sys.exit(-1)
def test_sort_dict_by_value(self): source = {'b': 3, 'a': 4, 'c': 2, 'd': 1} asc_sorted = [('d', 1), ('c', 2), ('b', 3), ('a', 4)] desc_sorted = asc_sorted[::-1] self.assertEqual(Sort.sort_dict_by_value(source), asc_sorted) self.assertEqual(Sort.sort_dict_by_value(source, False), desc_sorted)
def check_same_file(self, dimensions, variables, ncFile): sort = Sort(self.data.get_header()) variablesList = variables.variablesList for dimension in dimensions: if not dimension in variablesList or 'value' in variablesList[ dimension] and variablesList[dimension]['value'] != "": self.appendDictionary[dimension] = -1 continue variableNC = ncFile.variables[dimension] dataCSV = self.data.get_data_by_column( variablesList[dimension][sort.sort_column( variablesList[dimension])]) firstElementCSV = numpy.where(variableNC[:][:] == dataCSV[:][0]) lastElementNC = numpy.where( dataCSV[:][:] == variableNC[:][len(variableNC[:][:]) - 1]) if len(firstElementCSV[0][:]) != 0 and len( lastElementNC[0][:]) != 0: if len(variableNC[:][:]) < len(dataCSV[:][:]): self.appendDictionary[dimension] = lastElementNC[0][0] + 1 continue elif lastElementNC[0][0] < len(dataCSV[:][:]) - 1: self.appendDictionary[dimension] = lastElementNC[0][0] + 1 continue elif len(variableNC[:][:]) == len(dataCSV[:][:]) or len( variableNC[:][:]) > len(dataCSV[:][:]): Log().set_log_info('This file has been used') sys.exit(0) elif (len(firstElementCSV[0][:]) > 0 and len(lastElementNC[0][:]) == 0) or (len(firstElementCSV[0][:]) == 0 and len(lastElementNC[0][:]) > 0): Log().set_log_info('It is impossible append the information') sys.exit(0) self.appendDictionary[dimension] = 0
def word_sort(): global sortaword x_word = str(request.form['x_word']) title = 'Results:' my_word = Sort(x_word) sorted_word = my_word.sort_word() return render_template('sortawordresults.html', the_title=title, the_results=sorted_word)
def buildUI(self, topframe, callbackDict): import tkinter as tk from tkinter import ttk import Personnages ret = super().buildUI(topframe, callbackDict) frame = ttk.Frame(topframe) frame.pack() nomSortLbl = ttk.Label(frame, text="Nom du sort à modifier:") nomSortLbl.grid(row=0, column=0, sticky="e") self.nomSortEntry = ttk.Entry(frame, width=50) self.nomSortEntry.delete(0, 'end') self.nomSortEntry.insert(0, self.nomSort) self.nomSortEntry.grid(row=0, column=1, sticky="w") ret["nomSort"] = self.nomSortEntry nomCaracLbl = ttk.Label(frame, text="Nom de la carac à modifier:") nomCaracLbl.grid(row=1, column=0, sticky="e") self.nomCaracCombobox = ttk.Combobox(frame, values=Sort.getCaracList(), state="readonly") if self.nomAttributCarac != "": self.nomCaracCombobox.set(self.nomAttributCarac) self.nomCaracCombobox.grid(row=1, column=1, sticky="w") ret["nomAttributCarac"] = self.nomCaracCombobox boostCaracLbl = ttk.Label(frame, text="Valeur du boost:") boostCaracLbl.grid(row=2, column=0, sticky="e") self.boostCaracSpinbox = tk.Spinbox(frame, from_=-999, to=999, width=4) self.boostCaracSpinbox.delete(0, 'end') self.boostCaracSpinbox.insert(0, int(self.boostCarac)) self.boostCaracSpinbox.grid(row=2, column=1, sticky="w") ret["boostCarac"] = self.boostCaracSpinbox return ret
def IS(l): frameList = [] frameList.append(l[:]) x = 1 #While there exists unordered list elements while (x < len(l)): tempx = x a = x - 1 #Move elements left-to-right to find sorted place for current index while (l[tempx] < l[a] and a >= 0): Sort.switchIndices(tempx, a, l) tempx = a a -= 1 frameList.append(l[:]) x += 1 #next index return frameList
def QS(l): pivot = len(l) - 1 lo = 0 if (lo == pivot or pivot < 0): return l else: lo = QuickSort.findGreaterValue(lo, pivot, l) while (pivot != lo): Sort.switchIndices(pivot - 1, lo, l) lo = QuickSort.findGreaterValue(lo, pivot, l) Sort.switchIndices(pivot, pivot - 1, l) pivot -= 1 temp = [] temp.append(l[pivot]) pList = QuickSort.partitionList(l, pivot) return (QuickSort.QS(pList[0]) + temp + QuickSort.QS(pList[1]))
def test_sort_tuple(self): source = [('b', 3), ('a', 4), ('c', 2), ('d', 1)] # タプルの1つ目の要素でソート asc_1_sorted = [('a', 4), ('b', 3), ('c', 2), ('d', 1)] desc_1_sorted = asc_1_sorted[::-1] self.assertEqual(Sort.sort_tuple(source, 0), asc_1_sorted) self.assertEqual(Sort.sort_tuple(source, 0, False), desc_1_sorted) # タプルの2つ目の要素でソート # asc_2_sorted = asc_1_sortedよりは新しく書いた方が分かりやすいかなって asc_2_sorted = [('d', 1), ('c', 2), ('b', 3), ('a', 4), ] desc_2_sorted = asc_2_sorted[::-1] self.assertEqual(Sort.sort_tuple(source, 1), asc_2_sorted) self.assertEqual(Sort.sort_tuple(source, 1, False), desc_2_sorted)
def loadSorts(sortfile, lvl): with open(sortfile) as f: data = f.read() sortsData = json.loads(data) sorts = [] for sortName, sortData in sortsData.items(): sortData["nom"] = sortName tabSorts = Sort.craftSort(sortData) rightLvlSort = Personnage.getSortRightLvl(lvl, tabSorts) sorts.append(rightLvlSort) if not sorts: raise ValueError("Sorts non trouvés") return sorts
def steps2_and_3(self, topic, rows_seed, qrels_filepath, cols_seed, data_seed, qrels_content_filepath, list_cols_seed_and_feature_names, dict_initialScoreRankingResults): training_set = collections.OrderedDict() # Topic is used as the name-doc num for the seed_doc since the seed document does not have a doc id like the other documents. & Read the initial ranking. training_set.update({topic: 1}) list_of_pmids_for_topic = readInitialRanking( self.projDir + 'resources/topics/all.topics2017_2018_2019/' + self.topic) # Initialise some empty lists. & Read and use improved initial ranking from Lucene4IR RetrievalAppSubset. ordered_feature_names, list_of_pmids_for_topic = ([] for i in range(2)) list_of_pmids_for_topic = [ key for key, value in dict_initialScoreRankingResults[topic] ] batch = 1 # Build lookup ordered dictionary for pmids I have just read and put corresponding numbering. tmp_lst = [n for n in range(len(list_of_pmids_for_topic))] lookup_dict = collections.OrderedDict( zip(tmp_lst, list_of_pmids_for_topic)) lookup_dict.update({len(list_of_pmids_for_topic): topic}) # Invert the lookup_dict ordered dictionary. inverted_lookup_dict = collections.OrderedDict( [[v, k] for k, v in lookup_dict.items()]) # Set right row index for seed sparse matrix to be constructed inside the loop once the cols/features are also set correctly. new_rows_seed = np.array([len(list_of_pmids_for_topic)] * len(rows_seed)) # Order cols and data lists of seed doc. ordered_seed = Sort([[val, data_seed[idx]] for idx, val in enumerate(list(cols_seed))]) cols_seed = [item[0] for item in ordered_seed] data_seed = [item[1] for item in ordered_seed] ordered_feature_names = [[i[0], i[2]] for i in sorted( list_cols_seed_and_feature_names, key=lambda x: int(x[1]))] docs_reviewed = set() topic_qrels_dict = readFeedbackQRELSintoDict(topic, qrels_filepath) topic_qrels_content_dict = readFeedbackQRELSintoDict( topic, qrels_content_filepath) doc_score = collections.OrderedDict() flag = True learning_iterations = 5 return (topic_qrels_dict, docs_reviewed, cols_seed, data_seed, batch, new_rows_seed, inverted_lookup_dict, doc_score, flag, learning_iterations, list_of_pmids_for_topic, training_set, tmp_lst, lookup_dict, topic_qrels_content_dict, ordered_feature_names)
def loadSorts(sortfile, lvl): try: with open(sortfile) as f: data = f.read() sortsData = json.loads(data) except: sortsData = {} sorts = [] sortsDebutCombat = [] for sortName, sortData in sortsData.items(): sortData["nom"] = sortName tabSorts = Sort.craftSort(sortData) rightLvlSort = Personnage.getSortRightLvl(lvl, tabSorts) if sortData.get("debutCombat", False): sortsDebutCombat.append(rightLvlSort) else: sorts.append(rightLvlSort) return sorts, sortsDebutCombat
def main(): try: #Programm der Mainmethode l = log(True) args = getArgs() c = check() c.CheckArgCount(args) f = fReader(args[1]) data = f.getData() c = Convert() data = c.str2Num(data) c = Sort() b = data.copy() m = data.copy() q = data.copy() msg = "sortet to: " + str(c.Bubblesort(b)) + " by Bubblesort" print(msg) l.msg(msg) msg = "sortet to: " + str(c.Mergesort(m)) + " by Mergesort" print(msg) l.msg(msg) msg = "sortet to: " + str(c.Quicksort(q)) + " by Quicksort" print(msg) l.msg(msg) # Fehlerbehandlung der UsageErrors (eigen angelegte Errors) except UE as e: msg = 'Benutzerfehler: ' + e.msg print(msg) l.msg(msg) return 1 else: return 0
print(listOfItems.items) while(True): try: print("What sort would you like to implement?: " "\n1. Insertion Sort\n2. Selection Sort\n3. Quick Sort\n4. Merge Sort") selection = int(input("Please enter number corresponding to selection: ")) if(selection < 1 or selection > 4): print("Please enter a number from the selection") continue else: break except ValueError: print("Must be of type integer") continue sort = Sort() switch = {1: sort.insertionSort, 2: sort.selectionSort, 3: sort.quickSort, 4: sort.mergeSort } startTime = time.time() if(selection == 3 or selection == 4): switch[selection](listOfItems.items, 0, len(listOfItems.items)-1) else: switch[selection](listOfItems.items) elapsedTime = time.time() - startTime print(elapsedTime) print("After Sort" + str(listOfItems.items))
#Writen under python 2.2.6 from Sort import Sort import random a = Sort() b = [random.random() for _ in xrange(500)] print ('PreSort: ') print (b) bubble = a.bubble_sort(b) print ('Bubble Sort: ') print (bubble) merge = a.merge_sort(b) print ('Merge Sort: ') print (merge)
def main(): start_x = 170 start_y = 760 x = start_x y = start_y ix = 0 Skretanje = [0] * 50 Blok = [0] * 50 while ix < 24: q = random.randint( 0, 9) # bira da li ce ici levo ili desno(0 - levo, 1 - desno Skretanje[ix] = q if q == 0: y = y - 30 elif q == 1: x = x + 20 y = y - 30 elif q == 2: x = x - 20 y = y - 30 elif q == 3: x = x - 10 y = y - 30 elif q == 4: x = x + 10 y = y - 30 elif q == 5: x = x - 5 y = y - 30 elif q == 6: x = x + 5 y = y - 30 elif q == 7: x = x - 15 y = y - 30 elif q == 8: x = x + 15 y = y - 30 Blok[ix] = numpy.array([x, y]) ix += 1 Niz_Jedinki = [] Niz_Fitnessa = [] f = open("podaci1.txt", "w") Generacija = 100 br_Jedinki = 20 CrossPop = int(0.3 * br_Jedinki) NajboljiBr = int(0.4 * br_Jedinki) OstaliBr = int(0.3 * br_Jedinki) for i in range(0, br_Jedinki): niz_instrukcija = RucnaInicijalizacija(i) # Inicijalizujem random GKV jedinka = Simulacija(niz_instrukcija, Blok) # stvaram jedinku Niz_Jedinki.append( jedinka.Niz_Instrukcija) # U Niz_Jedinki ubacujem jedinke Niz_Fitnessa.append(FitU(jedinka.Trci())) for evolucija in range(0, Generacija): Niz_Jedinki, Niz_Fitnessa = Sort(Niz_Fitnessa, Niz_Jedinki) print(str(evolucija) + "\t" + str(Niz_Fitnessa[0])) Najbolji_Niz = Niz_Jedinki[: NajboljiBr] # Selekcija 40% Najboljih poopulacija CrossOver_Niz = Niz_Jedinki[NajboljiBr:( Generacija - OstaliBr)] # Koriscenje odbacenih populacija za CrossOver Ostalo = Niz_Jedinki[(br_Jedinki - OstaliBr):] # Ostatak Niz_Jedinki = [] Niz_Fitnessa = [] for i in range(0, CrossPop, 2): CrossOver_Niz[i], CrossOver_Niz[i + 1] = RandomCrossOver( CrossOver_Niz[i], CrossOver_Niz[i + 1]) for i in range(0, OstaliBr): Ostalo[i] = RandomZaPopulaciju( ) # Za ostatak Niza ubaciti random G, K, V # print(Ostalo[i]) Niz_Jedinki = Najbolji_Niz + CrossOver_Niz + Ostalo # Spajanje GKV for i in range(0, br_Jedinki): Deca = Simulacija(Niz_Jedinki[i], Blok) # Pravljenje dece Niz_Fitnessa.append(FitU(Deca.Trci())) # pygame.display.flip() for i in range(0, br_Jedinki): Niz_Jedinki[i] = Mutacija(Niz_Jedinki[i]) from multiprocessing import Pool from itertools import repeat with Pool(20) as pool: Niz_Fitnessa = list(pool.map(oceni, zip(Niz_Jedinki, repeat(Blok))))
import math import timeit import numpy import random import os from Sort import Sort import matplotlib.pyplot as plt from scipy.interpolate import make_interp_spline sort1 = Sort() mergeSortTimes = [] insertionSortTimes = [] def howManyRandomNumber(x): completeName = os.path.join("randomKeysUsed", "keys" + str(x) + ".txt") f = open(completeName, "w") for y in range(0, x): array[y] = random.randint(0, 100000) f.write(str(array[y]) + "\n") f.close() def saveMergeSortedList(x): completeName = os.path.join("mergSortResults", "mergeSortedKeys" + str(x) + ".txt") f = open(completeName, "w") for y in range(0, x): f.write(str(array[y])) f.write("\n") f.close()
def __init__(self): self.list = Sort.genRandList() #self.list = [3,2,1] self.frameList = []
#Writen under python 2.2.6 from Sort import Sort import random a = Sort() b = [random.random() for _ in xrange(500)] print('PreSort: ') print(b) bubble = a.bubble_sort(b) print('Bubble Sort: ') print(bubble) merge = a.merge_sort(b) print('Merge Sort: ') print(merge)
def main(): done = False brzinaStaraX = 0 brzinaStaraY = 0 start_x = 170 # x kordinata pocetnog bloka start_y = 760 # y kordinata pocetnog bloka x_size = 50 # duzina bloka y_size = 30 # sirina bloka x = start_x y = start_y playerX = 194 playerY = 775 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) # prvi blok # player = pygame.Rect((playerX, playerY, 4, 4)) # pocetna pozicija igraca # pygame.draw.rect(screen, My_light_red_color, player) # pygame.display.update() ix = 0 Skretanje = [0] * 50 Blok = [0] * 50 # pygame.mouse.set_visible(False) # while not done: # generisanje random mape while ix < 24: q = random.randint( 0, 9) # bira da li ce ici levo ili desno(0 - levo, 1 - desno Skretanje[ix] = q if q == 0: y = y - 30 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) elif q == 1: x = x + 20 y = y - 30 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) elif q == 2: x = x - 20 y = y - 30 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) elif q == 3: x = x - 10 y = y - 30 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) elif q == 4: x = x + 10 y = y - 30 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) elif q == 5: x = x - 5 y = y - 30 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) elif q == 6: x = x + 5 y = y - 30 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) elif q == 7: x = x - 15 y = y - 30 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) elif q == 8: x = x + 15 y = y - 30 # pygame.draw.rect(screen, My_light_blue_color, (x, y, x_size, y_size)) Blok[ix] = numpy.array([x, y]) ix += 1 Niz_Populacija = [] Niz_Jedinki = [] Niz_Fitnessa = [] # pygame.display.flip() f = open("podaci.txt", "w") # for event in pygame.event.get(): # if event.type == pygame.QUIT: # # print("Gas - Kocnica - Volan \t x0 - x - Brzina - Ubrzanje \n") # done = True Generacija = 10 br_Jedinki = 100 Min_Fitness = [0] * Generacija CrossPop = int(0.3 * br_Jedinki) NajboljiBr = int(0.4 * br_Jedinki) OstaliBr = int(0.3 * br_Jedinki) generacija = open("PrvaGeneracija.txt", "w") for i in range(0, br_Jedinki): niz_instrukcija = Inizijalizacija( Skretanje) # Inicijalizujem random GKV jedinka = Simulacija(niz_instrukcija, Blok) # stvaram jedinku Niz_Jedinki.append( jedinka.Niz_Instrukcija) # U Niz_Jedinki ubacujem jedinke Niz_Fitnessa.append(FitU( jedinka.Trci())) # U Niz Fitnessa ubacujem Fitness od jedinke generacija.write(str(niz_instrukcija) + "\n") # Evolucija for evolucija in range(0, Generacija): Niz_Jedinki, Niz_Fitnessa = Sort( Niz_Fitnessa, Niz_Jedinki) # Na kraju sortiram Niz_Jedinki na osnovu Fitnesa f.write(str(Niz_Fitnessa[0]) + "\n") print(str(evolucija) + "\t" + str(Niz_Fitnessa[0])) Min_Fitness[evolucija] = Niz_Fitnessa[0] Najbolji_Niz = Niz_Jedinki[: NajboljiBr] # Selekcija 40% Najboljih poopulacija CrossOver_Niz = Niz_Jedinki[NajboljiBr:( Generacija - OstaliBr)] # Koriscenje odbacenih populacija za CrossOver Ostalo = Niz_Jedinki[(br_Jedinki - OstaliBr):] # Ostatak Niz_Jedinki = [] Niz_Fitnessa = [] # for i in range(0, CrossPop, 2): # # Odbaceni_Niz[i], Odbaceni_Niz[i + 1] = TwoPoint(Odbaceni_Niz[i], Odbaceni_Niz[i + 1]) # # # print(Odbaceni_Niz[i]) #Cuveni Two Point crossover for i in range(0, CrossPop, 2): CrossOver_Niz[i], CrossOver_Niz[i + 1] = RandomCrossOver( CrossOver_Niz[i], CrossOver_Niz[i + 1]) for i in range(0, OstaliBr): Ostalo[i] = RandomZaPopulaciju( ) # Za ostatak Niza ubaciti random G, K, V # print(Ostalo[i]) Niz_Jedinki = Najbolji_Niz + CrossOver_Niz + Ostalo # Spajanje GKV for i in range(0, br_Jedinki): Deca = Simulacija(Niz_Jedinki[i], Blok) # Pravljenje dece Niz_Fitnessa.append(FitU(Deca.Trci())) # pygame.display.flip() for i in range(0, br_Jedinki): Niz_Jedinki[i] = Mutacija(Niz_Jedinki[i]) from multiprocessing import Pool from itertools import repeat with Pool(20) as pool: Niz_Fitnessa = list(pool.map(oceni, zip(Niz_Jedinki, repeat(Blok)))) NacrtajGrafik(Min_Fitness)
from File import File from Sort import Sort from timeit import timeit, Timer if __name__ == "__main__": file = File() sort = Sort() # write random numbers to file file.write_ten_random_arrays() # read file and save locally numbers = file.read_ten_random_arrays() template = """Original array: {} optimized bubble sort: {} \t {} insertion sort: {} \t {} quick sort: {} \t {} """ for arr in numbers: ori = " ".join([str(num) for num in arr]) t1 = Timer(lambda: sort.bubble(arr)) t2 = Timer(lambda: sort.insertion(arr)) t3 = Timer(lambda: sort.quick(arr)) print( template.format(ori.split(" "), sort.bubble(arr),