Bilmece Bildirmece (4)

Bu başlık kilitlidir. Yeni mesajlar gönderilemez veya mevcut mesajlar düzenlenemez.
hasanyasin
25-03-2004, 21:16   |  #1  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
1,100 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

Bilmecelerimize devam edelim bakalım; her ne kadar ilgi görmese de... [V]

4.Bilmecemizde de bizden istenen, verilen N tane elemanın, dizilebileceği tüm kombinasyonların çıktısını veren bir program yazmak. Yani mesela 3 eleman verilsin ve elemanlarımız a, b ve c olsun. Programımız şöyle bir çıktı verecek:

abc
acb
bac
bca
cab
cba

Sıra farklı olabilir; fakat bu 6 kombinasyonun çıktıda yer alması gerekiyor. Bunu 3 eleman için değil, N tane eleman için yapacağız, unutmayın... Gülümseme

ReaL_isT
26-03-2004, 14:44   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
457 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

Abi sen ilgi görmediğine aldırma dewam et bilmecelerine.Ben daha yeni gördüm bu bilmecelerini hepsini yapmaya calışacağım ama tek bildiğim programlama dili Turbo Pascal :( Turbo pascalda yapsam kabul edersin dimi?

hasanyasin
26-03-2004, 15:32   |  #3  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
1,100 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

Dil mesele değil; kod yazmasanız da olur. Burada yapmak istediğim, yeni başlayan arkadaşlara programlama mantığı, basit algoritmalar üretimi, performans değerlendirmesi yapabilme gibi konularda kendilerini geliştirebilmeleri adına bir yöntem ortaya koyabilmek. Hiçbir bilmece henüz istediğim şekilde ilerleyemedi; ama olsun, ben sormaya devam edeceğim. İstediğim bu bilmecelere çözüm olan bir cevap verilmesi değil aslında; bu bilmeceler üstünde hep beraber fikir geliştirebilmek, farklı yöntemler ortaya çıkarabilmek. 1,2,3 diye gidiyordum, bir arkadaşın isteği üzerine bir de özel sorulara başladım. Beklediğim ilgi ortaya çıkmış olmasa da, eninde sonunda bu bilmecelerin birilerine yarar sağlayacağına inanıyorum...

small_ticket
26-03-2004, 18:09   |  #4  
Yıllanmış Üye
Teşekkür Sayısı: 0
167 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

hasanyasin emin ol bunlar işimize yarayacak en azından ben kendi açımdan konuşuyorum ve bu senin soruna da kesinlikle kafa yoracağımdan emin olabilirsin ama şu son zamanlarda sınavlardan foruma bile doğru düzgün bakamıorum en geç pazar akşamı buraya en azından bir fikir atıcam ortaya hele yarın şu fizik sınavı bir geçsin :)

Janberka
26-03-2004, 19:42   |  #5  
Yeni Üye
Teşekkür Sayısı: 0
45 mesaj
Kayıt Tarihi:Kayıt: Mar 2004

Arkadaşlar sorunlarınızı anlatacağınıza bir cevap vermeye çalışın bence hasanyasin'in avutulmaya ihtiyacı yok

hasanyasin
26-03-2004, 19:46   |  #6  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
1,100 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

Üç kişi namaza durmuş. Hemen sonra biri gelmiş selam vermiş. Namazdakilerden biri de selama karşılık vermiş. Namazdakilerden diğeri, "Namazda konuşulmaz, namazın bozuldu!" demiş. Bunun üzerine namaz kılmakta olan üçüncü kişi de: "Hadi o konuştu, namazı bozuldu; sen neden konuştun?" demiş... Gülümseme

Eh, ne diyeyim... Ben sonraki sorularımı hazırladım, bunlara cevap gelsin hemen yazacağım...

small_ticket
29-03-2004, 08:18   |  #7  
Yıllanmış Üye
Teşekkür Sayısı: 0
167 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

