Chodzi o tak zwane Coding Challenge. Co polecacie?
Oczywiście jest Google i wiele takich stron widziałem. Sprawdziłem też co jest polecane np.:
https://medium.com/coderbyte/the-10-best-coding-challenge-websites-for-2018-12b57645b654
https://levelup.gitconnected.com/top-coding-challenge-websites-of-2018-72d5a9dec6fd
Wybrałem sobie na początek coderbyte. Sprawdziłem też kilka innych ale omówię o co mi chodzi na tym przykładzie bo tu najwięcej spędziłem czasu. Jako język wybrałem C#. Ogólnie mówiąc nie byłem zadowolony.
- Brak IntelliSense. Nie zrobisz średnika – błąd a dowiesz się po kliknięciu run. Nie pamiętasz kolejności argumentów musisz szukać gdzieś w Google. Praca prawie jak na kartce.
- Ocena rozwiązania.
Scores – suma pkt. Za czas napisania zadania i prawidłowo wykonane przypadki testowe
Time – czas napisania zadania
Lines of Code – ilość linii kodu
Naprawdę czas napisania zadania i ilość linii kodu są takie ważne? Oczekiwał bym raczej ilości zajętej pamięci, czas procesora potrzebny na wykonanie zadania, oceny złożoności (ktoś mógł potrzebować dwóch przebiegów pętli inny był sprytniejszy i raz mu wystarczył). - Jakość podpowiedzi. Np. w zadaniu polegającym na zamianie pierwszej litery na dużą w podanych słowach zaproponowano by poszukać czy dany język nie ma takiej funkcji. Oczekiwał bym informacji jak podejść do tematu a nie rady by użyć gotowca.
- Zadanie polegające na znalezieniu najdłuższego słowa w stringu. Nie zaliczyłem wszystkich przypadków testowych bo raz najdłuższym słowem było coś w stylu „123123” czy to jest słowo? Można było podać co autor miał na myśli pisząc „word”.
- Przykładowe „top solution”. Kiepskie. Losowe czy kto pierwszy? W przykładzie opisanym powyżej użyto przy sprawdzaniu coś w stylu IsLetterOrDigit. Zaproponowane przykłady testowe przeszły ale czy słowem jest „counter-clockwise” lub „I'm”? Inny przykład to wspominana już zamiana pierwszej litery:
str2 += (char.ToUpper(word[0]) + word.Substring(1) + " ");
I tak w pętli .Czy faktycznie najlepsze jest sklejanie stringów? Można by podpowiedzieć użycie stringbuildera. Po co spacja za ostatnim wyrazem? Może jakoś bardziej elegancko. Trzecie zadanie które zobaczyłem. Zamiana litery na kolejną w alfabecie. Sprytnie, zamiana na char i + 1. Co się jednak powinno stać jak podamy „z” czy na pewno „{”?