Exemplo n.º 1
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.º 2
0
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.º 3
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()
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')
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.º 6
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.º 7
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()))
Exemplo n.º 8
0
    def isEmpty(self):
        return self.items == []

    def enqueue(item):
        self.items.insert(0, item)

    def dequeue():
        return self.items.pop()

    def size():
        return len(self.items)


q = Queue()
q.enqueue(4)
q.enqueue('dog')
q.enqueue(True)
print(q.size())
q.isEmpty()
q.enqueue(8.4)
q.dequeue()
q.dequeue()
q.size()

from pythonds.basic.queue import Queue

player = ['Aaron', 'Drew', 'Russel', 'Ben', 'Patrick', 'Eli']


def hotPotato(namelist, num):
Exemplo n.º 9
0
def newPrintTask():
    num = random.randrange(1, 181)
    if num == 180:
        return True
    else:
        return False


for i in range(10):
    pagesPerMinute = 10
    printer = Printer(pagesPerMinute)
    printQueue = Queue()
    # 计算平均等待时间,所以需要将所有的等待时间进行存储
    waitingtimes = []

    # 模拟的是一小时当中 60分 = 3600s
    for currentSecond in range(3600):
        if newPrintTask():
            task = Task(currentSecond)
            printQueue.enqueue(task)
        if (not printer.busy()) and (not printQueue.isEmpty()):
            nexttask = printQueue.dequeue()
            waitingtimes.append(nexttask.waitTime(currentSecond))
            printer.startNext(nexttask)

        printer.tick()

    # 平均等待时间
    averageWatingTime = sum(waitingtimes) / len(waitingtimes)
    print("平均等待时间 %6.2f秒,剩下%3d任务" % (averageWatingTime, printQueue.size()))
Exemplo n.º 10
0
def game(q, num):
    iter = 0
    while q.size() != 1:
        tmp = q.dequeue()
        print(tmp)
        if iter != num:
            q.enqueue(tmp)
        else:
            iter = 0
        iter += 1
    return q.dequeue()


q = Queue()
q.enqueue('Bill')
q.enqueue('Jhon')
q.enqueue('Frank')
q.enqueue('Ivan')
q.enqueue('Fun')

print('Победитель', game(q, 2))

