Odgadywanie hasła

W tym programie losujemy dowolne słowo z listy dostępnych słów. Użytkownik odgaduje słowo po literze i gra jest kontynuowana do momentu gdy użytkownik odgadnie całe słowo.

Sprawdzenie czy string jest Palindromem

Palindrom to wyrażenie brzmiące tak samo czytane od lewej do prawej strony jak i od prawej do lewej. Obecnie wyrażenia mające te cechę są raczej ciekawostką i używa się ich między innymi do gry słownej.

Zliczanie liter w tekście

Zliczanie liter w tekście.
Jak policzyć wystąpienie każdego znaku w tekście.
o rozwiązanie używa kontenera klucz wartość (słownik).

Klikacz klawiszy

Jak szybko potrafisz naciskać guziki na klawiaturze?
Możemy to teraz sprawdzić pisząc krótki program w C#. Poniższy kod zbiera informację o czasie, który upłynął pomiędzy kolejnymi naciśnięciami na klawiaturze.

Ciąg Fibonacciego

Ciąg Fibonacciego jest ciągiem rekurencyjnym. Każdy wyraz, oprócz dwóch pierwszych jest sumą dwóch poprzednich wyrazów. Pierwszy i drugi element ciągu jest równy 1, a każdy następny otrzymujemy dodając do siebie dwa poprzednie.

Silnia

Najprostsza implementacja silni w C# polega na wykorzystaniu rekurencji, ale w tym wypadku lepszym rozwiązaniem będzie rozwiązanie iteracyjne:

FizzBuzz

Napisz program, który wyświetla liczby od 1 do 100. Dla liczb podzielnych przez 3 niech program wyświetli tekst “Fizz”, dla liczb podzielnych przez 5 niech wyświetli “Buzz”, a dla liczb podzielnych przez 15 niech wyświetli “FizzBuzz”.

Kąt między wskazówkami

Jak znaleźć kąt między wskazówkami godzinowymi i minutowymi zegara w dowolnym momencie? Użytkownik wprowadzi godzinę i minutę, a metoda powinna podać kąt między wskazówką godzinową a minutową w tym podanym czasie.

Poprawność rozmieszczonych nawiasów

Napiszemy funkcję sprawdzającą poprawność rozmieszczonych nawiasów w stringu. Będziemy sprawdzać ciąg pod kątem zrównoważonego nawiasu, czyli czy wszystkie nawiasy otwierające mają nawias zamykający i czy są one logicznie umieszczone w ciągu. Takie sprawdzanie może służyć do sprawdzania plików xml, json itp…

Dependency Inversion Principle – DIP

Moduły wysokopoziomowe nie powinny zależą od modułów niskopoziomowych, obie grupy modułów powinny zależeć od abstrakcji. Abstrakcje nie powinny zależeć od szczegółów rozwiązania, to szczegóły powinny zależeć od abstrakcji.

Interface Segregation Principle – ISP

Teraz omówimy zasadę segregacji interfejsów jest to czwarta zasada SOLID, która opisuje, jak powinniśmy projektować i używać interfejsy w naszych aplikacjach. Zasada ta stanowi, że klienci (klasy) nie powinni być zmuszani do polegania na metodach, których nie używają. Kilka dedykowanych interfejsów jest lepsze niż jeden, który jest zbyt ogólny.

Liskov Substitution Principle – zastosowanie LSP

Przyjrzyjmy się teraz, jak możemy zastosować zasadę LSP w naszej aplikacji myjni samochodowej. Użytkownicy naszej aplikacji, zgłosili nam mały błąd który wprowadziliśmy, gdy modyfikowaliśmy nasz kod wprowadzając wzorzec fabryki DetailsPricingFactory do tworzenia różnych instancji typów mycia, teraz musimy to naprawić.