FINAŁ. Wszystkie zadania

Zadanie: 1 Etap 1 Kalkulator na stringach Panie w dziale księgowym wciąż liczą za pomocą kartki i ołówka. Jakiś czas temu wprowadzono liczydła jednak nie przyspieszyły one pracy w znaczący sposób. Jaś widząc to poczuł się jak na swoim pierwszym projekcie – kalkulatorze liczb rzymskich realizowanym dla Wespazjana. Tak jak to miał w zwyczaju od razu zabrał się do pracy. Uruchomił skaner. Szybko zintegrował go z OCR’em. Teraz pozostał jedynie do stworzenia program zamieniający ciąg znaków zapisujący operację arytmetyczną na jej wynik.

Opis zadania Stworzenie programu obliczającego wartość działania arytmetycznego podanego na wejściu aplikacji Wejście: Łańcuch znakowy reprezentujący działanie matematyczne z dowolną ilością operacji w dowolnej kolejności. Wynik: Łańcuch znakowy reprezentujący wynik działania podanego na wejściu. Przykład: Input: 2+2*2-6,5 Output: -0,5 Wymagane opcje        

Dodawanie „+” Odejmowanie „-” Mnożenie „*” Dzielenie „/” Potęgi „^” Nawiasy „( )” Ułamki dziesiętne – rozdzielone przecinkiem Liczby ujemne „-”

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Czas Czas na realizację zadania: 60 minut.

Ocenianie Po upływie określonego czasu rozwiązanie będzie sprawdzane przez jury MasterCoder. Uczestnik powinien zadeklarować na jakim poziomie rozwiązał zadanie: 



Poziom 1: o dodawanie, odejmowanie, mnożenie, dzielenie, potęgi o zakres liczb wejściowych w operacjach arytmetycznych Poziom 2: o nawiasy o zakres liczb wejściowych

W zależności od określonego poziomu komisja MC podda rozwiązanie odpowiednim testom (5 testów na każdy poziom):    

Zadeklarowanie rozwiązania na poziomie 1 Zadeklarowanie rozwiązania na poziomie 1+2 Za każdy błędny wynik testu jury MC EXTRA za ponadprzeciętną jakość kodu1

+ 5000 pkt. + 5000 pkt. - 1000 pkt. + 1000 pkt.

Maksymalna ilość punktów do uzyskania w zadaniu: 11000 pkt.

Uwagi 

  

1

Algorytm obliczania wyniku musi zostać zrealizowany samodzielnie – nie dopuszczalne są rozwiązania wykorzystujące standardowe funkcje API lub biblioteki zewnętrzne realizujące w całości zadany problem (parsowanie, analizę leksykalną itp.), np.: dla .NET: (new DataTable()).Compute(„2+2”,””); Wyniki dla testów będą zawierały się w przedziale Algorytm powinien poprawnie działać dla wartości do dwóch miejsc po przecinku Program powinien przewidywać próby niepoprawnych działań -> np.: 10/0

Dobre praktyki programistyczne, znajomość dziedziny tworzenia lex’erów

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 1

Etap 2

Kalkulator na stringach Każdy z uczestników może uzyskać 2000 dodatkowych punktów extra. W tym celu powinien ułożyć własny string testowy i wypróbować go na aplikacjach rywali (według zadeklarowanych poziomów rozwiązań). String zostanie uruchomiony na każdej z aplikacji współuczestników.

Czas Czas na realizację zadania: 15 minut.

Ocenianie Doprowadzenie aplikacji rywala do zwrócenia błędnego wyniku +500 pkt.

Uwagi  

2

Zaproponowane wejście musi spełniać wymogi zadania Zaproponowane wejście musi być prawidłowym działaniem matematycznym2

Microsoft Excel będzie narzędziem sprawdzającym poprawność podanej formuły

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 2 Kodowanie na ekranie Otrzymujesz 8 zadań. Zastanów się nad nimi. Niebawem poprosimy Cię abyś na jednym (wylosowanym) z nich pokazał nam jak pracujesz, jak podchodzisz do rozwiązywania problemów, oraz z jakich technik programistycznych korzystasz. Będziesz mógł kodować, komentować, eksperymentować, tworzyć i refaktoryzować. My patrząc jak pracujesz będziemy zadawali pytania, precyzowali rozwiązania oraz sprawdzali ich elastyczność. Nie musisz dostarczać pełnej implementacji. To co nas interesuje, to: architektura, klasy, interfejsy z ich nazwami, metodami i właściwościami. Struktura wewnętrzna klas nie jest konieczna (aczkolwiek czasem może pozwolić oglądającym coś lepiej zrozumieć). Sama implementacja – choć mile widziana, nie stanowi priorytetu. Natomiast kwestie interfejsu użytkownika czy sposobu przechowywania danych są zupełnie drugorzędne.

Czas Na prezentację własnego rozwiązania przeznaczone jest: 15 minut na osobę.

Ocenianie Zadanie będzie oceniane prze Jury oraz innych uczestników finału. W sumie można zdobyć 7000 punktów:  

