Bu yazıda edabit.com üzerinde gördüğüm problemlerden kendim ilginç bulduğum ve çözmeye çalıştıklarımı paylaşacağım.
1-Disarium Sayısı Kontrolü
Bir n sayısının rakamları soldan sağa doğru bulunduğu sıradaki kuvveti alınıp toplandığında elde edilen sonuç n sayısına eşit oluyorsa bu sayıya Disarium sayısı denir. 89, 135, 518 gibi.
Örneğin; 135 sayısı için
1^1 + 3^2 + 5^3 = 1 + 9 + 125 = 135
olduğu için 135 disarium sayısıdır. Bu sayının kontrolü için de aşağıdaki kod parçasını yazdım.
def is_disarium(sayi):
liste = []
for i in str(sayi):
liste.append(i)
a=0
for j in range(0,len(liste)):
a += int(liste[j])**(j+1)
if sayi == a:
return True
else:
return False
print(is_disarium(135))
Çıktı: True
2-KRİPTOLAMA ÖRNEĞİ
Girilen bir kelimeyi önce ters çevirecek sonra aşağıdaki değişimleri yapıp sonuna “gkhn” ekleyecek kod parçasını yazdım.
# a => 0 # e => 1 # i => 2 # o => 2 # u => 3
a = str(input("Şifrelenicek kelimeyi giriniz: "))
def kripto(kelime):
liste = []
for i in kelime:
liste.append(i)
liste.reverse()
listetostr = ''.join(map(str,liste))
listetostr = listetostr.replace("a", "0")
listetostr = listetostr.replace("e", "1")
listetostr = listetostr.replace("i", "2")
listetostr = listetostr.replace("o", "2")
listetostr = listetostr.replace("u", "3")
listetostr = listetostr + "gkhn"
return listetostr
print(kripto(a))
Çıktı: “denemeakgozgokhan” –> n0hk2gz2gk01m1n1dgkhn
3-KART OYUNU
Verilen iki adet 5’li kart dizisine göre kartların toplamı büyük olan kazanıcak şekilde yazdığım kod parçası.
def win_round(list1,list2):
list1 = sorted(list1)
list2 = sorted(list2)
sayi1 = str(list1[-1]) + str(list1[-2])
sayi2 = str(list2[-1]) + str(list2[-2])
print("Senin kartlarının toplamı: " + sayi1)
print("Rakibinin kartlarının toplamı: " + sayi2)
if int(sayi1)>int(sayi2):
print("Kazandın! " + sayi1 + ">" + sayi2)
elif int(sayi1)<int(sayi2):
print("Kaybettin :( " + sayi1 + "<" + sayi2)
else:
print("Berabere")
return
win_round([7,3,4,4,5],[3,2,5,4,6])
Çıktı :
Senin kartlarının toplamı: 75
Rakibinin kartlarının toplamı: 65
Kazandın! 75>65