Last active
January 20, 2016 09:46
-
-
Save ozgurkaracam/fe9d3c4921b098a1c352 to your computer and use it in GitHub Desktop.
2016 Veri Yapıları Final Çözümlerim
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
# Ö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