n tane elemandan oluşabilecekkombinasyon sayısını zaten bulabiliris basit bir for döngüsüyle daha sonra
n elemanlı dizimizi random olarak dizdiririz sonra her seferinde öncekilerle karşılaştırılmak şartıyla yeni diziler oluştururuz. daha önce bulduğumuz kombinasyon sayısında da durdururuz!!!
not:random ı burda kullanıp kullanamayacağımızı bilmiyorum ama kullanabilirsek bu yöntem işe yarayabilir gibime geldi.

hasanyasin
29-03-2004, 10:56   |  #8  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
1,100 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

Neden rastgele denemeler yapıyoruz ki small_ticket? Bir düşünelim, diyelim ki 5 tane elemanımız var. Kaç kombinasyon oluşur? 5! [5 faktöriyel] değil mi? Yani 120 farklı kombinasyonumuz var. Pekala, bunu rastgele elemanlar deneyerek bulmaya çalışırsak; o zaman 120.elemanın bulunması şansı 120'de bir olacak ve bunun doğru olup olmadığını görebilmek için, önceki 119 elemanla karşılaştırmamız gerekecek. Sonra bir de ne görelim efendim; 113.elemanın aynısıymış; haydi baştan... Gülümseme

Haydi 5 elemanda bulunur; peki 10 eleman olsa ne olacak? Malum, 10 elemanla oluşacak kombinasyon sayısı: 3.628.800... Bilmem anlatabildim mi..?

Amacımız "zeki" bir algoritma oluşturmak... Bunun için, kendi yöntemimizi bilgisayarın çalışma yapısına uyarlamamız gerekiyor. Siz kağıt üzerinde kombinasyonları nasıl çıkarırsınız bir düşünün önce. Önce elemanları sıralarız; sonra bu elemanları teker teker yer değiştiririz. Mesela ben sondan başlarım bu işi elle yaparken. abc, acb gibi. Yani 1.eleman sabitken, son iki elemanı yer değiştirdim. 1.eleman oradayken oluşabilecek olasılıkları denemiş oldum böylece. Ondan sonra 1.elemanı değiştirip b yaparım ve bac, bca gibi iki kombinasyon daha elde ederim. Sonra da 1.elemanı tekrar değiştirir, cab ve cba yaparım...

Önce bunu N eleman için değil, 3 eleman için çözmeyi deneyebilirsiniz. Böylece karmaşıklıkla uğraşmamış olursunuz. Sonra 4 eleman için, sonra 5 eleman için çözersiniz. Sonra da bunlara dikkatle bakarak olayın doğasının farkına varır ve N eleman için nasıl çözebileceğinizi düşünürsünüz...

ReaL_isT
29-03-2004, 14:53   |  #9  
Yıllanmış Üye
Teşekkür Sayısı: 0
457 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

small_ticket ın dediği gibi random sayılarla oluyo. bilgisayarın üreteceği random sayıları kontrollü bi döngü içersinde kullanmayı başarırsak tabi...gerci bunu başarsak bile zekice bi algoritma yerine,sadece bilgisayarın hızlı kontrol ve sonuc mekanizmasını kullanarak bişiler yapmış oluruz onun için bu ramdom olayı bize ters:)
Hasan Yasinin dediği gibi önce kağıt üzerinde 3 sonra 4 sonrada 5 tane eleman için çözdüm ama N eleman için henüz bi fikrim yok (Yeniyiz daha bu işlerde)

small_ticket
31-03-2004, 07:11   |  #10  
Yıllanmış Üye
Teşekkür Sayısı: 0
167 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

n elemanlı bir dizide n. eleman 1. elean oluncaya kadar önündeki elemanla yer değiştirir (yane mesela 5 elemanlı birdiziyse 5. eleman ilk önce 4. elemanla daha sonra 3. elemanla daha sonra 2. elemanla ve en sonda 1. elemanla yer değiştirir) ve bu döngü (n-1) defa tekrarlandırılır.
bu olur mu peki?

hasanyasin
31-03-2004, 21:26   |  #11  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
1,100 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

Olmuyor, olmuyor, olmuyor... Gülümseme Neden beyaz bir kağıt üzerinde, dikkatli bir iki alıştırma yapmaktan bu kadar uzağız?

hasanyasin
31-03-2004, 22:21   |  #12  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
1,100 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

