Algoritma ve Programlama Dünyası — Uygulama 9 (Sayısal Loto)

Merhaba sevgili okurlar! Serimizin önceki bölümünde palindrome kelimeleri Java dilini kullanarak nasıl kontrol edeceğimizi öğrenmiştik. Bugün ise sizlerle birlikte Sayısal Loto için küçük çaplı bir sayı üreteci yapacağız. Bu bölümde, Python dilini kullanacağız. Hazırsanız, başlayalım!

Oyunun Amacı

Sayısal Loto, çeşitli ülkelerde popüler olan bir şans oyunudur. Oyunda, belirli bir aralıktaki sayılardan belirli bir miktarını doğru tahmin etmek gerekiyor. Bizim amacımız ise Python dilini kullanarak tekrarlamadan 6 adet sayı üreten bir Sayısal Loto uygulaması yapmak.

Photo by Erik Mclean on Unsplash

Algoritmanın Çalışma Prensibi

Algoritma, temel olarak iki adet döngü ile çalışır. İlk döngü, rasgele bir sayı üretir ve bu sayı, sayıların bulunduğu diziye atanır. İkinci döngü ise, bu sayının daha önce dizide var olup olmadığını kontrol eder. Eğer sayı dizi içinde yoksa, bu sayı diziye eklenir. Eğer sayı dizi içinde varsa, yeni bir sayı üretilir ve bu işlem sayı dizi içinde yok olana kadar tekrar edilir.

Python’da Sayısal Loto Uygulaması

Python dilini kullanarak tekrarsız 6 adet sayı üreten bir Sayısal Loto uygulaması yapalım. İşte kodumuz:

import random

numbers = []
while len(numbers) < 6:
number = random.randint(1, 49)
if number not in numbers:
numbers.append(number)

print(sorted(numbers))

Bu kodda, önce numbers adında boş bir liste oluşturduk. Daha sonra, while döngüsü içinde, 6 adet sayı elde edene kadar rasgele sayı üretiyoruz. Eğer üretilen sayı numbers listesinde yoksa, bu sayıyı listeye ekliyoruz. Son olarak, üretilen sayıları küçükten büyüğe sıralayarak ekrana yazdırıyoruz.

Program çıktı örnekleri:

>> [10, 12, 13, 23, 41, 47]
>> [6, 12, 16, 17, 19, 21]
>> [8, 14, 18, 19, 33, 37]

Algoritmanın Zaman ve Hafıza Karmaşıklığı

Bu algoritmanın zaman karmaşıklığı, en kötü durumda O(n²) ve ortalama durumda O(n log n) olacaktır. Çünkü her bir yeni sayının listeye eklenmeden önce listeye ait olup olmadığını kontrol etmek için tüm liste taranmaktadır.

Hafıza karmaşıklığı ise O(n)’dir. Çünkü her bir yeni sayı listeye eklenirken, hafızada yeni bir yer ayrılıyor. Bu durumda n, listemizdeki öğe sayısına denk gelmektedir.

Sonuç

Bu yazıda, Sayısal Loto için küçük çaplı bir sayı üreteci oluşturmanın temellerini öğrendik. Python kullanarak tekrarlamadan 6 adet sayı üreten bir programı nasıl oluşturacağımızı gördük. Bu örnek, tekrar etmeyen sayıların nasıl üretilebileceği ve bir dizi içerisinde nasıl saklanacağı konularında da bize yol göstermiştir.

Bu yazıyla birlikte bu seriyi sonlandırıyoruz. Algoritma ve Programlama Dünyası serisi adı altında, Üniversitede alabileceğiniz programlamaya giriş derslerinde işleyebileceğiniz hemen hemen her konuya baktık. Umarım bu seriden keyif almışsınızdır. Bundan sonraki yazılarda mutlaka yeni projeler ve uygulamalar yapacağız ancak bunlar muhtemelen herhangi bir yazı dizisinde yer almayacak. Kendinize iyi bakın, happy coding!

Eğer bu yazıyı beğendiyseniz aşağıdaki alkışa istediğiniz kadar tıklayarak yazılarıma destek olabilirsiniz :)

Herhangi bir sorunuz olursa veya benimle iletişim kurmak isterseniz, tüm sosyal medya hesaplarım aşağıdaki linkte yer alıyor.

Turhan Can Kargin | Home

Ayrıca diğer blog yazılarımı aşağıda yer alan websitem üzerinden takip edebilirsiniz.

Turhan Can Kargın

Bir sonraki yazıda görüşmek üzere!