Skip to content

Instantly share code, notes, and snippets.

@austa
Created November 20, 2013 20:40
Show Gist options
  • Save austa/7570593 to your computer and use it in GitHub Desktop.
Save austa/7570593 to your computer and use it in GitHub Desktop.
#listenin sonu yigitin basi olarak ayarlandi
class Stack:
def __init__(self):
self.liste = []
def isEmpty(self):
return self.liste == []
def push(self, eleman):
self.liste.append(eleman)
def pop(self):
return self.liste.pop()
def size(self):
return len(self.liste)
def peek(self):
return self.liste[-1]
#listenin basi yigitin basi olarak ayarlandi
class Stack1:
def __init__(self):
self.liste = []
def isEmpty(self):
return self.liste == []
def push(self, eleman):
self.liste.insert(0,eleman)
def pop(self):
return self.liste.pop(0)
def size(self):
return len(self.liste)
def peek(self):
return self.liste[0]
#kuyruk gercekleyelim,baz, problemlerde isimize yarayacak
class Queue:
def __init__(self):
self.liste = []
def enqueue(self,eleman):
self.liste.insert(0,eleman)
def dequeue(self):
return self.liste.pop()
def size(self):
return len(self.liste)
def peek(self):
return self.liste[-1]
def isEmpty(self):
return self.liste == []
#simdi stack kullanarak calisma sorularini cozelim
#cozerken ilk Stack gerceklemesini kullanacagiz
def dengeliMi(tdizisi):
s = Stack()
deger = True
counter = 0
while len(tdizisi) > counter and deger:
gelen = tdizisi[counter]
if gelen == "(":
s.push(gelen)
else:
if s.isEmpty():
deger = False
else:
s.pop()
counter += 1
if s.isEmpty() and deger:
return True
else:
return False
#print dengeliMi("(())((()))")
#True donecektir.
#problemimiz butun panatezleri kapsasin
def dengelimi(tdizisi):
s = Stack()
deger = True
counter = 0
while len(tdizisi) > counter and deger:
gelen = tdizisi[counter]
if gelen in "<{([":
s.push(gelen)
else:
if s.isEmpty():
deger = False
else:
son_tag = s.pop()
if not karsilastir(son_tag, gelen):
deger = False
counter += 1
if s.isEmpty() and deger:
return True
else:
return False
def karsilastir(acik,kapali):
aciklar = "<{(["
kapalilar = ">})]"
return aciklar.index(acik) == kapalilar.index(kapali)
#print dengelimi("<{(([]))}>")
#True donecektir
#birazda taban donusturelim
def ikiliyeCevir(sayi):
s = Stack()
while sayi > 0:
kalan = sayi % 2
s.push(kalan)
sayi = sayi / 2
ikili_sayimiz = ""
while not s.isEmpty():
ikili_sayimiz += repr(s.pop())
return ikili_sayimiz
#print ikiliyeCevir(70)
#sonucumuz 1000110
#verilen tabana donusturelim
def tabanDonustur(sayi,taban):
s = Stack()
while sayi > 0:
kalan = sayi % taban
s.push(kalan)
sayi /= taban
degerler = "0123456789ABCDEF"
yeni_deger = ""
while not s.isEmpty():
yeni_deger += degerler[s.pop()]
return yeni_deger
#print tabanDonustur(26,16)
#sonuc 1A
#Fraction sinifi tanimlayalim birazda ondan ornek yapalim
class Fraction:
def __init__(self,pay,payda):
self.pay = pay
self.payda = payda
def show(self):
print self.pay, "/", self.payda
def __add__(self,baskaFonksiyon):
yeni_pay = self.pay * baskaFonksiyon.payda + \
self.payda * baskaFonksiyon.pay
yeni_payda = self.payda * baskaFonksiyon.payda
return Fraction(yeni_pay, yeni_payda)
def cikar(self,baskaFonksiyon):
yeni_pay = self.pay * baskaFonksiyon.payda - \
self.payda * baskaFonksiyon.pay
yeni_payda = self.payda * baskaFonksiyon.payda
return Fraction(yeni_pay, yeni_payda)
def karsilastir(self,baskaFonksiyon):
num1 = self.pay * baskaFonksiyon.payda
num2 = self.payda * baskaFonksiyon.pay
if num1 > num2:
return 1
else:
if num1 == num2:
return 0
else:
return -1
#f2 = Fraction(4,9)
#f1 = Fraction(3,5)
#f3 = f1 + f2
#47 / 45
#f4 =f1.cikar(f2)
#f4.show()
#7 / 45
#print f1.karsilastir(f2)
#1 sonucu donecek
#simdi birazda hot_patato oyunuyla ilgilenelim
#bunun icin kuyruk gerekli, yukarida gercekleyelim
def hot_patato(gelen_liste, N):
sayac = 0
q = Queue()
while len(gelen_liste) > sayac:
q.enqueue(gelen_liste[sayac])
sayac += 1
while q.size() > 1:
for i in range(1,N):
q.enqueue(q.dequeue())
q.dequeue()
return q.peek()
#liste = ["Gulsum","Ruziye","Funda","Ensar","Alaattin","Eda","Engin"]
#print hot_patato(liste,4)
#Ruziye kazanacaktir
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment