Untitled

 avatar
unknown
csharp
15 days ago
1.6 kB
3
Indexable
string ObliczKorki(InputRecord input)
{
    var pokoje = input.konfiguracjaPokoi;
    var kroki = input.zaplanowaneKroki;    
    var pokojeDocelowe = input.pokojeDocelowe;
    var maxNumberKroku = kroki.Length;
    var liczbaDzieci = input.liczbaDzieci;
    var pokojeDzieci = input.pokojeStartoweDzieci; 
    int[] pokojePetli = new int[pokojeDzieci.Length]; 
    pokojeDzieci.CopyTo(pokojePetli, 0);
    var numerKroku = 0;
    var calkowitaIloscKrokow = 1;
    var iloscSukcesow = 0;
    var endTime = DateTime.Now.AddMinutes(60);
    

    while (true)
    {
        if (numerKroku == maxNumberKroku)
        {
            numerKroku = 0;
            if (pokojeDzieci.OrderBy(x=>x).SequenceEqual(pokojePetli.OrderBy(x=>x)))
            {
                return "NIE";
            }else if (DateTime.Now >= endTime)
            {
                return "TIMEOUT";
            }
            else
            {
                pokojeDzieci.CopyTo(pokojePetli,0);
            }
        }

        for (int dziecko = 0; dziecko < input.liczbaDzieci; dziecko++)
        {
            var pokojZajmowanyPrzezDziecko = pokojeDzieci[dziecko];
            pokojeDzieci[dziecko] = pokoje[pokojZajmowanyPrzezDziecko, kroki[numerKroku]];
            iloscSukcesow += pokojeDocelowe.Contains(pokojeDzieci[dziecko]) ? 1 : 0;
           
        }

        if (iloscSukcesow == liczbaDzieci)
            break;

        calkowitaIloscKrokow++;
        numerKroku++;
        iloscSukcesow = 0;
    }

  
    return calkowitaIloscKrokow.ToString();
    
}
Leave a Comment