ES.2/Leap Year(Przestępność roku)

logo exercism z napisem leap oraz es.2
Loading Likes...

Dzisiaj zmierzymy się z zadaniem Leap – czyli z przestępnością roku. Dzisiaj jeszcze standardowo umieszczę komendy do posługiwania się w cli exercism, ale w następnych lekcjach będę omawiał tylko przykłady (żeby się nie powtarzać).

  1. Zaczynamy standardowo – wejdź do folderu, gdzie zadeklarowałeś podczas instalacji ścieżkę domyślną dla exercism (wszystko oczywiście w jakiejś konsoli – ja używam git basha).
  2. Następnie odpalamy komendę:

    (jeśli nie pobrałeś pierwszego projektu jak w naszym pierwszym poście, to tutaj masz link jak to zrobić)
    To powinno pobrać w folderze ecmascript nowy folder Leap. W środku standardowo: readme.md, leap.spec.js, package.json.
  3. Przejdź do wspomnianego folderu Leap i czekaj na zainstalowanie paczek, odpalając komendę:

    • Przeczytajmy nasz readme.md, gdzie treść możemy przetłumaczyć mniej więcej:

      Dla określonych lat, sprawdź czy rok jest przestępny. Trudność polega na tym, że w kalendarzu Gregoriańskim: Każdy rok, który jest podzielny przez 4 bez reszty i nie jest podzielny przez 100 bez reszty, ale jednocześnie jest podzielny przez 400, to rok przestępny.

      Mamy link do wytłumaczenia przestępnego roku (oczywiście po angielsku).

    • Utwórz nowy plik leap.js, w którym umieścisz rozwiązanie. Nazwę nowego pliku możesz podejrzeć w pliku z testami leap.spec.js, importujemy tam nasz plik, dlatego nazwa ma znaczenie.
    • Teraz pozostaje Ci pisać kod, a następnie odpalać komendę

      – która sprawdzi poprawność kodu przepuszczając go przez testy

      – komenda włączy watch mode, czyli będzie samoczynnie odpalać npm test za każdym razem, kiedy zapiszesz plik

      – aby sprawdzić poprawność składni kodu

      – aby sprawdzić poprawność składni, a także sprawdzić od razu poprawność kodu

    • Tutaj mamy jeden wyjątek (o ile w hello-world mieliśmy jeden test, o tyle tutaj jest ich kilka). Kiedy odpalisz sobie leaf.spec.js, to zobaczysz, że pierwszy test zaczyna się od słowa właśnie “test”, a kolejne od “xtest”. Dzięki takiemu zapisowi możesz przeprowadzić swoje testy po kolei. Czyli odpalamy npm test i jeśli kod jest poprawny wg tego testu to zmieniamy kolejny “xtest” na “test” i znowu odpalamy

      . Tak w kółko aż nasz kod przejdzie poprawnie przez wszystkie testy.

    • Wtedy odpalasz w konsoli, co spowoduje, że opublikujemy nasz kod i będziemy mogli zobaczyć kod innych:

    • Pamiętaj, że nie musisz udostępniać tylko poprawnego kodu. Kiedy naprawdę nie wiesz jak dane zadanie zrobić, to publikujesz go i sprawdzasz jak poradzili sobie inni. Zalecam jednak, abyś sam próbował do oporu znaleźć idealny

UWAGA! Dalej spojler! Rozwiązanie zadania – spróbuj najpierw rozwiązać go sam. Inaczej nasze ćwiczenie nie ma sensu. Uczymy się na błędach! 


 

 

 

 

 

 

 

 

 

 

  1. Najpierw musimy stworzyć klasę w naszym pliku leap.js. Robimy to oczywiście za pomocą słówka class, a następnie nazywamy naszą klasę Year. Zaznaczamy zakres naszej klasy przez {}. Musimy naszą klasę wyeksportować, aby testy, które są w osobnym pliku leap.spec.js mogły ją zobaczyć i przetestować. Całość wygląda tak:

    Umieszczam wam odnośnik do MDNa, gdzie opisane jest exportowanie. Zostało to wprowadzone przez ES6, stąd nasze zadanko. 🙂 W skrócie słowo “default” pozwala nam na wyeksportowanie klasy pod ustaloną przez nas nazwą (niekoniecznie taką samą przy importowaniu). Możemy jedynie jedną klasę wyeksportować jako default (domyślna). Więcej przeczytacie i zobaczycie na przykładach w linku.
  2. Teraz opiszę nasze rozwiązanie. Najpierw podzielmy sobie nasze rozwiązanie na poszczególne części.
    • Rok jest podzielny bez reszty przez 4
    • Rok nie jest podzielny bez reszty przez 100
    • Rok jest podzielny bez reszty przez 400
  3. Jak sprawdzić czy dana liczba jest podzielna bez reszty? Tutaj przychodzi nam z pomocą operator modulo, który zapisujemy tak . Zwraca nam resztę z dzielenia. My w naszym zadaniu mamy dzielenie bez reszty, dlatego możemy przyrównać nasz wynik do 0.
  4. Tworzymy funkcję isLeap, która musi nam zwrócić odpowiedź true, że rok jest przestępny, dlatego na końcu umieszczamy return true(Pamiętajmy o średnikach – mimo, że nie są wymagane, zalecane jest ich umieszczanie). Całość możesz zobaczyć na obrazku:

Rozwiązanie zadania leap
Exercism/ES-2

About the Author: Sebastian Mieszczańczyk

Studia: Wyższa Szkoła Ekonomii i Informatyki w Krakowie Profil: "Informatyka i Ekonometria" Specjalizacja: "Programowanie urządzeń mobilnych i aplikacji sieciowych" Hobby:
  • Programowanie: Typowy front: HTML/JS/CSS Do tego: Vue/Vuex/Nuxt/Angular/
  • Rozwój osobisty
  • siatkówka (GeoVolley Team) na pozycji środkowego
  • Filmy - od dawna pasjonuję się nie tylko oglądaniem filmów, ale także analizowaniem ich pod kątem stworzenia ( Mój link do filmweba) - w liceum dzięki profilowi z modułem filmowym mogłem bardziej wejść w szczegóły kadrów, ujęć itd.
  • Psychologia - niestety wciąż mam zbyt mało czasu na zagłębianie się w tą wiedzę :(

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Facebook
Inline
Inline