static void KarincaSabitDegerDizi() { Karinca[] karincalarDizi = new Karinca[5]; //karıncaları tutmak için dizi oluştur for (int i = 0; i < 5; i++) //karıncaları oluştur ve diziye at { karincalarDizi[i] = new Karinca(String.Format("Karinca {0}", i + 1)); } cukurDerinlikleri = new[] { 3, 2, 4 }; cukurlar = new Stack <Karinca> [3]; for (int i = 0; i < 3; i++) //çukurları oluştur { cukurlar[i] = new Stack <Karinca>(cukurDerinlikleri[i]); } int siradakiKarinca = 0; bool stop = false; for (int i = 0; i < cukurlar.Length; i++) //çukurları döngüye al { while (cukurlar[i].Count != cukurDerinlikleri[i] && !stop) //çukur dolana kadar ve stop sinyali gelmediği sürece döngü devam eder { if (siradakiKarinca >= karincalarDizi.Length) //çukurlara düşmeyen karınca kalmadıysa { stop = true; //durdurulcak olarak işaretle for (int j = 0; j < i; j++) //kendisinden önceki çukurlara bak (en uzaktan en yakına) { if (cukurlar[j].Count != 0) //çukur boş değilse { cukurlar[i].Push(cukurlar[j].Pop()); //önceki çukurdan çıkart şu anki çukura at stop = false; //karınca eklenebildiği için durdurmayı iptal et break; //for döngüsünden çık } } } else //eğer çukura düşmemiş karınca varsa { cukurlar[i].Push(karincalarDizi[siradakiKarinca]); //en öndeki karıncayı çukura düşür siradakiKarinca++; //sıradakı karıncaya geç } } stop = false; } for (int i = 0; i < cukurlar.Length; i++) { while (cukurlar[i].Count > 0) { cukurlar[i].Pop(); } } }
static void KarincaSabitDegerDizi() { Karinca[] karincalarDizi = new Karinca[5]; //karıncaları tutmak için dizi oluştur for (int i = 0; i < 5; i++) //karıncaları oluştur ve diziye at { karincalarDizi[i] = new Karinca(String.Format("Karinca {0}", i + 1)); } cukurDerinlikleri = new[] { 3, 2, 4 }; cukurlar = new Stack<Karinca>[3]; for (int i = 0; i < 3; i++) //çukurları oluştur cukurlar[i] = new Stack<Karinca>(cukurDerinlikleri[i]); int siradakiKarinca = 0; bool stop = false; for (int i = 0; i < cukurlar.Length; i++) //çukurları döngüye al { while (cukurlar[i].Count != cukurDerinlikleri[i] && !stop) //çukur dolana kadar ve stop sinyali gelmediği sürece döngü devam eder { if (siradakiKarinca >= karincalarDizi.Length) //çukurlara düşmeyen karınca kalmadıysa { stop = true; //durdurulcak olarak işaretle for (int j = 0; j < i; j++) //kendisinden önceki çukurlara bak (en uzaktan en yakına) { if (cukurlar[j].Count != 0) //çukur boş değilse { cukurlar[i].Push(cukurlar[j].Pop()); //önceki çukurdan çıkart şu anki çukura at stop = false; //karınca eklenebildiği için durdurmayı iptal et break; //for döngüsünden çık } } } else //eğer çukura düşmemiş karınca varsa { cukurlar[i].Push(karincalarDizi[siradakiKarinca]); //en öndeki karıncayı çukura düşür siradakiKarinca++; //sıradakı karıncaya geç } } stop = false; } for (int i = 0; i < cukurlar.Length; i++) { while (cukurlar[i].Count > 0) cukurlar[i].Pop(); } }