Exemplo n.º 1
0
def main():
    if len(sys.argv) == 2:
        map_name = sys.argv[1]
    else:
        exit(1)
    map_file = open(map_name, 'r')

    # ввод данных
    map_data = map_file.read()
    links = re.findall('\w+-\w+', map_data)
    rooms = re.findall('\w+ \d+ \d+', map_data)
    paths = re.findall('(L.*?)\n', map_data)
    print(paths)

    # парсинг данных на узлы, ребра и перемещения за каждый шаг
    rooms_dict = {}
    links_list = []
    for room in rooms:
        buf = room.split(' ')
        rooms_dict[buf[0]] = (Room(buf[0],
                                   int(buf[1]) * ZOOM,
                                   int(buf[2]) * ZOOM, NODE_SIZE))
        print(buf[0], buf[1], buf[2])
    for link in links:
        buf = link.split('-')
        if not buf[0].startswith('L'):
            line = Link(None, None)
            for room in rooms_dict:
                room = rooms_dict[room]
                if room.name == buf[0]:
                    line.start = room
                elif room.name == buf[1]:
                    line.end = room
            links_list.append(line)

    start_room = re.findall('##start\n(\w+)', map_data)[0].split('\n')[0]

    moves_list = []
    moved_ants = set()
    for path in paths:
        move_per_ant = ' ' + path
        move_per_ant = move_per_ant.split(' L')
        moves = {}
        for ant_move in move_per_ant:
            if ant_move != '':
                ant_move = ant_move.split('-')
                if not ant_move[0] in moved_ants:
                    moved_ants.add(ant_move[0])
                    moves[ant_move[0]] = Move(rooms_dict[start_room],
                                              rooms_dict[ant_move[1]],
                                              ant_move[0])
                else:
                    previous_ant_move = moves_list[-1][ant_move[0]]
                    moves[ant_move[0]] = Move(previous_ant_move.end,
                                              rooms_dict[ant_move[1]],
                                              ant_move[0])
        moves_list.append(moves)

    game = Game(links_list, moves_list)
    game.run()
Exemplo n.º 2
0
def main():
    Q = QiniuProvider()
    countries = parseTable(
        Link(f'{domain}/wiki/List_of_IOC_country_codes').getText())
    beginTime = datetime.now()
    with ThreadPoolExecutor(max_workers=10) as pool:
        allTasks = []

        sqlFile = open('countryList.sql', 'w', encoding="utf-8")
        sqlWriter = SQLExporter(sqlFile, 'nationality',
                                ['name', 'code', 'flag'])

        for country in countries:
            print(f'graping {country.name}...')
            allTasks.append(
                pool.submit(
                    executor,
                    ExecutorParams(q=Q, country=country, writer=sqlWriter)))

        for task in as_completed(allTasks):
            print(f'{task.result()} downloaded.')

        sqlFile.close()

        endTime = datetime.now()

        print(f'run time: {endTime - beginTime}')
Exemplo n.º 3
0
 def upload(self, filePath: str) -> Link:
     remoteFileName = basename(filePath)
     remoteDir = 'flag'
     key = f'{remoteDir}/{remoteFileName}'
     token = self.q.upload_token(bucket=self.bucket, key=key)
     ret, info = put_file(token, key, filePath)
     url = f'https://{self.domain}/{ret["key"]}'
     print(f'uploaded to {url}')
     return Link(url)
Exemplo n.º 4
0
def create_link(teacher_id, student_id):
    """Create a teacher/student link."""

    link = Link(teacher_id=teacher_id, student_id=student_id)

    db.session.add(link)
    db.session.commit()

    return link
def add_link():
    link_url = request.forms.get('link_url')
    autodelete = request.forms.get('autodelete') == 'on'
    password = request.forms.get('password', '')
    if link_url:
        while True:
            id = generate_id()
            if manager.get_link_by_id(id) is None:
                break
        manager.save(Link(id, link_url, autodelete, password))
    redirect('/')
Exemplo n.º 6
0
 def post(self):
     action = self.param('action')
     name, url = (self.request.get(item)
                  for item in ('linkName', 'linkURL'))
     if (action == 'edit'):
         key = self.param('id')
         link = Link.get_by_id(int(key))
         link.linkName = name
         link.linkURL = url
     else:
         link = Link(linkName=name, linkURL=url)
     link.put()
     self.redirect('/admin/links')
     return
Exemplo n.º 7
0
 def startElement(self, name, attributes):
     if name == "day":
         self.setDay(attributes["date"])
     elif name == "conference":
         self.conference = Conference()
         self.in_conference = True
     elif name == "event":
         event_id = attributes["id"]
         self.event = Event(event_id)
         self.in_event = True
     elif name == "link":
         if self.in_event:
             self.link = Link(attributes["href"])
     elif name == "person":
         if self.in_event:
             self.person = self.get_person(attributes["id"])
Exemplo n.º 8
0
def _read_links(file) -> (int, list):
    number_of_links = int(file.readline().split()[0])
    # Move pointer to second line

    link_list = []
    # Enumerate uses next to move lines
    for idx, line in enumerate(file):
        values = line.split()

        if len(values) == 1 and values[0] == '-1':
            # Separator found! Links have been read
            return number_of_links, link_list

        link_list.append(
            Link(idx + 1, int(values[0]), int(values[1]),
                 int(values[2]), float(values[3]), int(values[4]))
        )
    raise Exception
Exemplo n.º 9
0
    def storeFoundCover(self, manager, edition):
        coverPath = 'covers/{}/{}.{}'.format(manager.fetcher.SOURCE,
                                             manager.fetcher.coverID,
                                             manager.coverFormat.lower())

        self.putObjectInBucket(manager.coverContent, coverPath,
                               self.fileBucket)

        coverLink = Link(url='https://{}.s3.amazonaws.com/{}'.format(
            self.fileBucket, coverPath),
                         media_type='image/{}'.format(
                             manager.coverFormat.lower()),
                         flags={'cover': True})

        edition.links.append(coverLink)
        self.records.add(edition)

        if len(self.records) >= self.batchSize:
            self.bulkSaveObjects(self.records)
            self.records = set()
 def add_link(self, from_id: tp.Tuple[str, int], to_id: tp.Tuple[str, int], colour: str="black", \
              arrow_draw: ArrowDraw = ArrowDraw.FWD_ARROW, link_2_col: tp.Optional[str] = None):
     self._links.append(
         Link(self._id_if_str(from_id), self._id_if_str(to_id), colour,
              arrow_draw, link_2_col))