Basitten zor’a(sağlam :)) Algoritma örnekleri;

Ocak 23, 2020 0 Yazar: alikperislam
# döngülerle örnekler
for i in range(1,100):
if i%15==0:
print("kolon1 =",i)
for x in range(1,30):
if x%5==0:
print("kolon2 =",x)
for y in reversed(range(50,100)):
if y%10==0:
print("kolon3 =",y)
n=0
sayi=2
while n<6 :
n+=1
print("kolon4 =",sayi**n)

#fibonaççi serisi:
a=1
b=1
c=0
s=1
while s<10: #for döngüsüylede yapılabilir 2 satır daha az kod yazmış oluruz.
s+=1
c=a+b
a=b
b=c
print("fibonaççinn ilk 10 elemanı",c)

#Ekrana çarpım tablosunu bastıran kodu yazınız (kullanıcıdan alınız.):
a=int(input("bir sayı giriniz :"))
b=int(input("bir sayı giriniz :"))
def carpim(x,y):
global a,b
return a*b
c=carpim(a,b)
print(c)

# kullanıcıdan satır ve sutunu alnınan matrisin sadece köşegenlerini 1 geri kalanını 0 yazdır.
satir=int(input("satir :"))
sutun=int(input("sütun :"))
matris=[[0 for x in range(satir)]for y in range(sutun)]
for i in range(satir):
for j in range(sutun):
if satir>2:
matris[1][j] = 0
matris[2][j]=0
matris[i][0] = 1
matris[i][-1] = 1
print(matris)

#Verilen boyuttaki bir kare matrisin içerisine salyangoz (helezon) şeklinde ardışık sayıları yerleştiriniz.
a=[[1,2,3,4,5],
[22,18,14,10,6],
[23,19,15,11,7],
[24,20,16,12,8],
[25,21,17,13,9]]
print(a)

#faktoriyel:
def facto(n):
a=1
sonuc=1
while a<=n:
sonuc = sonuc * a
a += 1
return sonuc
print(facto(5))

#Verilen bir sayının faktöriyelini özyinelimli (recursive) olarak hespalayan fonksiyonu yazınız.
def factoriyel(n):
if (n==0):
return 1
return n * factoriyel(n - 1)

print(factoriyel(4))

#kombinasyon :
def f(a):
if a==1:
return 1
else:
sonuc= a*f(a-1)
return sonuc

n=int(input("Lütfen önce büyük sayıyı giriniz\n Birinci sayı: "))
r=int(input("İkinci sayı: "))

a=f(n)/(f(n-r)*f(r))
print("Kombinasyonu: " + str(int(a)))

#ekrana tarih basma:
gun=input("lütfen gün giriniz :")
ay=input("ay giriniz :")
yil=input("yılı giriniz :")
print(gun,".",ay,".",yil)

# doğum yılını bulma algoritması:
yil=int(input("günümüz yılı? :"))
yas=int(input("kaç yaşındasın :"))
print("doğum yılı =",yil-yas)

# kaç yıldır hayattayız algoritması:
gun=int(input("doğum günü:"))
ay=int(input("doğum ayı :"))
yil=int(input("doğum yılı :"))
print("doğum günü = ",gun,".",ay,".",yil)
gugun=int(input("günümüz gün:"))
guay=int(input("günümüz ayı :"))
guyil=int(input("günümğz yılı :"))
print("günümüz tarihi = ",gugun,".",guay,".",guyil)
if gun>gugun and ay>guay:
print(guyil-yil,"yıl",ay-guay,"ay",gun-gugun,"gün.")
elif gun>gugun and ay<guay:
print(guyil - yil, "yıl", guay-ay, "ay", gun - gugun, "gün.")
elif gun<gugun and ay>guay:
print(guyil - yil, "yıl", ay - guay, "ay", gugun-gun, "gün.")
else:
print(guyil - yil, "yıl", guay - ay, "ay", gugun - gun, "gün.")

#Kullanıcıdan a,b ve c sayılarını okuyarak aşağıdaki işlemi yapan kodu yazınız a'nın karesi +b'nin karesi +3c
a=int(input("bir sayı giriniz :"))
b=int(input("bir sayı giriniz :"))
c=int(input("bir sayı giriniz :"))
print((a**2)+(b**2)+3)

