# Co to są wyzwania programistyczne?

Małe programistyczne zadania, które wymagają zaimplementowania funkcji albo klasy w języku Kotlin. Dzięki temu możesz sprawdzić w praktyce czy rozumiesz poprawnie materiał z kursu i wyćwiczyć to żeby być w stanie używać nowych umiejętności od razu po warsztacie. Wszystkie wyzwania zostały zweryfikowane przez testy jednostkowe.

```// Fibonacci number that starts from 1 and 1 (fib(0) == 1, fib(1) == 1, fib(2) == 2, fib(3) == 3, fib(4) == 5, fib(5) == 8) // https://en.wikipedia.org/wiki/Fibonacci_number fun fib(n: Int): Int = TODO() fun main() { fib(0) shouldEquals 1 fib(1) shouldEquals 1 fib(2) shouldEquals 2 fib(3) shouldEquals 3 fib(4) shouldEquals 5 fib(5) shouldEquals 8 fib(6) shouldEquals 13 fib(7) shouldEquals 21 fib(8) shouldEquals 34 fib(9) shouldEquals 55 fib(10) shouldEquals 89 } infix fun <T> T.shouldEquals(other: T) { if (this != other) throw AssertionError("Value \$this not equal to \$other") }```
```interface Person { val name: String val age: Int val canBuyAlcohol: Boolean fun helloText(): String fun cheerText(person: Person): String } // TODO: Implement classes Businessman and Student // * They both should implement Person // * They both can buy alcohol only if over 21 // * Businessman says hello by “Good morning”, Student by “Hi”. // * Businessman cheers by “Hello, my name is {his name}, nice to see you {cheered person name}”, Student by “Hey {cheered person name}, I am {his name}”. fun main() { val businessman: Person = TODO("Use Businessman constructor here once it is implemented") val student: Person = TODO("Use Businessman constructor here once it is implemented") println(businessman.helloText()) println(student.helloText()) println(businessman.cheerText(student)) println(student.cheerText(businessman)) fun sayIfCanBuyAlcohol(person: Person) { val modal = if(person.canBuyAlcohol) "can" else "can't" println("\\${person.name} \$modal buy alcohol") } sayIfCanBuyAlcohol(businessman) sayIfCanBuyAlcohol(student) }```

## Mariusz Saramak

### Tom Tom

"Na warsztacie nie tylko usystematyzowałem sobie wiedzę ze składni języka kotlin, ale dzięki Marcinowi przestawiłem swoje myślenie o możliwości rozwiązania problemu w funkcjonalny sposób - dostałem do ręki nowe narzędzie, które moge wykorzystać w codziennej pracy. Wydaje mi się, że całe szkolenie jest nastawione na natychmiastowy zwrot zdobytej wiedzu w codziennej pracy. Duży +"

## Natalia Nazaruk

### Nordea

"Kotlin dla programistów Android to świetne warsztaty, prowadzone przez niezwykle kompetentnego trenera z Kt. Academy, Marcina Moskałę. To był intensywny, 3-dniowy kurs Kotlina, zakończony niełatwym egzaminem. Jestem pewna, że z wiedzą zdobytą na kursie, oraz certyfikatem wydanym po zdanym egzaminie mogę z optymizmem spojrzeć na swoją przyszłość jako Android Developer."

## Patryk Grajewski

### Sii Poland

"Bardzo dobre szkolenie. W sam raz dla programistów, którzy w łatwy sposób chcą przenieść się z Javy na Kotlina. Szkolenie zawiera także ćwiczenia, które umożliwiają sprawdzenie nowej wiedzy w praktyce."