/ nauka programowania

Coding Challenge 2

Cześć!

Dziś czas na kolejne zadanie z serii “Coding Challenge”! Co piątek w ramach tej serii będziemy udostępniali nowe programistyczne wyzwanie. Twoim zadaniem będzie rozwiązanie zadania. W ramach tego cyklu będziesz miał okazję poćwiczyć swoje umiejętności programowania i rozwiązywania problemów. Do każdego zadania dołączymy zbiór testów, które pozwolą Ci sprawdzić, czy rozwiązałeś zadanie poprawnie.

Challenge 1

W budynku znajdują się trzy windy: A, B i C. Winda A zatrzymuje się tylko i wyłącznie na nieparzystych numerach pięter, winda B zatrzymuje się tylko i wyłącznie na parzystych numerach pięter (z wyłączeniem piętra numer 1), winda C zatrzymuje się na każdym piętrze. Kiedy ktoś naciśnie przycisk windy, najbliższa winda pojawi się na piętrze zgodnym ze znajdującym się na nim człowiekiem. Teraz kiedy ktoś naciśnie przycisk, rozstrzygnij, która winda pojawi się u niego na piętrze.

Utwórz funkcję 'switchLift' - przyjmującą jako parametry: obiekt zawierający aktualne piętro na jakim znajduje się dana winda, wartość liczbową oznaczającą piętro na jakie została winda wezwana - funkcja powinna zwracać wartość typu String z nazwą windy.

switchLift({A: 1, B: 1, C: 10}, 3) - powinno zwrócić "A".

Dlaczego? Ponieważ winda A musi przemieścić się o 2 piętra, winda B nigdy nie zatrzyma się na piętrze numer 3, winda C musi przemieścić się o 7 pięter - dlatego winda A jest najlepszym wyborem.

switchLift({A: 1, B: 1, C: 9}, 5) - powinno zwrócić "AC".

Dlaczego? Ponieważ windy A i C muszą przemieścić się o 4 piętra. Dlatego też windy A i C pojawią się w jednym momencie.

switchLift({A: 1, B: 1, C: 9}, 1) - powinno zwrócić "".

Dlaczego? Ponieważ windy A i B znajdują się na piętrze pierwszym - w związku z czym żadna winda nie musi się przemieścić.

Challenge 2

Masz kwotę pieniędzy a0 > 0 i deponujesz ją ze stałą stopą procentową p% > 0 rocznie w dniu 1 Stycznia 2019 roku. Chesz mieć kwotę a >= a0.

Utwórz funkcję 'targetDay' - przyjmującą jako parametry: wartość liczbową stanowiącą depozyt, wartość liczbową stanowiącą oczekiwane saldo, wartość liczbową określającą oprocentowanie roczne - która zwróci wartość typu String zawierającą datę, kiedy oczekiwane saldo zostanie osiągnięte.

targetDay(100, 101, 0.98) - powinno zwrócić "2020-01-01" (366 dni)
targetDay(100, 150, 2.00) - powinno zwrócić "2038-12-26" (7299 dni)

Ustalenia:

Format daty, to "RRRR-MM-DD" gdzie RRRR oznacza rok, MM miesiąc, a DD dzień. Dniem startowym jest zawsze "2019-01-01". Jeżeli p% jest stawką za rok, stawka za jeden dzień to p podzielone przez 36000, ponieważ rok bankowy składa się z 360 dni. Masz a0 > 0, p% > 0, a >= a0.

Kod niezbędny do wykonania challeng’u znajdziesz tutaj (foldery 03 i 04): https://bitbucket.org/23_knots/zk-challange/src/master/.
Aby uruchomić kod, należy wykonać polecenie

npm install

Następnie dopisać brakujący kod funkcji, a na koniec uruchomić testy poleceniem

npm test

Powodzenia i do usłyszenia w poniedziałek, kiedy to omówimy możliwe rozwiązania.

Częśc piersza
Pierwsza częśc Coding Challenge jest dostępna tutaj.