#Bir işçinin işi bitirme süresini ve toplam işçi sayısını alarak, işin bitme süresini hesaplayan kodu yazınız.
isci=int(input("işçi sayısını giriniz :"))
sure=int(input("kaç günde bitti :"))
print(isci,"işçi bir işi",sure,"günde yapmıştır.")
print(2*isci,"işçi bu işi",2*sure,"günde yapar.")

#Bir dik üçgenin iki dik kenarını alarak hipotenüsünü hesaplayan kod yazınız.
import math
a=int(input("a kenarını giriniz :"))
b=int(input("b kenarını giriniz :"))
print(math.sqrt((a**2)+(b**2))) #math.sqrt = kökünü almayı sağlıyor.

#bir dik üçgenin iki dik kenarı girildiğinde, bu üçgenin alanını ve çevresini hesaplayan kodu yazınız.
import math
a=int(input("a kenarını giriniz :"))
b=int(input("b kenarını giriniz :"))
c=math.sqrt((a**2)+(b**2))
print("çevre=",a+b+c)
print("alan",(a*b)/2)

#Mesafeyi ve hızı alıp süreyi hesaplayan bir kod yazınız.
km=int(input("ankara-istanbul arası kaç km? :"))
hiz=int(input("hızınız kaç? :"))
zaman=km//hiz
print("ankara-istanbul arası süre =",zaman,"saat.")

#Kullanıcıdan üç adet sayı alarak bu sayıların bir dik üçgenin kenar uzunlukları olup olmadığını hesaplatan bir kod
a=int(input("a kenarını giriniz :"))
b=int(input("b kenarını giriniz :"))
c=int(input("c kenarını giriniz :"))
if (a**2)+(b**2) == c**2:
print("dik üçgen")
else:
print("geniş veya dar üçgen.")

sayi=int(input("bir sayı giriniz :"))
print(sayi*"*")

#Kullanıcıdan ismini okuyarak ekrana “Merhaba isim” yazan bir kod yazınız.
isim="Alikper"
sayac=0
for i in range(10):
sayac+=1
print(sayac,".merhaba",isim)

#Klavyeden 3 sayı okuyunuz. Bu sayılar sırasıyla şimdiki saat, şimdiki dakika ve dakika olarak fark olacaktır.
saat=int(input("saati giriniz :"))
dakika=int(input("dakikayı giriniz :"))
fark=int(input("farkı giriniz :"))
x=fark//60
y=fark%60
print("saat=",saat+x)
print("dakika=",dakika+y)

#Bir firma, mesaiye kalan çalışanlarının mesai fiyatlarını hesaplayan bir program istemektedir.
"""10 saate kadar mesaiye kaldıysa saat başına 1 tl, 10-20 arasında 2 tl, 20-40 arasında 3 tl ,
40-100 arasında 4 tl ve 100 den fazla saat için 5 tl saat ücreti ödemektedir."""

mesai=int(input("Geçtiğimiz ay kaç saat mesai yaptınız? :"))
if 0<mesai<10:
print("1")
elif 20>mesai>10:
print("2")
elif 40>mesai>20:
print("3")
elif 100>mesai>40:
print("4")
elif mesai>100:
print(5)
else:
print("mesai yapmamış.")

#ekok bulma pratik yol:
a=int(input("a sayısını giriniz :"))
b=int(input("b sayısını giriniz :"))
if a > b:
if a % b == 0:
print("ekok = ", a)
elif a % b != 0:
print("ekok = ", a * b)
elif b > a:
if b % a == 0:
print("ekok = ", b)
elif b % a != 0:
print("ekok = ", a * b)

#ebob bulma:
def obeb(sayi1, sayi2):
for i in range(int((sayi1 + sayi2) / 2), 0, -1):
if sayi1 % i == 0 and sayi2 % i == 0:
break
return i


print(obeb(36, 78))

#bir dizideki elemanların karesini al sonra bunları ortalamasını al ve kökünü al.
import math
dizi=[3,5,-7,8,4]
yd=[]
for i in (dizi):
yd.append(int(math.pow(i, 2)))
print(yd)
ort=(yd[0]+yd[1]+yd[2]+yd[3]+yd[4])/len(yd)
print(math.sqrt(ort))