Punkty Jury przyznawane za praktyczne podejście do problemu, tworzenie dobrego jakościowo, modyfikowalnego i zgodnego z zasadami obiektowości kodu: do 5000 pkt. Punty przyznawane przez innych uczestników. Każdy z Was może przyznać za prezentację od 0 do 1000 pkt. Oceny najwyższe i najniższe nie będą brane pod uwagę. W sumie od innych uczestników można uzyskać do : 2000 pkt.

Maksymalna ilość punktów do zdobycia za zadanie: 7000 pkt.

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 1 Napisz program, który będzie przyjmował z pliku dowolną dwuwymiarową tablicę znaków, np.: -**##****** ##--## ###### ###### oraz liczbę stopni o jaką należy tą tablicę obrócić (90, 180, 270). Obroty należy wykonywać według wskazówek zegara. Przykładowy wynik programu dla obrotu wyżej przytoczonej tablicy o 90 stopni ###*###** ##-** ##-*# ###*# ###*-

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 2 Napisz program symulujący automat komórkowy „Grę w Życie”. Pole gry, to obszar 20x20 komórek.

Zasady: Gra w Życie symuluje zachowanie populacji komórek, każda komórka może być żywa bądź martwa. Stan komórki określany jest według poniższych zasad:      

gra podzielona jest na tury każda żywa komórka z mniej niż dwoma żywymi sąsiadami w następnej turze umiera z samotności każda żywa komórka z dwoma lub trzema żywymi sąsiadami pozostaje żywa do następnej tury każda żywa komórka z więcej niż trzema sąsiadami w następnej turze umiera z przeludnienia każda martwa komórka z dokładnie trzema żywymi sąsiadami w następnej turze staje się żywą komórką każda komórka, poza znajdującymi się na brzegach planszy, ma ośmiu sąsiadów

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 3 Używając zasad programowania obiektowego S.O.L.I.D. zamodeluj lampę i włącznik. Pamiętaj jednak aby nie skupić się jedynie na diagramach, oczekujemy kodu!

Sugestie:  

włącznik powinien kontrolować lampę, wiele lamp lub być może także coś całkiem innego… jeśli nie znasz zasad S.O.L.I.D. nie przejmuj się i rozwiąż zadanie najlepiej jak potrafisz :)

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 4 Używając zasad programowania obiektowego zamodeluj Samochód. Staraj się używać najlepszych praktyk programistycznych. Pamiętaj aby nie skupić się jedynie na diagramach, oczekujemy kodu!

Sugestie:   

Ciągnik siodłowy DAF 460, osobowy FIAT UNO, czy motocykl SUZUKI GSX należą do grupy pojazdy Inaczej uruchamia się silnik w pojeździe z silnikiem diesla oraz benzynowym Pojazdy służą do przewozu różnych rzeczy/osób

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 5 Napisz program który zasymuluje działanie agencji informacyjnej. Agencja informacyjna zbiera newsy oraz udostępnia je różnym subskrybentom. Wymagania:   

Konieczne jest stworzenie systemu w którym subskrybenci będą natychmiast informowani o wydarzeniach Subskrybent może otrzymać powiadomienie na wiele sposobów, np: mail, sms, etc… Rozwiązanie musi umożliwiać rozszerzanie o nowe typy subskrybentów

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 6 Napisz program który będzie parsował typowy pliki *.INI. Będzie on przekazany do aplikacji jako string. Skup się nad zaprojektowaniem parsera, stwórz optymalną hierarchię klas.

Przykład pliku INI: [Section1] key = value key = value key = value

[Section2] key = value key = value key = value

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 7 Stwórz model systemu który zarządza pacjentami w szpitalu. Zwróć uwagę, że pacjent może mieć przypisanych do siebie lekarzy, być może także wyniki badań bądź zaplanowane zabiegi. Niekiedy będzie on korzystał z hospitalizacji, a innym razem jedynie z wizyt w przyszpitalnej przychodni. Pamiętaj aby nie skupić się jedynie na diagramach, oczekujemy kodu!

Copyright by Cybercom Poland

www.mastercoder.pl

FINAŁ. Wszystkie zadania

Zadanie 8 Zaprojektuj hierarchię klas i interfejsów implementujących logikę biznesową systemu naliczania cen w sklepie. Chcemy, by w docelowym systemie zaimplementowane były następujące historyjki użytkownika (User stories):

Wymagania:    

Jako właściciel sklepu chcę definiować grupy produktów tak aby móc ustalać indywidualne marże dla grup Jako kasjer chcę wiedzieć jaka jest ostateczna cena każdego produktu Jako właściciel sklepu chcę móc definiować sezonowe promocje takie jak: „kup n produktów, a produkt n+1 dostaniesz za ułamek oryginalnej ceny” Jako właściciel sklepu chcę móc definiować promocje takie jak: „obecna cena jest obniżona o x%”

Copyright by Cybercom Poland

www.mastercoder.pl