Exemplo n.º 1
0
class Printer():
    def __init__(self):
        self.printQueue = Queue()
        self.currentTask = None

    def isBusy(self):
        return self.currentTask == None

    def addTask(self, task):
        self.printQueue.enqueue(task)

    def removeTask(self):
        self.currentTask = None

    def getNextTask(self):
        if self.printQueue.isEmpty():
            self.currentTask = None
        else:
            self.currentTask = self.printQueue.dequeue()

    def printTask(self):
        if self.currentTask != None:
            self.currentTask.removePage()
            if self.currentTask.isDone():
                self.currentTask = None

        if self.currentTask == None and not self.printQueue.isEmpty():
            self.currentTask = self.printQueue.dequeue()
            waitTimes.append(time - self.currentTask.startTime)
Exemplo n.º 2
0
def hotPotato(namelist, k):
    """
    Simulate the children's game Hot Potato. In this game children line up in a
    circle and pass an item from neighbor to neighbor as fast as they can. At a
    certain point in the game, the action is stopped and the child who has the
    item (the potato) is removed from the circle.
    :param namelist: A list of children's name involved in this game, required
                     to be nonempty.
    :param k: the position of child to be removed from the circular namelist
              counting from the front of the queue (The front one is assumed
              to be at position 0).

    :return: the name of the last person remaining after repetitive counting
             by k.
    """
    simqueue = Queue()

    for name in namelist:
        simqueue.enqueue(name)

    while simqueue.size() > 1:
        for i in range(k):
            simqueue.enqueue(simqueue.dequeue())
        simqueue.dequeue()

    return simqueue.dequeue()
Exemplo n.º 3
0
def safe_postion(num_soldiers):
    queue_sol = Queue()  # Declare an Empty Queue

    # Adding the list-num_soldiers to Queue using push
    for name in num_soldiers:
        queue_sol.enqueue(name)

    # looping through the soldires and killing the next to it
    # list_a =[]
    print("Original Circle:%s " % (queue_sol.items))
    while queue_sol.size() > 1:
        for i in range(1):

            k = queue_sol.enqueue(queue_sol.dequeue())
            print('-' * 30)
            #s = s.join(queue_sol.items)
            print("Remaining Soldier:", "".join(queue_sol.items))
            #print("Remaining Soldier:%s" % (queue_sol.items))
            print('-' * 30)
            #print('%s Kills: '%(queue_sol.items[0]))

        n = queue_sol.dequeue()
        print(queue_sol.items[0] + ' Kills: ' + n)
        time.sleep(1)

    return queue_sol.dequeue()
Exemplo n.º 4
0
def hotPotato(namelist, num):
    """烫手山芋问题
    类似于约瑟夫问题,游戏规则是孩子们围成一个圈,
    然后从队首开始报数,报到指定数字的孩子出局,
    最后只剩下一个人
    参数:
        namelist: 参与游戏的孩子人名的列表
        num: 报数的数字
    返回值:
        simqueue.dequeue(): String
            胜出的孩子
    """
    simqueue = Queue()

    # 把所有人名放进队列
    for name in namelist:
        simqueue.enqueue(name)

    # 当队列人数大于1的时候执行,因为每一轮报数都会有一个人出队,长度-1
    while simqueue.size() > 1:
        # 每一次报数过程中,队首的人出队然后重新进队
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())
        # 每一轮报数完后队首的人出队,队列长度-1
        simqueue.dequeue()

    return simqueue.dequeue()
Exemplo n.º 5
0
def send_flower(name_list, num):
    q = Queue()
    for name in name_list:
        q.enqueue(name)
    while q.size() > 1:
        for i in range(num):
            q.enqueue(q.dequeue())
        print(q.dequeue())
    return q.dequeue()
Exemplo n.º 6
0
def hotPotato(names, num):
    q = Queue()
    for ii in names:
        q.enqueue(ii)
    while q.size() != 1:
        for ii in range(num):
            q.enqueue(q.dequeue())
        q.dequeue()
    return q.dequeue()
