Kuantum Bilgisayarlar

Günümüz bilgisayarının temel yapı taşı transistörlerdir. Transistörler iki farklı gerilim seviyesinde bulunabilir; bunlardan biri ikili basamaklardan (bitlerden) “0”ı, diğeri ise “l “i temsil eder. Sıfır ve birlerin oluşturduğu bir sıra, çok büyük bir sayıyı temsil edebilir ve bilgisayar içinde bu sayı, bir başka büyük sayıyla toplanabilir, çıkarılabilir, çarpılabilir ve bölünebilir.* Öte yandan bir kuantum bilgisayarının temel yapı taşları süperpozisyon konumunda da bulunabilir.

Diğer bir deyişle, aynı anda hem “0”ı hem de ” l “i temsil edebilirler. Fizikçiler, kuantum bitlerini normal bitlerden ayırt edebilmek için, şizofren
kuantum bitleri (ya da “kubit”) terimini kullanmaktadır.

Tek bir kubit iki durumda (0 ya da 1 ) , iki kubit dört durumda (00, 01 , 10 ya da 11 ), üç kubit sekiz durumda bulunabilir ve bu şekilde devam eder.

Dolayısıyla tek bir kubit üzerinde aynı anda iki farklı işlem, iki kubitle dört farklı işlem, üç kubitle sekiz farklı işlem yapabilirsiniz ve kubit sayısı arttıkça, aynı anda gerçekleştirebileceğiniz işlem sayısı da 2 ‘nin kuvvetleri olarak artar. Bu sizi etkilemediyse, 10 kubitle aynı anda 1024 işlem ve yalnızca 100 kubitle milyarlarca işlem yapabileceğinizi söylemek isterim!

Hiç de şaşırtıcı olmayan bir şekilde kuantum bilgisayarlarının bu potansiyeli karşısında fizikçilerin ağzı sulanmaktadır. Kuantum bilgisayarlarının günümüz bilgisayarlarını bazı hesaplamalarda performans açısından silip geçeceği anlaşılmıştır. Geleneksel bilgisayarlar performans açısından kuantum bilgisayarlarının yanında geri zekalı gibi görünmektedir.

Fakat bir kuantum bilgisayarının çalışması için, dalga süperpozisyonları tek başlarına yeterli değildir. Dalga süperpozisyonlarının ihtiyaç duyduğu bir başka şey de, girişimdir.

Thomas Young tarafından 18. yüzyılda gözlemlenen ışığın girişimi, ışığın bir dalga olduğu konusunda herkesin ikna olmasını sağlayan esas çalışma oldu. 20. yüzyılın başlangıcında, ışığın aynı zamanda bir parçacık akımı olarak da davrandığı ortaya konduğunda ise Young’un çift yarık deneyi yeni ve umulmadık bir önem kazandı. Deney, mikroskobik dünyanın en merkezi özelliğini ortaya çıkarıyordu.

Yorum Durumu: Bir yorum --- Kategori: Bilim, Bilişim --- Etiketler: , , , , , , , ---

Python programlama ile para sorusu

Sorumuz şu: Bir adam elindeki çeki bozdurmak için bankaya gitti. Fakat veznedar bir yanlışlık yaptı ve çekin üzerinde yazılı liralar yerine kuruş ve kuruşlar yerine de lira vererek çeki ödedi. Adam da dikkat etmeden paraları cebine koydu. Eve giderken paranın 5 kuruşunu düşürdü. Bu vesile ile parasını saydı ve cebinde çekin değerinin tam iki katı parası olduğunun farkına vardı. Çekin üzerinde yazılı olan miktar ne kadardı? *

Programımız oldukça basit, lira ve kuruşu 100 lük döngülere sokuyoruz ve formülü deniyoruz.

for lira in range(100):
    for kurus in range(100):
        if lira + kurus / 100 == 0:  continue
        if (kurus + (lira - 5) / 100) / (lira + kurus / 100) == 2:
            print(f"Çekin üzerinde yazan miktar: {lira}.{kurus}")
            break

continue kullanmamızın sebebi sıfıra bölünme hatasından kaçmak içindir.

Bir diğer çözüm de şu olabilir

for lira in  range(0,55):
    for kurus in range(lira+5,105):
            if 2*(float(lira)+float(kurus)/100)==float(kurus)+float(lira-5)/100:
                print(str(lira)+"."+str(kurus)+"₺")
Yorum Durumu: Yorum yok --- Kategori: Bilişim, Zeka Soruları --- Etiketler: , , ---

Python Programlama ile Olasılık Soruları

Sonsuz.us sitesinde bolca olasılık sorusu var, bunların bazılarını python programlama ile çözüp örnekler sunacağım. Böylece random kütüphanesinin kullanımı ve olasılık sorularına uygulanışını görmüş olacağız.

Olasılık sorularında yapmamız gereken olayı doğru bir biçimde kodlayıp defalarca simülasyon tekrarlamamızdır. Yeterli sayıda simülasyon bize yaklaşık sonucu verecektir.

İlk sorumuz yine basit bir olasılık sorusu. Rastgele iki noktasından kırılan bir çubuğun parçalarının üçgen oluşturma olasılığı nedir?