Bir ipucu vereyim diye düşündüm; sanırım iyi olacak...

N tane elemanımız var elimizde. Bunlarla, N elemanlı kombinasyonlar oluşturmamız isteniyor. Bunu düşünmeye çok farklı şekillerde başlayabiliriz. Ben annemin yaptığı güzel patates kızartmasını yerken, şöyle düşündüm: Her eleman için bir bilye ve her bilye için bir kutumuz olsun diyelim ki. N tane kutumuz var ve bizim yapacağımız şey, elimizdeki bilyeleri bu kutulara yerleştirmek. Olası tüm farklı kombinasyonları ortaya çıkarmak...

Ben fark ettiğim ilk altın kuralı paylaşayım sizinle, gerisini beklemeye devam edeyim: Topları N! [N faktöriyel] farklı şekilde dizebiliriz; altın kural şu: Her top, her kutuda (n-1)! defa bulunacak...

Janberka
01-04-2004, 18:40   |  #13  
Yeni Üye
Teşekkür Sayısı: 0
45 mesaj
Kayıt Tarihi:Kayıt: Mar 2004

akşama bulacam hasan abi :D

delibekir
02-04-2004, 15:46   |  #14  
Taze Üye
Teşekkür Sayısı: 0
19 mesaj
Kayıt Tarihi:Kayıt: Mar 2004

hehe!! basit bi öss sorusu :P

hasanyasin
06-04-2004, 01:14   |  #15  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
1,100 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

Akşama bulanlar da oldu, öss sorularıyla karıştıranlar da; ama bir türlü cevap gelmedi... Gülümseme Ne olacak Türkiye'de programcılık öğrenmek isteyenlerin hali? Nerede devlet, nerede belediye..? Sanırım bir sonraki bilmece için, ya bunun çözümünü vereceğim; ya da birini bitirmeden diğerine başlamama hususundaki kuralı bozacağım...

mmc18
23-04-2004, 16:07   |  #16  
Yeni Üye
Teşekkür Sayısı: 0
48 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

bu problemle alakalı cok guzel bir algoritma var once ilk elemanı al yaz sonra ikincisi onu bir solun bir sagına sonra ucuncu karakteri al onu olusturdugun ikililerin solunda baslayarak sol orta ve sağa  yerlestir daha sonra ikinici ikili gec boyle devam
a,b,c,d
a
ba ab
ca ac
da ad
ab_icin_(cba bca bac) ba_icin(cab,acb,abc) sonra aynı mantıkla devam

hasanyasin
23-04-2004, 21:24   |  #17  
OP Yıllanmış Üye
Teşekkür Sayısı: 0
1,100 mesaj
Kayıt Tarihi:Kayıt: Oca 2004

Tebrikler mmc18, çözüme giden bir analiz vermişsiniz. İşlemin nasıl yürüyeceği konusu tamam. Biraz daha koda yakın bir algoritmayla tatmin olacağım sonunda sanırım... Gülümseme

proman
10-06-2004, 11:47   |  #18  
Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Haz 2004

Merhaba arkadaslar bu tur problemler klasik olasilik ve istatistik problemleri
bu problemi dizilerle ve agacla ( tree)yapabiliriz
ben agac yontemini gosteriyorum (algoritma olarak) ama dizilere de uygulanabilir
Agac yontemi
a, b, c, d elemanlari var
1.a ile baslayan ihtimaller
1             a
2      b      c      d
3    c  d   b   d   b  c
4    d  c   d   b   c  b
ilk siraya a elemanini koysak geriye 3 (genel olarak N-1)eleman kaliyor b,c,d
ikinci siraya b koysak c ve d elemanlari kaliyor dolasiyisila abcd ve abdc kombinasyonlari aliriz

2.b ile baslayan ihtimaller
1             b
2      a      c      d
3    c  d   a   d   a  c
4    d  c   d   a   c  a

3.c ile baslayan ihtimaller
1             c
2      a      b      d
3    b  d   a   d   a  b
4    d  b   d   a   b  a

4.d ile baslayan ihtimaller
1             d
2      a      b      c
3    b  c   a   c   a  b
4    c  b   c   d   b  a