Locker Puzzle

28 Mart 2011 by B.Selçuk ÖKSÜZ
Leave a reply »
WP Greet Box icon
Merhaba! Selcukoksuz.com adresine hoş geldiniz. Eğer yeni iseniz ve içeriğimizi takip etmek isterseniz RSS Abonesi Olabilirsiniz.
Mailinize onay mesajı gönderilecektir. Cevaplamayı unutmayınız.

Bu hafta karışık bir uygulama örneği ile diziler ile alakalı çalışma yapmış olacağız. Uygulamamızın ingilizce karşılığı . Bir çeşit bulmaca gibi bir şey.

Algoritması şu şekilde; 100 öğrenci ve 100 tane anahtar var. 1. öğrenci gelerek bu anahtarların hepsini açıyor. 2. öğrenci gelerek 2. anahtardan başlayarak tüm anahtarları kapatıyor. 3. öğrenci ve sonraki tüm öğrenciler kaçıncı öğrenciyseler o sayının katlarında ki tüm anahtarları tersine çeviriyorlar(açıksa kapalı-kapalı ise açık). 100 öğrenci de işlemlerini yaptıktan sonra açık kalan anahtarların hangisi olduğunu bulacağız.

Ben bu algoritmayı bir yerden esinlenmeden yazdım. Bu sebeple daha az maliyetli algoritmalar olabilir. Hatta sonuç olarak yanlışta buluyor olabilirim.

Uygulama: Locker Puzzle Bulmacası

Amaç: Peşpeşe gelen sıralamalar mantığı

Dil:

Program: NetBeans

Kodlar:

public class LockerPuzzle {

    public static void main(String[] args)
    {
        int lockers[] = new int[101];
        lockers[1] = 1;//2. Öğrenci 2den sonraki hepsini kapattı ve 1 açık kaldı
        int student,locker, open=0;
        //3. öğrenciden sonra tüm öğrenciler kendi atlarını tersine çeviriyor
        for(student=3; student<=100; student++)
        {
            for(locker = 3; (locker<=100) && (locker%student==0); locker++)
            {
                if(lockers[locker] == 1)
                  lockers[locker]=0;
                else
                    lockers[locker]=1;
            }
        }
        //Hangi locker lar açık
        System.out.println("Açık Sayısı\tKutu Numarası");
        System.out.println("___________\t_____________");
        for(int i=1; i<=100; i++)
        {
            if (lockers[i] == 1)
            {
                    open++;
                    System.out.printf("%2d\t-------\t%2d\n",open,i);
            }
        }
        System.out.println("Açık Kutu Sayısı = "+open+"\nblog.selcukoksuz.com\n");
    }
}

Kodlamada sorunlar varsa bilgilendirirseniz sevinirim. İyi çalışmalar dilerim.

Yazar Hakkında

Bilgisayarla yaşamayı bir tarz olarak benimsemiş, teknoloji ile tamamen içli dışlı bir; web tasarımcı, yazılımcı, donanımcı, blog yazarı ve bilgisayar mühendisidir.

B.Selçuk ÖKSÜZ
B.Selçuk ÖKSÜZ kullanıcısının tüm yazıları.
Advertisement

Bu Yazıyı Beğendiniz Mi?

0

Bir Cevap Yazın

Sizin Yorumunuz Nedir?

%d blogcu bunu beğendi:
Gizlilik Hakları