def perform(level, box, options): startTime = time.time() initializeHeightmap(level, box) structure.init() chunks = [] for (chunk, slices, point) in level.getChunkSlices(box): chunks.append(ChunkAnalysis(level, chunk, slices)) minx = box.minx minz = box.minz maxx = box.maxx maxz = box.maxz rdbuild.init(level, minx, maxx, minz, maxz, chunks) entrys = [(minx, minz)] #print(level.blockAt(minx,getGroundYPos(minx,minz),minz)) rdbuild.LowBuild(level, chunks, 25, 25, [(minx, minz)]) #rdbuild.flatGround(level,[minx,minz,6,6]); #height = getGroundYPos(minx+1,minz+1) #rdbuild.buildWell(level,minx,minz,height,(24,0),(17,0)); endTime = time.time() print "Finished in " + str(endTime - startTime) + " seconds" return
def mass_solve(): """ Η mass_solve είναι μία συνάρτηση η οποία φορτώνει και λύνει το πρόβλημα για καθένα από τα περιεχόμενα της λίστας filename. Δηλαδή για καθένα από τα 13 αρχεία. """ fileNames = [ "car-f-92.stu", "car-s-91.stu", "ear-f-83.stu", "hec-s-92.stu", "kfu-s-93.stu", "lse-f-91.stu", "pur-s-93.stu", "rye-s-93.stu", "sta-f-83.stu", "tre-s-92.stu", "uta-s-92.stu", "ute-s-92.stu", "yor-f-83.stu" ] ''' Σε κάθε run της for γίνεται η αρχικοποίηση στο αρχείο structure.py φορτώνονται μέσω του load_problem στο dictionary και στο Graph τα στοιχεία του αντίστοιχουπροβλήματος και αυτά τα στοιχεία χρησιμοποιούνται από το solve_problem για την επίλυση. ''' for x in range(len(fileNames)): # Η for τρέχει τόσες φορές όσο το length # της λίστας fileNames st.init() load_problem(fileNames[x]) solve_problem(fileNames[x])
def db_init(): structure.init()
def get_default_nick(self,jid): return jid.split('@')[0] def delete_user(self,user): user.delete() self.do_unsubscribe(user['jid']) self.do_unsubscribe(user['jid'],'unsubscribed') def find_user_by_jid(self,jid): return structure.connection.User.find_one({'jid':jid}) def find_user_by_nick(self,nickname): return structure.connection.User.find_one({'nickname':nickname}) def set_nickname(self,jid,nickname): structure.connection.User.collection.update({'jid':jid},{'$set':{'nickname':nickname}}) @staticmethod def db_init(): structure.init() if __name__=='__main__': structure.init() test = DB_oper() #user=test.find_user_by_jid(r'ghy@abc') #test.delete_user(user) #test.set_nick_name(r'hghgh@abc','hello') for u in structure.connection.User.find(): print u['jid'],u['nickname']
def db_init(): structure.init()
'nickname': nickname }}) def check_user_exist(self, jid): u = self.find_user_by_jid(jid) if u: return True else: return False def check_nick_exist(self, nickname): u = self.find_user_by_nick(nickname) if u: return True else: return False @staticmethod def db_init(): structure.init() if __name__ == '__main__': structure.init() test = DB_oper() #user=test.find_user_by_jid(r'ghy@abc') #test.delete_user(user) #test.set_nick_name(r'hghgh@abc','hello') for u in structure.connection.User.find(): print u['jid'], u['nickname'], u['flag']
def perform(level, box, options): startTime = time.time() structure.init() initializeHeightmap(level, box) # DISTRICT PLACEMENT chunks, districts, segments, chunkMap, entryPoints = getChunksAndDistricts( level, box) # Districts is a list of the district centers in the following order: # [commercialCenter, industrialCenter, agriculturalCenter, highClassResidentialCenter, lowClassResidentialCenter] # # ROAD CREATION # material = (4, 0) # Cobblestone # createRoad(level, box, districts[0], districts[1], 4, material) # Commercial to Industrial # createRoad(level, box, districts[0], districts[2], 3, material) # Commercial to Agricultural # createRoad(level, box, districts[0], districts[3], 3, material) # Commercial to High-Class Residential # createRoad(level, box, districts[0], districts[4], 3, material) # Commercial to Low-Class Residential # HIGHWAY CREATION material = (4, 0) # Cobblestone stairId = 67 # Cobblestone stairs entryPoints = createHighways(level, box, segments, chunkMap, material, stairId, entryPoints) print(entryPoints) # Use entryPoints to build the internal district streets # # BUILD HOUSES # for districtIndex in range(len(districts)): # chunk = districts[districtIndex] # for i in range(10): # if districtIndex == 2: # farm # if buildhouse(level,[chunk],"Farm"): # break # else: # if buildhouse(level,[chunk],"SmallHouse"): # break # Fencing in each district with a different color #for i in districts[0]: # fenceInChunk(level, i, (160, 2)) # Commercial = Purple #for i in districts[1]: # fenceInChunk(level, i, (160, 1)) # Industrial = Orange #for i in districts[2]: # fenceInChunk(level, i, (160, 4)) # Agricultural = Yellow #for i in districts[3]: # fenceInChunk(level, i, (160, 11)) # High-Class Residential = Dark Blue #for i in districts[4]: # fenceInChunk(level, i, (160, 9)) # Low-Class Residential = Light Blue rdbuild.coBuild(level, districts[0], entryPoints['C']) rdbuild.idBuild(level, districts[1], entryPoints['I']) rdbuild.agriBuild(level, districts[2], entryPoints['A']) rdbuild.HighBuild(level, districts[3], 25, 25, entryPoints['H']) rdbuild.LowBuild(level, districts[4], 25, 25, entryPoints['L']) # Clears all trees from each district chunk #for i in districts: # for j in i: # removeAllTrees(level, j) # Analyzing the ground makeup of the industrial center # bHist, vHist = districts[1].analyzeGround(level, -5, 10) # print "Industrial District Building Materials: " + str(bHist); # print "Industrial District Valuables: " + str(vHist); endTime = time.time() print "Finished in " + str(endTime - startTime) + " seconds" return
def load_problem(filename): """ Συνάρτηση load_problem η οποία δέχεται ως όρισμα ότι εισήχθει από τον χρήστη στην main ύστερα από το πάτημα της 1ης επιλογής. """ st.init() sid = 1 students = 0 file = open(filename, 'r') # Κάνουμε open το αρχείο που δόθηκε σαν όρισμα while (True): line = file.readline() # Διαβάζουμε κάθε γραμμή του αρχείου αυτού students += 1 # Σε κάθε διάβασμα γραμμής αυξάνουμε τη μεταβλητή students # Για να βρούμε πόσοι είναι συνολικά οι φοιτητές if (line): # Ελέγχουμε κάθε γραμμή που διαβάζεται exams = [int(x) for x in line.split(' ')[:-1] ] # Κάθε γραμμή που διαβάζεται # την μετατρέπει σε λίστα με περιεχόμενο τα μαθήματα ου κάθε φοιτητή. for exam in exams: # Διατρέχει την κάθε λίστα η οποία δημιουργήθηκε παραπάνω """ Το αποτέλεσμα αυτού του for είναι ότι εισάγει στο dictionary students του αρχείου structure.py ως key το μάθημα και ως values τους φοιτητές οι οποίοι το έχουνε επιλέξει. """ try: """ Τοποθέτηση των μαθημάτων στο dictionary του αρχείου structure.py ως key και προσθήκη ως values του αριθμού του φοιτητή. Αρχικά ο φοιτητής είναι ο νούμερο 1 και ύστερα το sid αυξάνεται οπότε στο επόμενο run μπαίνει value το 2. """ st.students[exam].append( sid) # Κάνει προσάρτιση του αριθμού # του φοιτητή εφόσον το key του μαθήματος προυπάρχει except KeyError: st.students[exam] = [sid] # Δημιουργεί εφόσον δεν υπάρχει # στο dictionary students key με το όνομα του μαθήματος και # τοποθετεί ως αρχικό value τον αριθμό sid του φοιτητή sid += 1 else: break len_exams = len( st.students) # Βρίσκουμε το μέγεθος του dictionary students. # Δηλαδή ουσιαστικά το πόσα είναι τα keys οπότε επειδή τα keys είναι τα μαθήματα # μας επιστρέφεται το σύνολο μαθημάτων eggrafes = sum(map(len, st.students.values())) # Υπολογισμός των εγγραφών # Επιστροφή του συνόλου των εγγραφών. Δηλαδή επιστροφή του συνόλου των μαθημάτων # που έχουν επιλέξει όλοι οι φοιτητές. collisions = 0 """ Για κάθε key στο dictionary students προσθέτει ένα node στο αντικείμενο graph του structure.py """ for i in st.students: st.graph.add_node(i) """ Διατρέχει το dictionary students με διπλή for και αν βρει κοινό στοιχείο σε λίστα διαφορετικών key τα προσθέτει μέσω add_edge στο αντικείμενο graph """ for i in st.students: for j in st.students: if i == j: collisions += 1 else: if set(st.students[i]) & set(st.students[j]): collisions += 1 st.graph.add_edge(i, j) print("-" * 10) print("DENSITY") print(collisions / len_exams**2) print("-" * 10) print("EXAMS") print(len_exams) print("-" * 10) print("STUDENTS") print(students) print("-" * 10) print("EGGRAFES") print(eggrafes)
import sys sys.path.append("src") import os.path import structure as st import interface as itfc st.init() if (len(sys.argv) == 1): read = ['A+B=>C', '=AB', '?C'] else: arg = sys.argv[1] if (os.path.isfile(arg) == False): print("File does not exist.") sys.exit() file = open(arg, "r") read = file.read().split('\n') file.close() data = itfc.remove_comment(read) for elem in data: print(elem) itfc.set_interface(data) st.root.mainloop()