Üçgen olma kuralı bildiğiniz üzere her hangi iki kenarın toplamı diğer kenardan büyük olma zorunluluğu olmasıydı. Programın yapması gerekense defalarca iki rastgele noktadan kırıp oluşan parçaları karşılaştırmak.

import random
ucgen=0
for i in range(10000):
  nokta = [random.random(),random.random()]
  nokta.sort()
  a,b,c = nokta[0],nokta[1]-nokta[0],1-nokta[1]
  if a+b>c and a+c>b and b+c>a:
    ucgen+=1
print(ucgen/10000)
Yorum Durumu: Yorum yok --- Kategori: Bilişim, Zeka Soruları --- Etiketler: , ---

Arkadaş sayılar, Python Programlama

İki sayı birbirinin kendisi hariç bölenleri toplamına eşitse bu sayılara arkadaş sayılar denir. (1 dahil)

En küçük arkadaş sayılar 220 ve 284 tür. Neden? Çünkü 220’nin bölenleri olan 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 ve 110 u topladığımızda 284 elde ederiz. 284’ün bölenlerini topladığımızda ise -evet, doğru tahmin ettiniz- 220 elde ederiz. İşte gerçek arkadaşlık.

Python programlama ile 10.000 e kadar olan arkadaş sayıları bulalım. (Bu sayıyı değiştirebilirsiniz.)

def bolenler(n):
  return sum([i for i in range(1,n//2+1) if n%i==0])

arkadas = dict()
for sayi in range(1,10000):
  bt = bolenler(sayi)
  if sayi==bolenler(bt) and sayi<bt:
    arkadas[sayi]=bt
print(arkadas)
Yorum Durumu: Yorum yok --- Kategori: Bilişim --- Etiketler: , , , ---

En küçük zengin tek sayı, Python programlama

Eğer bir sayının kendisi hariç tam bölenleri toplamı sayıdan büyükse o sayıya zengin sayı diyoruz. Örneğin 12 nin bölenleri 1,2,3,4,6 nın toplamı 16>12 olduğu için zengin sayıdır. En küçük tek zengin sayı nedir?

Basit bir programla bunu bulabiliriz,

def bolenler(n):
  return sum([i for i in range(1,n//2+1) if n%i==0])

sayi = 1
while sayi>bolenler(sayi):
  sayi+=2
print(sayi)
Yorum Durumu: Yorum yok --- Kategori: Bilişim, Zeka Soruları --- Etiketler: , , ---

Palindrom dizi, python programlama çözümü

Uzunluğu 2 veya daha büyük olan ve aynı zamanda tersten ve düzden yazılışları aynı olan karakter dizilerine palindrom denilmektedir. Örneğin “aaa”, “aba”, “cc” birer palindrom iken, “acaba”, “abc”, “a” birer palindrom değildir. Bir karakter dizisinin içerisinden ardışık olarak seçilen herhangi bir parçaya ardışık alt dizi denilmektedir. Örneğin “acaba” dizisi için “aca”, “ab” birer ardışık alt dizi iken, “cb”, “aaa” ardışık alt dizi değildir. 4 karakter uzunluğunda, ardışık alt dizilerinin hiçbiri palindrom olmayan kaç farklı karakter dizisi vardır? [Alfabede 29 karakter vardır]

Sorumuz bu. Elbette çözmek için başka yöntemler var ama estetik bir program parçasını da eklemek istedim.

sonuc = 0
for a in range(29):
    for b in range(29):
        for c in range(29):
            for d in range(29):
                if c != d and b != c and a != b and b != d and a != d:
                    sonuc += 1

print(sonuc)
Yorum Durumu: Yorum yok --- Kategori: Bilişim, Zeka Soruları --- Etiketler: , , ---

Python Programlama ile zeka soruları

Sorumuz şu: Okunuşunda ki harfleri birbirinden farklı en büyük üç haneli sayı nedir?

Elbette bu soruyu elle de çözmek mümkün ama epey deneme yanılma yapmak gerekir. Örneğin yüzbir, okunuşunda harfler farklı, yüzdört yine okunuşunda ki harfleri farklı daha büyük bir sayı.

Gelin bu sorumuzu python ile çözdürelim.

def yaziyap(sayi):
    birler = ["","bir","iki","üç","dört","beş","altı","yedi","sekiz","dokuz"]
    onlar = ["","on","yirmi","otuz","kırk","elli","altmış","yetmiş","seksen","doksan"]
    sayi=str(sayi)
    if sayi[0]=="1":
        return "yüz"+onlar[int(sayi[1])] + birler[int(sayi[2])]
    else:
        return birler[int(sayi[0])]+"yüz" + onlar[int(sayi[1])] + birler[int(sayi[2])]

for n in reversed(range(999)):
    if len(yaziyap(n)) == len(set(yaziyap(n))):
        print(yaziyap(n))
        break

def kısmı bir fonksiyondur, gelen sayının okunuşunu döndürür geriye. Diğer önemli kısım ise gelen string bilginin işlenişidir. if kısmında yaptığımız gelen kelimenin harflerini sayıyoruz, bir de küme yapıp sayıyoruz. Kümelerin şöyle bir güzelliği var ki aynı elemandan birden fazla kabul etmiyor.

Yorum Durumu: Yorum yok --- Kategori: Bilişim, Zeka Soruları --- Etiketler: , , , , ---