Sınırlı Fibonacci Dizileri
-
Bugün bir deney yapacağım. Elimizde bir problem var, bu problemin çözümünü farklı programlama dilleri ile yazmazını rica edeceğim. Python ile yazılmış cevabı var elimde, diğer programlama dilleri ile karşılaştırmak istiyorum. Ayrıca bir yöntem daha varmış anlamadığım, çözen birinin bana anlatmasını rica edeceğim :D
Problem şu şekilde;
1) Elimizde bir çift yavru tavşan var.
2) Tavşanlar üreme çağına bir ayda ulaşıyor.
3) Üreme çağına ulaştıktan sonra her ay çiftleşip bir çift yavru meydana getiriyorlar.
4) Tavşanlar doğduktan belirli bir süre sonra ölüyorlar (Örn. n = 3 ay)
?) m ay sonra kaç adet canlı tavşan olur?Kodlarınızı test edebilesiniz diye m=6, n=4 verileriyle cevap 6 çıkıyor.
Asıl veriler m=92, n=16 olsun. Kağıt kalemle yapamayın yani :D
Bir de ipucu: Ölme durumu olmasa cevap fibonacci sayıları zaten.
Aşağıda test verilerimiz ile çözümü gösteren ÜBER paint şemam var. Mavi halkalar yavru, kırmızı halkalar ergin çiftleri temsil ediyor :D
-
güzel soru bakmaya çalışırım bu akşam ama eksik şeyler var.. mesela tavşanlar üreme çağına 1 ayda ulaşıyor ve ömürleri 3 ay, peki bu süre zarfında 2 ay üreme yetenekleri var demek oluyor.. ayda 1 kere mi ürüyor bunlar? yani bir çiftimiz 2 kere mi yavru doğuracak yoksa ölene kadar 1 kere yavru doğurup ölmeyi mi bekliyorlar.. Burası net değil..
-
yavrulayan çift tekrar tekrar yavrulayabiliyor mu?
//yukarıda sorulmuş :]
-
Açık olmamış kusura bakmayın.
Çiftler erginliğe ulaştıktan sonra ölene kadar her ay bir çift yavru dünyaya getiriyorlar.
Bu arada bir çift derken her zaman bir erkek ve bir dişi tavşandan bahsediyorum.
Bir de şöyle yapalım kodlarınızı test edebilesiniz diye m=6, n=4 verileriyle cevap 6 çıkıyor.
Asıl veriler m=92, n=16 olsun. Kağıt kalemle yapamayın yani :D
Bir de ipucu: Ölme durumu olmasa cevap fibonacci sayıları zaten.
krypt tarafından 16/Ağu/15 21:22 tarihinde düzenlenmiştir -
Programı c# ile yazdım çıktı doğru ise paylaşayım
yanlış
UCANTENEKE tarafından 16/Ağu/15 22:30 tarihinde düzenlenmiştir -
@ucanteneke hocam soruyu iyicine açtım ilk mesajda yeniden bir bak istersen.
-
peki aşağıdaki işlemler doğru mu gidiyor??
1. ayda 1 adet davşan var
2. ayda 1 adet davşan var
3. ayda 2 adet davşan var
4. ayda 3 adet davşan var
5. ayda 5 adet davşan var
6. ayda 8 adet davşan var
7. ayda 13 adet davşan var
8. ayda 21 adet davşan var
9. ayda 34 adet davşan var
10. ayda 55 adet davşan var
11. ayda 89 adet davşan var
12. ayda 144 adet davşan var
13. ayda 233 adet davşan var
14. ayda 377 adet davşan var
15. ayda 610 adet davşan var
16. ayda 987 adet davşan var
17. ayda 1596 adet davşan var
18. ayda 2582 adet davşan var
19. ayda 4177 adet davşan var
20. ayda 6757 adet davşan var
21. ayda 10931 adet davşan var
22. ayda 17683 adet davşan var
23. ayda 28606 adet davşan var
24. ayda 46276 adet davşan var
25. ayda 74861 adet davşan var
26. ayda 121103 adet davşan var
27. ayda 195909 adet davşan var
-
3 ay sonu doğurupmu ölüyorlar doğurmadanmı ölüyorlar :D
-
Doğru hocam @ucanteneke
Çözdüysen kodu paylaşır mısın hocam?
krypt tarafından 16/Ağu/15 23:17 tarihinde düzenlenmiştir -
wert bunu yazdı
3 ay sonu doğurupmu ölüyorlar doğurmadanmı ölüyorlar :D
Mikemmel şemamda görüldüğü üzere son kez doğurup sonra ölüyorlar :D
-
static void Main(string[] args) { int toplam_ay = 92; int omur = 16; int kactane = 0; int[] yas = new int[1]; for (int ay = 1; ay <= toplam_ay; ay++) { for (int j = kactane; j < yas.Length; j++) { if (yas[j] > -1) { if (yas[j] >= 2) { Array.Resize(ref yas, yas.Length + 1); yas[yas.Length - 1] = 0; } if (!(yas[j] < omur)) yas[j] = -1; } } int aq = kactane; kactane = 0; for (int j = aq; j < yas.Length; j++) { if (yas[j] > -1) yas[j]++; else kactane++; } kactane += aq; Console.WriteLine(ay.ToString() + ". ayda " + (yas.Length - kactane) + " adet davşan var"); } }