Skip to content

Instantly share code, notes, and snippets.

@ozgurkaracam
Last active January 20, 2016 09:46
Show Gist options
  • Save ozgurkaracam/fe9d3c4921b098a1c352 to your computer and use it in GitHub Desktop.
Save ozgurkaracam/fe9d3c4921b098a1c352 to your computer and use it in GitHub Desktop.
2016 Veri Yapıları Final Çözümlerim
# Özgür KARAÇAM 14060824
# 20.01.2016 11.34
#Soru 1: (30 p) Özyineleme
#a) Fonksiyonun geri döndürme yeteneği yokken ve döngü kullanmaksızın 10'luk tabandaki
#bir sayıyı herhangi bir tabana dönüştüren baseConvert işlevi yazınız. İpucu: özyineleme ve
#stack yardımcı olabilir. Örnek: baseConvert(123, 7) 123 sayısının 7 taban karşılığı üretilecek.
a="0123456789ABCDEF"
s=Stack()
def cevir(sayi,taban):
if sayi<taban:
s.push(a[sayi%taban])
else:
s.push(a[sayi%taban])
cevir(sayi/taban,taban)
#stack sınıfı import edilmiştir, fonksiyon çağırıldıktan sonra a stack'ı
#boşaltılırsa sayı normal haliyle döndürülür.
#b) Döngü kullanmaksızın argüman olarak verilen listenin ortalamasını hesaplayan programı/işlevi yazınız.
adet=0
def ortalama(alist):
global adet
if len(alist)==1:
return alist[0]/adet
else:
adet=adet+1
return alist[0]+ortalama(alist[1:])
#Soru 2: (10 p)
#a) a b + c * postfix ifadesinin prefix ifade karşılığını yazınız.
# (a+b)*c
#b) 6 2 – 4 3 + * 18 – 10 / 10 – ifadesinin sonucu nedir?
# -9
#Soru 3: (30 p) Deque veriyapısından miraslanmayı etkin kullanarak Yığıt ve Kuyruk türetiniz.
class Queue(Deque):
def __init__(self):
Deque.__init__(self)
def enqueue(self,a):
return self.addFront(a)
def dequeue(self):
return self.removeRear()
#size,isempty gibi fonksiyonlar miras alınan deque de tanımlandıgı için alt sınıflarda tanımlanmasına gerek yoktur.
class Stack(Deque):
def __init__(self):
Deque.__init__(self)
def push(self,a):
return self.addFront(a)
def pop(self):
return self.removeFront()
def peek(self):
return self.alist[len(self.alist)-1]
#Soru 4: (30 p) Mızık çocuklarla yanan patates (hot potato) oyununu gerçekleyiniz.
#İpucu: burada mızıkçılık derecesi de oyuna girdi olarak sunulur.
#Oyunda önce en az mızık olanlar yanar, en son ise en mızık olanlardan ilk sayıya denk gelen yanar.
def hotPotatoe(alist,N):
q=Queue()
for isim in alist:
q.queue(isim)
while q.size()>1:
for i in range(N):
q.queue(q.enqueue())
q.dequeue()
return q.dequeue()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment