Delphi Can
Galaksiler arası kodlama mücadelesi - Baskı Önizleme

+- Delphi Can (http://www.delphican.com)
+-- Forum: Forum Hakkında & İnsan Kaynakları (http://www.delphican.com/forumdisplay.php?fid=115)
+--- Forum: Muhabbet Olsun (http://www.delphican.com/forumdisplay.php?fid=60)
+--- Konu Başlığı: Galaksiler arası kodlama mücadelesi (/showthread.php?tid=4163)



Galaksiler arası kodlama mücadelesi - sadettinpolat - 08-11-2019

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. adresinde ilginç bir challenge mevcut. Meraklı arkadaşlar belki uğraşmak ister.


Hikaye

Yıl 2150. Siz Galaxy Wanderer'in kaptanısınız ve zamanınız doluyor. Yakıt depoları düşük ve çaresiz aramanız sizi seyahat ettiğinizden daha uzak gezegenlere götürdü. Şimdi, sadece kodlama becerileriniz sizi kurtarabilir!

Alıntı:Görev
Programlama becerilerinizi test edin! Bir C ++ veya Python kodlama mücadelesinde kendinize meydan okumak isteyin ya da bir C # veya Java kodlama mücadelesinde başkalarına nasıl yığıldığınızı görün, doğru yerdesiniz.

Becerilerinizi geliştirecek özel ödüller kazanma şansı için Intergalactic Coding Challenge'a katılın.


[attachment=801]


Cvp: Galaksiler arası kodlama mücadelesi - sadettinpolat - 08-11-2019

Evde zaman imkanı daha geniş olduğundan soruyu daha açıklayıcı yazma imkanım oldu. 

Galaxy Wanderer adlı bir uzay aracının kaptanısınız. Geminin yakıt (plütonyum) kapasitesi 3 birim. Birbirine bağlı bir gezegenden diğer bir gezegene sıçramak için 1 birim yakıta ihtiyacınız var. (Birbirine bağlı olmayan gezegenler arasında sıçrama yapamıyorsunuz.) Sıçrama yaptığınız bazı gezegenlerde sınırsız plütonyum madeni var. Her defasında depoyu fulleyebilirsiniz.

Gezegen haritası ve bu gezegenlerde plütonyum olup olmadığı size veriliyor ve bu bilgilere göre başlangıç noktasından başlayarak gidebileceğiniz olası bütün gezegenlerin sayısının kaç olduğunu hesap eden bir metod yazmanızı istiyorlar. 


function gezegenSayisiHesapla(T:Array Of Integer; B:Array Of Boolean):Integer
begin
 //çözüm
end; 

N (Gezegen Sayisi) : 1 ile 100.000 arasında olabilir. 
T (Gezegen dizisi) :  0 ile N-1 arasında tam sayıdır.
B (Gezegen plütonyum durumu)  : 0 ile N-1 arasında boolean bir değerdir.


başlangıç noktası ve bağlantı noktaları

T[P] = Q  ve P = Q ise P başlangıç noktasıdır. (1. formül)
T[P] = Q  ve P <> Q ise P ile Q gezegenleri arasında bağlantı vardır. (2. formül)

plütonyum durumu

B[P] = true ise P gezegeninde sınırsız plütonyum vardır
B[P] = false ise P gezegeninde plütonyum yoktur.

Örnek 1 :

T = [9, 1, 4, 9, 0, 4, 8, 1, 0, 7] 
B = [false,true,false,false,false,false,false,true,false,false]

T ve B dizileri metoda parametre olarak verildiğinde sonuç olarak 7 değeri dönmelidir.

Başlangıç noktası T nin 1. elemanının değeri 1 olduğu için 1 nolu gezegendir. T[1] = 1 
B dizisinin 1 ve 7. elemanlarının değeri true olduğu için 1 ve 7 nolu gezegenlerde sınırsız plütonyum madeni vardır. 

1. formülü kullanarak T[1] = 1 olduğu için 1 nolu gezegen başlangıç noktamız oluyor.
2. formülü kullanarak aşağıda ki şekilde gezegenler arasındaki bağlantıları oluşturuyoruz.

B dizisi ile de hangi gezegenlerde plütonyum madeni olduğunu belirliyoruz. 

[attachment=802]

1 nolu gezegenden başlayarak gidebileceğimiz gezegenler 0,1,3,4,7,8 ve 9 nolu gezegenlerdir. Toplam gezegen adeti de 7 dir.

Örnek 2 :

T = [0, 0, 1, 2, 3] 

B = [false,false,false,false,false]

T ve B dizileri metoda parametre olarak verildiğinde sonuç olarak 1 değeri dönmelidir.

Başlangıç noktası 0 nolu gezegendir. 0 nolu gezegende plütonyum madeni olmadığı için bağlantılı gezegene sıçramak için gerekli olan yakıt temin edilememektedir.