Arkadaşlar harika bir algoritma sorusu soracağım. Şu üzerinde çalıştığım bir android projesi için takıldığım bir algoritma var. Olay şu:
Seçim kutularından (Spinner olarak bilinir) saat ve dakika seçiyoruz. Önce 1.saati seçiyoruz. Bunun için Hours dizimiz (0-23)'ten oluşuyor. Daha sonra 1.dakikayı seçiyoruz. Bunun için de tahmin edebileceğiniz gibi Minutes dizimiz (0-59)'dan oluşuyor. Şimdi gelelim eğlenceli kısma. Diğer saat ve dakika seçimi bir öncekinden 4 saat uzaklıkta olmak zorunda. Ve bu koşula göre Hours ve Minutes dizilerini dolduracak algroitmaya ihtiyacım var. Örnek verecek olursak;
- 1.saat : 1.dakika = 15 : 39 olsun diyelim.
Bu durumda 2. saat için Hours dizisi (19-20-21-22-23-00-01-02-03-04-05-06-07-08-09-10-11)'den oluşacak. 2.dakika için ise durum saate göre değişiyor. Mesela 2.saati 19 seçersek 2.dakika için Minutes dizisi (39-40-41-42-...-59)'dan oluşacak. Çünkü (15:39 + 4 saat) = 19:39 oluyor ve daha öncesi seçilemez. Veya 2.saati 11 seçersek 2.dakika için Minutes dizisi (00-01-02-03-04-...-39)'dan oluşacak. Çünkü (15:39 - 4 saat) = 11:39 oluyor ve daha sonrası seçilemez.
İşte bu ikinci saat seçimini yapabildim yani durumlara göre dizileri doldurabiliyorum. Ancak üçüncü saat seçimi de yapmak gerektiğinde, dizileri doldurmak için gereken algoritmayı yazamadım. Yine örnek verecek olursak;
- 1.saat : 1.dakika = 01 : 53 olsun diyelim,
- 2.saat : 2.dakika = 14 : 25 olsun diyelim.
Bu durumda 3.saat için Hours dizisi (18-19-20-21)'den oluşmalı. Çünkü en son ki seçim olan 14'ten 4 saat sonra 18 oluyor ve ilk seçim olan 01'den 4 saat önce yani 21'e kadar olmalı. 3.dakika için de yine farklı durumlar var. Mesela 3.saat 18 seçilmiş ise 3.dakika için Minutes dizisi (25-26-27-28-...-59)'dan oluşmalı. Eğer 3.saat 21 seçilmiş ise 3.dakika için Minutes dizisi (00-01-02-03-04-05-...53)'den oluşmalı. Var mı algoritma kodunu çıkarabilecek ? Anlamadığınız yer olursa sorabilirsiniz. Görelim şeklinizi