Beispiel #1
0
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])
Beispiel #3
0
 def db_init():   
     structure.init()
Beispiel #4
0
    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']
Beispiel #5
0
 def db_init():
     structure.init()
Beispiel #6
0
                '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']
Beispiel #7
0
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)
Beispiel #9
0
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()