'''
book example

def hotPotato(namelist, num):
    simqueue = Queue()
    for name in namelist:
        simqueue.enqueue(name)
Exemplo n.º 11
0
from pythonds.basic.queue import Queue

q = Queue()
print((q.enqueue('hello')))

print((q.enqueue('dog')))
print((q.enqueue(3)))

print((q.dequeue()))
Exemplo n.º 12
0
from pythonds.basic.queue import Queue
from Chapter3_5 import Queue2

q1 = Queue()
q2 = Queue2()

#It is going to be checked the enqueue / dequeue in both queues.
t1 = timeit.Timer("q1.enqueue(random.random())",
                  "from __main__ import random, q1")
t2 = timeit.Timer("q2.enqueue(random.random())",
                  "from __main__ import random, q2")
resEnqueue1 = []
resEnqueue2 = []
for i in range(1, 100000, 10000):
    for x in range(i):
        q1.enqueue(random.random())
        q2.enqueue(random.random())
    pt = t1.timeit(number=1000)
    pt2 = t2.timeit(number=1000)
    resEnqueue1.append(pt)
    resEnqueue2.append(pt2)

print("Results of enqueue operation, first the given ADT, second our ADT")
print(resEnqueue1)
print(resEnqueue2)

#Dequeue. We expect that our implementation is slower due the pop(0).

t3 = timeit.Timer("q1.dequeue()", "from __main__ import q1")
t4 = timeit.Timer("q2.dequeue()", "from __main__ import q2")
Exemplo n.º 13
0
from pythonds.basic.queue import Queue

q = Queue()
print(q.isEmpty())
q.enqueue('dog')
print(q)
                            (By.CLASS_NAME, 'load-more')))
                    load_more.click()
                    time.sleep(2)
                except Exception, e:
                    print "E1: ", str(e)
                    break
        except Exception, e:
            print "E2 :", str(e)

        try:
            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
Exemplo n.º 15
0
    def isEmpty(self):
        return self.items == []

    def enqueue(self, item):
        self.items.insert(0, item)

    def dequeue(self):
        return self.items.pop()

    def size(self):
        return len(self.items)


q = Queue()
q.enqueue(1)
q.size()
q.isEmpty()

# example, hotPotato  /  who will die
from pythonds.basic.queue import Queue


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())
					s=wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'load-more')))
					load_more.click()
					time.sleep(2)
				except Exception,e:
					print "E1: ",str(e)
					break
		except Exception,e:
			print "E2 :",str(e)

		try:
			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
Exemplo n.º 17
0
class DouBanSpider(object):
    def __init__(self):
        # 创建一个队列用来保存进程获取到的数据
        self.q = Queue()
        self.headers = {
            'Cookie':
            'll="118282"; bid=ctyiEarSLfw; ps=y; __yadk_uid=0Sr85yZ9d4bEeLKhv4w3695OFOPoedzC; dbcl2="155150959:OEu4dds1G1o"; as="https://sec.douban.com/b?r=https%3A%2F%2Fbook.douban.com%2F"; ck=fTrQ; _pk_id.100001.4cf6=c86baf05e448fb8d.1506160776.3.1507290432.1507283501.; _pk_ses.100001.4cf6=*; __utma=30149280.1633528206.1506160772.1507283346.1507290433.3; __utmb=30149280.0.10.1507290433; __utmc=30149280; __utmz=30149280.1506160772.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=223695111.1475767059.1506160772.1507283346.1507290433.3; __utmb=223695111.0.10.1507290433; __utmc=223695111; __utmz=223695111.1506160772.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); push_noty_num=0; push_doumail_num=0',
            'Host':
            'movie.douban.com',
            'Referer':
            'https://movie.douban.com/top250?start=225&filter=',
            'User-Agent':
            'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36',
        }

    def run(self, url):
        self.parse_page(url)

    def send_request(self, url):
        '''
        用来发送请求的方法
        :return: 返回网页源码
        '''
        # 请求出错时,重复请求3次,
        i = 0
        while i <= 3:
            try:
                print(u"[INFO]请求url:" + url)
                html = requests.get(url=url, headers=self.headers).content
            except Exception as e:
                print(u'[INFO] %s%s' % (e, url))
                i += 1
            else:
                return html

    def parse_page(self, url):
        '''
        解析网站源码,并采用xpath提取 电影名称和平分放到队列中
        :return:
        '''
        response = self.send_request(url)
        html = etree.HTML(response)
        # 获取到一页的电影数据
        node_list = html.xpath("//div[@class='info']")
        for move in node_list:
            # 电影名称
            title = move.xpath('.//a/span/text()')[0]
            # 评分
            score = move.xpath(
                './/div[@class="bd"]//span[@class="rating_num"]/text()')[0]

            # 将每一部电影的名称跟评分加入到队列
            self.q.enqueue(score + "\t" + title)

    def main(self):

        base_url = 'https://movie.douban.com/top250?start='
        # 构造所有url
        url_list = [base_url + str(num) for num in range(0, 225 + 1, 25)]
        # 创建协程并执行
        job_list = [gevent.spawn(self.run, url) for url in url_list]
        # 让线程等待所有任务完成,再继续执行。
        gevent.joinall(job_list)

        while not self.q.isEmpty():
            print(self.q.dequeue())
Exemplo n.º 18
0
    def enqueue(self, item):
        self.items.insert(0, item)

    def dequeue(self):
        return self.items.pop()

    def isEmpty(Self):
        return self.items == []

    def size(self):
        return len(self.items)


q = Queue()
q.enqueue("a")
q.enqueue("b")
q.enqueue("c")

print(q.size())
print(q.dequeue())

print(q.size())
'''
    马铃薯游戏(击鼓传花),选定一个人作为开始的人,数到num个人,此人淘汰
    ['零','一','二','三','四','五','六','七','八','九']   七
    ['八','九','零','一','二','三','四','五','六']    五
    ['六','八','九','零','一','二','三','四']    四
    ['六','八','九','零','一','二','三']    六
    ['八','九','零','一','二','三']    九
    ['零','一','二','三','八']    二