Strona z zadaniami z programowania

W tym miejscu zadajemy pytania na temat języka C#, dzielimy się swoją wiedzą, udzielamy wsparcia, rozwiązujemy problemy programistyczne.
Awatar użytkownika
dambo
Expert
Expert
Posty: 621
Rejestracja: czwartek 17 mar 2016, 17:12

Strona z zadaniami z programowania

Postautor: dambo » środa 02 sie 2017, 10:44

Witam - natrafiłem ostatnio na stronkę: https://codefights.com - jest to zbiór różnych problemików programistycznych do okodzenia w wybranym języku (u mnie np c#, ale jest też python, cpp, java, js itp). Przykładowy screen z zadaniem:
1.png


Może ktoś też chce się pobawić w to? Zachęcam! :p
Oczywiście takich stronek jest mnóstwo - np codehunt (tylkoC#) itp

Edit: moje rozwiązanie przykładu z obrazka:

Kod: Zaznacz cały

// funkcja obracajaca:
// https://stackoverflow.com/questions/228038/best-way-to-reverse-a-string
string Reverse(string text)
{
   if (text == null) return null;

   // this was posted by petebob as well
   char[] array = text.ToCharArray();
   Array.Reverse(array);
   return new String(array);
}

// funkcja zwraca pozycje po swoim przejezdzie
int nawias_obroc(string napis_in, int pozycja, ref string string_out)
{
    string temp = "";
    int i = 0;
    for( i = pozycja; i < napis_in.Length;)
    {
        // poczatek kolejnego nawiasu
        if( napis_in[i] == '(' )
        {
            string x = "";
            i = nawias_obroc( napis_in, i + 1, ref x);
            temp += x;
            continue;
        }
        else
        {
            // koniec nawiasu - zakonczenie algorytmu - pozwracanie wartosci
            if(napis_in[i] == ')')
            {
                temp = Reverse(temp);
                string_out = temp;
                return i + 1;
            }
            else // normalne kopiowanie znaczkow
            {
                temp += napis_in[i];
            }
        }
        i++;
    }
    temp = Reverse(temp);
    string_out = temp;
    return i;
}

string reverseParentheses(string s)
{
    string napis = "";
   
    int i = 0;
    for( i = 0; i < s.Length;)
    {
        // poczatek kolejnego nawiasu - wywolujemy nasza rekurencje
        if( s[i] == '(' )
        {
            string x = "";
            i = nawias_obroc( s, i + 1,ref x);
            napis += x;
            continue;
        }
        else
        {
            // normalne kopiowanie po literce - tutaj nie dajemy
            // przypadku z zamknietym nawiasem - jest to obsluzone w funkcji nawias_obroc
            napis += s[i];
        }
        i++;
    }
   
    return napis;
}

Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Zapraszam na mojego pseudobloga z projektami itp: http://projektydmb.blogspot.com/

Wróć do „Pisanie programów w C#”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości