wordlist = ['cat','dog','rabbit']
letterlist = []
for aword in alist:
for aletter in aword:
letterlist.append(aletter)
letterlist
def squareroot(n):
root = n/2
for times in range(30):
root = ( 1 / 2) * ( root + ( n / root ) )
return root
class _Fraction:
def __init__(self, top, bottom):
self.num = top
self.den = bottom
def gcd(self,m,n):
while m%n !=0:
oldm = m
oldn = n
m = oldn
n = oldm%oldn
return n
def show(self):
print(self.num, "/",self.den)
def __str__(self):
return str(self.num) + '/' + str(self.den)
def __add__(self, another):
newnum = self.num * another.den + self.den * another.num
newden = self.den * another.den
common = self.gcd(newnum, newden)
return _Fraction(newnum//common, newden//common)
def __eq__(self, another):
t1 = self.num * another.den
t2 = self.den * another.num
return t1 == t2
class _LogicGate:
def __init__(self, n):
self.label = n
self.output = None
def getLabel(self):
return self.label
def getoutput(self):
self.output = self.performGateLogic()
return self.output
class _BinaryGate(_LogicGate):
def __init__(self, n):
super().__init__(n)
self.pinA = None
self.pinB = None
def getPinA(self):
if self.pinA == None:
return int(input("Enter pinA input for gate" + ' ' + self.getLabel() + "-->"))
else:
return self.pinA.getfront().getoutput()
def getPinB(self):
if self.pinB ==None:
return int(input("Entre pinB input for gate" + ' ' + self.getLabel() + "-->"))
else:
return self.pinB.getfront().getoutput()
def setNextPin(self, source):
if self.pinA == None:
self.pinA = source
else:
if self.pinB == None:
self.pinB = source
else:
raise RuntimeError("Error:No")
class _UnaryGate(_LogicGate):
def __init__(self, n):
super().__init__(n)
self.pin = None
def getPin(self):
if self.pin == None:
return int(input("Enter pin input for gate" + ' ' + self.getLabel() + "-->"))
else:
return self.pin.getfront().getoutput()
def setNextPin(self, source):
self.pin = source
class _AndGate(_BinaryGate):
def __init__(self, n):
super().__init__(n)
def performGateLogic(self):
a = self.getPinA()
b = self.getPinB()
if a == 1 and b == 1:
return 1
else:
return 0
class _OrGate(_BinaryGate):
def __init__(self, n):
super().__init__(n)
def performGateLogic(self):
a = self.getPinA()
b = self.getPinB()
if a == 0 and b == 0:
return 0
else:
return 1
class _FeiGate(_UnaryGate):
def __init__(self, n):
super().__init__(n)
def performGateLogic(self):
temp = self.getPin()
return 1-temp
class _Connector():
def __init__(self, front, back):
self.fg = front
self.bg = back
back.setNextPin(self)
def getfront(self):
return self.fg
def getback(self):
return self.bg
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items) - 1]
def size(self):
return len(self.items)
class Queue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def eq(self, item):
self.items.insert(0, item)
def dq(self):
return self.items.pop()
def size(self):
return len(self.items)
class Deque:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def eqf(self, item):
self.items.insert(0, item)
def dqf(self):
return self.items.pop(0)
def eqb(self, item):
self.items.append(item)
def dqb(self):
return self.items.pop()
def size(self):
return len(self.items)
class _printer:
def __init__(self, ppm):
self.pagerate = ppm
self.currentTask = None
self.timeremain = 0
def tick(self):
if self.currentTask != None:
self.timeremain -= 1
if self.timeremain <= 0:
self.currentTask = None
def busy(self):
if self.currentTask != None:
return True
else:
return False
def startNext(self, newtask):
self.currentTask = newtask
self.timeremain = newtask.getpage()*60/self.pagerate
import random
class Task:
def __init__(self, time):
self.timestamp = time
self.pages = random.randrange(1, 21)
def getstamp(self):
return self.timestamp
def getpage(self):
return self.pages
def waittime(self, currenttime):
return currenttime - self.timestamp
def simulation(numSeconds, pagesPerMinute):
labprinter = _printer(pagesPerMinute)
waitQ = Queue()
waitingtimes = []
for currentSecond in range(numSeconds):
if newPrintTask():
task = Task(currentSecond)
waitQ.eq(task)
if(not labprinter.busy()) and (not waitQ.isEmpty()):
nexttask = waitQ.dq()
waitingtimes.append(nexttask.waittime(currentSecond))
labprinter.startNext(nexttask)
labprinter.tick()
averagewait = sum(waitingtimes)/len(waitingtimes)
print("Average wait %6.2f secs %3d tasks remaining."%(averagewait,waitQ.size()))
def newPrintTask():
num = random.randrange(1,181)
if num ==180:
return True
else:
return False
def huiwen(check_string):
deque = Deque()
for s in check_string:
deque.eqb(s)
while deque.size() > 1:
a = deque.dqf()
b = deque.dqb()
if a == b:
continue
else:
return False
if deque.size() == 1:
return False
else:
return True