#sigmoid fonksiyonu : # f(x) = 1 / (1+e-x )
import math
x=int(input("bir sayı giriniz :"))
def f(x):
return 1/((1+math.e)-x)
print(f(x))

#ramanujan sayılar :
import math
a=int(input("bir sayı giriniz :"))
b=int(input("bir sayı giriniz :"))
c=int(input("bir sayı giriniz :"))
d=int(input("bir sayı giriniz :"))
print(math.pow(a,3)+math.pow(b,3)+math.pow(c,3)+math.pow(d,3))

#Binary (1 ve 0 lardan oluşan) bir sayı alıp bunu 10’luk sayı tabanında bir sayıya çeviren programı yazınız.(1000 son.)

#Öncelikle dışarıdan hesaplamak istediğimiz sayıyı giriyoruz.
sayi = int(input("Bir sayı giriniz: "))
#Ardından bin,oct ve hex kodlarımızla kolaylıkla sayımızı 2'lik, 8'lik ve 16'lık tabanlara çevirebiliyoruz.
print(sayi,"sayısının 2'lik, 8'lik ve 16'lık tabana çevrilmiş halleri:")
print("2'lik tabanda:",bin(sayi))
print("8'lik tabanda:",oct(sayi))
print("16'lık tabanda:",hex(sayi))

#mersenne sayılar (2n+1) kuralına göre olan seri :
x=int(input("sayı :"))
s=0
while s<20:
s+=1
x=2*x+1
mersenne = lambda x: 2 * x + 1
a = mersenne(x)
print(a)

#tek bir sayının asal olup olmaması :
bolen_sayac=0
sayi=int(input("asallık durumu merak edlien sayıyı giriniz :"))
for i in range(2,sayi):
if sayi%i==0:
bolen_sayac+=1
if sayi%i!=0:
print("asal sayı.")

#0-100 arasında asal sayılar :
bolen_sayac=0
for j in range(2,100):
bolen_sayac=0
for i in range(2,j):
if j%i==0:
bolen_sayac+=1
if bolen_sayac==0:
print(j)

#ekok bulma algoritması:
def ekok(a,b):
i = 2 #ekok bulurken önce 2'ye bölerek başlarız
ekok = 1 #ekok bulurken çarpma işlemi ile ilerleyeceğimiz için 1 sayısı ile başladım
while True:
if (a % i == 0 and b % i == 0): #a ve b i'ye tam bölünürse
ekok *= i
a //= i #i'ye bölümündeki tam kısım
b //= i #i'ye bölümündeki tam kısım
elif (a % i == 0 and b % i != 0):
ekok *= i
a //= i
elif (a % i != 0 and b % i == 0):
ekok *= i
b //= i
else:
i += 1
if (a == 1 and b == 1):
break
return ekok
while True:
a = input('Ekok için gerekli 1.sayıyı giriniz, çıkmak için q\'ya basınız:\n')
if (a == "q"):
print("Program sonlandırılıyor...")
break
b = input('Ekok için gerekli 2.sayıyı giriniz, çıkmak için q\'ya basınız:\n')
if (b == "q"):
print("Program sonlandırılıyor...")
break
a = int(a)
b = int(b)
print("{} ve {} sayılarının ekokları {} sayısıdır.".format(a,b,ekok(a,b)))

#Sayısal loto için, 1 - 49 dahil sayıları arasından rastgele 6 tane sayı çeken programı yazınız.
dizi=[]
import random
for i in range(6):
a=random.randint(1,50)
dizi.append(a)
print(dizi)

#asal sayılar :
dizi=[]
for i in range(1,100):
for b in range(2,i):
if i%b==0:
break
else:
print(i)
dizi.append(i)
print(dizi)

#faktöriyelin fonksiyonla hesaplanması.
def f(n):
a=1
sonuc=1
while a<=n:
sonuc*=a
a+=1
return sonuc
n=int(input("n sayısınız giriniz :"))
print(f(n))
#diğer yol recursive fonk ile.
def facto(n):
if n==0:
return 1
return n*facto(n-1)
print(facto(5))

#fibonaccinin recursive fonk ile yapılması.
def fibo(n):
if n==0: return 0
if n==1:return 1
return fibo(n-1)+fibo(n-2)
print(fibo(8))