Exemplo n.º 7
0
def send_flowers(name_list, num):
    simqueue = Queue()
    for name in name_list:
        simqueue.enqueue(name)
    while simqueue.size() > 1:
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())
            simqueue.dequeue()
        return simqueue.dequeue()
def hotPotato(namelist, num):  #参加游戏的人名列表namelist,传num次数
    simqueue = Queue()  #创建队列queue
    for name in namelist:
        simqueue.enqueue(name)  #队列存放namelist里面参加游戏的人名
    while simqueue.size() > 1:
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())  #传递过程:位于队首的人出列,紧接着从队尾入队。
        simqueue.dequeue()  #每一轮移除一次队首的人
    return simqueue.dequeue()  #while循环传递num次之后,最终返回最后唯一、剩下的1人
Exemplo n.º 9
0
def hotPotato(nameList, num):
    simqueue = Queue()
    for name in nameList:
        simqueue.enqueue(name)
    while simqueue.size() > 1:
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())
        simqueue.dequeue()
    return simqueue.dequeue()
Exemplo n.º 10
0
def hotPotato(num, names):
    potatoQueue = Queue() 
    for name in names:
        potatoQueue.enqueue(name)

    while potatoQueue.size() > 1:
        for i in range(num):
            potatoQueue.enqueue(potatoQueue.dequeue())
        potatoQueue.dequeue()
    return potatoQueue.dequeue()
Exemplo n.º 11
0
def hotpotato(nameList, num):
    q = Queue()
    for i in nameList:
        q.enqueue(i)
    while q.size() > 1:
        for _ in range(num):
            v = q.dequeue()
            q.enqueue(v)
        print(q.dequeue())
    print(f"the last one is: {q.dequeue()}")
Exemplo n.º 12
0
def send_flowers(name_list, num):
    simqueue = Queue()
    for name in name_list:
        simqueue.enqueue(name)
    while simqueue.size() > 1:
        for i in range(num):
            # 把移除的前六个人重新放入队伍
            simqueue.enqueue(simqueue.dequeue())
        print(simqueue.dequeue())
    return simqueue.dequeue()
Exemplo n.º 13
0
def hotpotato(namelist, num):
    aqueue = Queue()
    for name in namelist:
        aqueue.enqueue(name)

    while aqueue.size() > 1:
        for i in range(num):
            aqueue.enqueue(aqueue.dequeue())
        aqueue.dequeue(),
    return aqueue.dequeue()
Exemplo n.º 14
0
def HotPotato(namelist: List[str], repetitions: int) -> List[str]:
    queue = Queue()
    for name in namelist:
        queue.enqueue(name)

    for rep in range(repetitions):
        person = queue.dequeue()
        queue.enqueue(person)

    return queue.dequeue()
Exemplo n.º 15
0
def hot_potato(names, num):
    s = Queue()
    for name in names:
        s.enqueue(name)

    while s.size() > 1:
        for i in range(num):
            s.enqueue(s.dequeue())
        s.dequeue()

    return s.dequeue()
Exemplo n.º 16
0
def hotPotato(namelist,num):
	s = Queue()
	for one in namelist:
		s.enqueue(one)

	while s.size() > 1:
		for i in range(num):
			tmp = s.dequeue()
			s.enqueue(tmp)
		tmp = s.dequeue()
	return s.dequeue()
def hotPotato(namelist, num):
    q = Queue()
    for name in namelist:
        q.enqueue(name)

    while q.size() > 1:
        for i in range(num):
            q.enqueue(q.dequeue())
        q.dequeue()

    return q.dequeue()
Exemplo n.º 18
0
def hotpotato(namelist, num):
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)
    # 现在的队列是["Brad", "Kent", "Jane", "Susan", "David", "Bill"]
    # 从Bill开始数,逆时针
    while simqueue.size() > 1:
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())
        simqueue.dequeue()
    return simqueue.dequeue()
