Created
November 20, 2013 20:40
-
-
Save austa/7570593 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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