# Учебная практика 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= ```