Exemplo n.º 19
0
def hot_pot(names, num):
    # create a Queue
    q  =  Queue()
    _ = [q.enqueue(i) for i in names]
    count = 0
    while q.size()!=1:
        while count !=num:
            q.enqueue(q.dequeue())
            count +=1
        q.dequeue()
    return q.dequeue()
Exemplo n.º 20
0
def hotPotato(namelist, num):
    gamequeue = Queue()
    for name in namelist:
        gamequeue.enqueue(name)

    while gamequeue.size() > 1:
        for i in range(num):
            gamequeue.enqueue(gamequeue.dequeue())

        gamequeue.dequeue()

    return gamequeue.dequeue()
Exemplo n.º 21
0
def hotPotato(namelist, num):
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)  #move the names from the list to the queue

    while simqueue.size() > 1:
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())

        simqueue.dequeue()  #person eliminated

    return simqueue.dequeue()  #person from whom the game restarts
Exemplo n.º 22
0
def hotPotato(namelist, num):
   simqueue = Queue()
   for name in namelist:
      simqueue.enqueue(name)

   while simqueue.size() > 1:
      for i in range(num):
         simqueue.enqueue(simqueue.dequeue())

      simqueue.dequeue()

   return simqueue.dequeue()
Exemplo n.º 23
0
def hotPotato(namelist, num):
    simqueue = Queue()  #taken from previous queue
    for name in namelist:
        simqueue.enqueue(name)

    while simqueue.size() > 1:
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())

        simqueue.dequeue()

    return simqueue.dequeue()
def hot_potato(nameslst, num=None):
    circle = Queue()
    if not num:
        num = num_input()
    print("counter is %d" % (num))
    for name in nameslst:
        circle.enqueue(name)

    while circle.size() > 1:
        for i in range(num):
            circle.enqueue(circle.dequeue())
        circle.dequeue()
    return circle.dequeue()
Exemplo n.º 25
0
def hotpotato(namelist, num):
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)

    while simqueue.size() > 1:
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())

        aa = simqueue.dequeue()
        print(aa)

    return simqueue.dequeue()
def hotPotato(namelist, num):
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)

    while simqueue.size() > 1:
        counter=randint(1,len(namelist))
        for i in range(counter):
            simqueue.enqueue(simqueue.dequeue())

        simqueue.dequeue()

    return simqueue.dequeue()
Exemplo n.º 27
0
def hotPotato(namelist, num):
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)

    while simqueue.size() > 1:
        for i in range(1, num):
            simqueue.enqueue(simqueue.dequeue())

        temp = simqueue.dequeue()
        print(temp + "*" * 10)

    return simqueue.dequeue()
Exemplo n.º 28
0
def try_to_live(live_list, num):
    queue = Queue()

    for people in live_list:
        queue.enqueue(people)

    while queue.size() > 1:
        for i in range(num):
            print(i)
            queue.enqueue(queue.dequeue())
        queue.dequeue()

    return queue.dequeue()
Exemplo n.º 29
0
def hotPotato(namelist, max_numrange):
    if max_numrange < 1:
        return 'max_numrange is too small'
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)

    while simqueue.size() > 1:
        for i in range(random.randint(1, max_numrange)):
            simqueue.enqueue(simqueue.dequeue())

        simqueue.dequeue()

    return simqueue.dequeue()
Exemplo n.º 30
0
def hotPotato(namelist, num):
    # 创建一个队列
    simqueue = Queue()
    # 变量列表将名字放入队列
    for name in namelist:
        simqueue.enqueue(name)
    # 当队列大于1时不断循环
    while simqueue.size() > 1:
        for i in range(num):
            # 将队首的元素弹出并放入队尾
            simqueue.enqueue(simqueue.dequeue())
        simqueue.dequeue()
    # 循环结束后只剩一个元素
    return simqueue.dequeue()
def hotPotato(namelist, num):
    
    simqueue = Queue() #create a new queue
    
    for name in namelist:
        simqueue.enqueue(name)
        
    while simqueue.size() > 1 :
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue()) #the first in queue leaves the queue and enters again.
        
        #simqueue.dequeue()
        break
        
    return simqueue.dequeue()
