# Учебная практика 2021. Codewars Day1. 05.07.2021. Якушев Максим Дмитриевич.
***
1. Присутствовал на онлайн лекции / практике.
2. Решил 4 задачи.
### Задача. Twice as old. 8kyu (https://www.codewars.com/kata/5b853229cfde412a470000d0).
Ваша функция принимает два аргумента:
1.текущий возраст отца (лет)
2.текущий возраст сына (лет)
Подсчитайте, сколько лет назад отец был вдвое старше своего сына (или через сколько лет он будет вдвое старше).
### Решение на языке C++
```c=
int twice_as_old(int dad, int son) {
return abs(son*2 - dad);
}
```
### Решение на языке Java
```java=
public class TwiceAsOld{
public static int TwiceAsOld(int dadYears, int sonYears){
return Math.abs(sonYears*2-dadYears);
}
}
```
### Задача. Convert a Number to a String! 8kyu (https://www.codewars.com/kata/5265326f5fda8eb1160004c8)
Нам нужна функция, которая может преобразовывать число в строку.Какие способы добиться этого вы знаете?
```
Примеры:
123 -> «123»
999 -> «999»
```
### Решение на языке C++
```c=
#include <string>
using namespace std;
string number_to_string(int num) {
return to_string(num);
}
```
### Решение на языке Java
```java=
class Kata {
public static String numberToString(int num) {
return Integer.toString(num);
}
}
```
### Задача. Reverse a Number. 7kyu (https://www.codewars.com/kata/555bfd6f9f9f52680f0000c5)
Для данного числа напишите функцию для вывода его обратных цифр. (например, если дано 123, ответ будет 321).Числа должны сохранять свой знак; то есть отрицательное число должно быть отрицательным при обратном.
```
Примеры:
123 -> 321
-456 -> -654
1000 -> 1
```
### Решение на языке C++.
```с=
long long reverseNumber(long long n) {
int res = 0;
while(n != 0) {
res = res * 10 + n% 10;
n /= 10;
}
return res;
}
```
### Решение на языке Java
```java=
public class ReverseNumber {
public static int reverse(int number) {
int res = 0;
while(number != 0) {
res = res * 10 + number % 10;
number /= 10;
}
return res;
}
}
```
### Задача. Happy Birthday, Darling! 7 kyu (https://www.codewars.com/kata/5e96332d18ac870032eb735f)
Как вы, возможно, знаете, когда некоторые люди достигают подросткового возраста, они в шутку празднуют только 20 или 21 день рождения, навсегда. С некоторыми математическими навыками это вполне возможно - вам нужно только выбрать правильную числовую основу! Например, если им исполняется 32 года, это ровно 20 - по основанию 16 ... Уже 39? Это всего 21, в базе 19! Ваша задача - перевести заданный возраст в желанные 20 (или 21) год и указать основание счисления в формате, указанном ниже. Примечание: ввод всегда будет > 21
```
Пример:
32 --> "32? That's just 20, in base 16!"
39 --> "39? That's just 21, in base 19!"
```
### Решение на языке С++
```c=
#include <string>
using namespace std;
string womens_age(unsigned n) {
if(n%2 == 0){
return to_string(n) + "? That's just 20, in base " + to_string(n/2) + "!" ;
} else {
return to_string(n) + "? That's just 21, in base " + to_string(n/2) + "!" ;
}
}
```
### Решение на языке Java
```java=
public class Kata {
public static String womensAge(int n) {
String s = "";
if (n % 2 == 0) {
s = n + "? That's just 20, ";
} else {
s = n + "? That's just 21, ";
}
n = (int) (n / 2);
return s + "in base " + n + "!";
}
}
```
## Задача. Minimum Ticket Cost. 7kyu (https://www.codewars.com/kata/5bdc1558ab6bc57f47000b8e)
Несколько лет назад Аарон покинул свою старую школу и поступил в другой из соображений безопасности. Теперь он хочет найти Джейн, одну из своих одноклассниц и хороших друзей. Всего имеется n школ, пронумерованных от 1 до n. Между каждой парой школ можно путешествовать, купив билет. Билет между школами i и j стоит (i + j) по модулю (n + 1) и может использоваться несколько раз. Помогите Аарону определить минимальную общую стоимость посещения всех школ. Он может начать и закончить в любой школе.
### Решение на языке С++
```c=
```
### Решение на языке Java
```java=
```