Exemplo n.º 32
0
def hotPotato(namelist, num):
    ## initialize a quene
    simqueue = Queue()
    ## add item into the quene
    for name in namelist:
        simqueue.enqueue(name)

    while simqueue.size() > 1:
        ## extract front(right) and append to the end(left) for num times
        for i in range(num):
            simqueue.enqueue(simqueue.dequeue())
        ## remove the front
        simqueue.dequeue()

    ## return this element
    return simqueue.dequeue()
Exemplo n.º 33
0
def check(namelist,num):
    queue = Queue()

    """把名单列表里面的名字全部添加到队列中"""
    for name in namelist:
        queue.enqueue(name)

    while queue.size()>1:

        """循环队列定义好某几个数从队列头中进行删除操作,被删除之后添加到队尾中"""
        for i in range(num):
            queue.enqueue(queue.dequeue())

        queue.dequeue()

    return queue.dequeue()
def bfs(g, start):
    start.setDistance(0)
    start.setPred(None)
    vertQueue = Queue()
    vertQueue.enqueue(start)
    while (vertQueue.size() > 0):
        currentVert = vertQueue.dequeue()
        for nbr in currentVert.getConnections():
            if (nbr.getColor() == 'white'):
                nbr.setColor('gray')
                nbr.setDistance(currentVert.getDistance() + 1)
                nbr.setPred(currentVert)
                vertQueue.enqueue(nbr)
        currentVert.setColor('black')
Exemplo n.º 35
0
def simulation(numSeconds, pagesPerMinute, stud):
	
	labprinter = Printer(pagesPerMinute)
	printQueue = Queue()
	waitingtimes = []

	for currentSecond in range(numSeconds):
		if newPrintTask(stud):
			task = Task(currentSecond)
			printQueue.enqueue(task)
		if (not labprinter.busy()) and (not printQueue.isEmpty()):
			nexttask = printQueue.dequeue()
			waitingtimes.append(nexttask.waitTime(currentSecond))
			labprinter.startNext(nexttask)

		labprinter.tick()

	averageWait = sum(waitingtimes)/len(waitingtimes)
	print('Average Wait %2.2f secs %2d tasks remaining.' % (averageWait, printQueue.size()))
Exemplo n.º 36
0
def simulation(num_seconds, page_rate):
    labPrinter = Printer(page_rate)
    printerQueue = Queue()
    waitingTime = []
    pages_number = 20
    students_number = 10

    for second in range(num_seconds):
        if newPrintTask(students_number):
            task = Task(second, pages_number)
            printerQueue.enqueue(task)

        if (not labPrinter.busy()) and (not printerQueue.isEmpty()):
            nextTask = printerQueue.dequeue()
            waitingTime.append(nextTask.waitingTime(second))
            labPrinter.startNext(nextTask)

        labPrinter.tick()
    averageWait = sum(waitingTime) / len(waitingTime)

    print("Average Wait %6.2f secs %3d tasks remaining." % (averageWait, printerQueue.size()))
			elem=driver.find_elements_by_class_name('snippet__link')
		except:
			print "\n_______NO Followers of %s__________\n"%user_name
			elem=[]
		for i in elem:
			url_q.enqueue(str(i.get_attribute('href')))
		print "\n*******Network Fetched... Beginning the next crawl************\n"
	driver.quit()
try:
	crawl()
except Exception,e:
	print str(e)
	f=open('url_queue.txt','w')
	print >>f,url
	while not url_q.isEmpty():
		print >>f,url_q.dequeue()
	f.close()
	driver.quit()

'''Clicking the LOAD MORE button
		c=1
		d=0
		a=0
		elem=driver.find_element_by_xpath('//*[@id="foodjourney"]/div[2]')
		while c==1:
			try:
				s=wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="foodjourney"]/div[2]')))
				elem=driver.find_element_by_xpath('//*[@id="foodjourney"]/div[2]')
				if str(elem.text)=="":
					break
				elem.click()