Добро пожаловать на новый выпуск рубрики "Algo1C", в которой я стараюсь регулярно находить новые задачи по программированию и делиться их решениями с вами!
Цель рубрики заключается в тренировке практик по применению различных алгоритмов, в поддержании навыка "Писать код" в тонусе, ну и, само собой, немного поразвлечься!
Что было раньше:
В предыдущей части (нажмите на строку) мы решили:
- Multiples of 3 or 5 (Кратные 3 или 5) (Нажмите на строку)
- Array.diff (Различие массивов) (Нажмите на строку)
- Find The Parity Outlier (Найди нарушитель равенства) (Нажмите на строку)
- Counting Duplicates (Подсчёт дубликатов) (Нажмите на строку)
- Duplicate Encoder (Кодировка дубликатов) (Нажмите на строку)
В этой части вас ждут еще более интересные алгоритмические задачи. Давайте приступим!
Дисклеймер:
Перед началом просмотра решения задачи хочу призвать каждого к самостоятельному решению самой задачи, для того чтобы после вы могли сравнить своё решение с решением из этой статьи и обсудить это в комментариях, буду рад послушать ваше мнение. При этом большая просьба сохранять позитивный настрой и доброжелательность!
Решение новых задач:
Задача 1
Платформа: CodeWars
Название задачи: Satisfying numbers (Удовлетворительные числа)
Ссылка на задачу: https://www.codewars.com/kata/55e7d9d63bdc3caa2500007d (Нажмите на строку)
Сложность: 7 (7 / 8)
Уже решили (На момент написания статьи): 436 из 825
Тэги: Алгоритмы
Оригинальное описание задачи:
2520 is the smallest number that can be divided by each of the integers from 1 to 10 without any remainder.
Find the smallest positive number that is evenly divisible by all of the integers from 1 to n, (in this kata, 1≤n≤401 \le n \le 40).
For example:
5 --> 60 // 1 to 5 can all divide evenly into 60
10 --> 2520
Пояснение задачи:
Задача заключается в том, чтобы найти наименьшее число, которое делится без остатка на все целые числа от 1 до n. То есть нам нужно найти такое минимальное число, что при делении его на любое целое число от 1 до n результат будет целым числом.
Например, если n=5, то ответ должен быть 60, потому что 60 делится нацело на 1, 2, 3, 4 и 5.
Решение задачи:
(Нажмите на спойлер чтобы увидеть решение)
Задача 2
Платформа: CodeWars
Название задачи: Triple trouble (Тройная угроза)
Ссылка на задачу: https://www.codewars.com/kata/55d5434f269c0c3f1b000058 (Нажмите на строку)
Сложность: 6 (6 / 8)
Уже решили (На момент написания статьи): 4,775 из 15,165
Тэги: Алгоритмы
Оригинальное описание задачи:
Write a function which takes two integers num1
and num2
and returns 1
if there is a straight triple of a digit at any place in num1
and also a straight double of the same digit in num2
.
If this isn't the case, return 0
.
Examples
451999277, 41177722899 --> 1 // num1 has straight triple 999s and num2 has straight double 99s
1222345, 12345 --> 0 // num1 has straight triple 2s but num2 has only a single 2
12345, 12345 --> 0
888, 77 --> 0 // num1 has three '8's, num2 has 2 '7's, but they are not the same digit
88888, 88888 --> 1 // more than 3 or 2 repetitions also count
123123123, 123 --> 0 // '123' is not a single digit
Пояснение задачи:
По условию задачи мы будем получать два числа. Наша с вами цель заключается в том чтобы выяснить, повторяется ли какая-то конкретная цифра несколько раз подряд и в первом числе и во втором но с одним нюансом. В первом числе эта цифра должна повторяться три раза подряд а во втором всего-лишь два раза! Например в числах 451999277, 41177722899 цифра 9 повторяется три раза в первом числе и два раза во втором. В качестве результата мы должны будем возвращать 1 (Истина) если условие соблюдается и 0 (Ложь) если нет.
Решение задачи:
(Нажмите на спойлер чтобы увидеть решение)
Задача 3
Платформа: CodeWars
Название задачи: Array element parity (Равенство элементов массива)
Ссылка на задачу: https://www.codewars.com/kata/5a092d9e46d843b9db000064 (Нажмите на строку)
Сложность: 7 (7 / 8)
Уже решили (На момент написания статьи): 2,722 из 8,856
Тэги: Массивы, Алгоритмы
Оригинальное описание задачи:
In this Kata, you will be given an array of integers whose elements have both a negative and a positive value, except for one integer that is either only negative or only positive. Your task will be to find that integer.
Examples:
[1, -1, 2, -2, 3] => 3
3
has no matching negative appearance
[-3, 1, 2, 3, -1, -4, -2] => -4
-4
has no matching positive appearance
[1, -1, 2, -2, 3, 3] => 3
(the only-positive or only-negative integer may appear more than once)
Good luck!
Пояснение задачи:
Наша с вами задача заключается в том, чтобы найти число в массиве, которое не имеет пары с противоположным знаком. То есть, если все числа имеют пару (например, для каждого положительного числа есть такое же отрицательное), то нужно найти единственное число, у которого такой пары нет. Например в массиве [1, -1, 2, -2, 3, 3] единственными числом без пары является число 3. Точно также и с массивом [-3, 1, 2, 3, -1, -4, -2] где единственным числом без бары будет являться -4
Решение задачи:
(Нажмите на спойлер чтобы увидеть решение)
Задача 4
Платформа: CodeWars
Название задачи: Are they square? (Они квадратные?)
Ссылка на задачу: https://www.codewars.com/kata/56853c44b295170b73000007 (Нажмите на строку)
Сложность: 7 (7 / 8)
Уже решили (На момент написания статьи): 1,494 из 4,258
Тэги: Массивы, Фундаментальные
Оригинальное описание задачи:
Write a function that checks whether all elements in an array are square numbers. The function should be able to take any number of array elements.
Your function should return true if all elements in the array are square numbers and false if not.
An empty array should return undefined
/ None
/ nil
/false
(for C). You can assume that all array elements will be positive integers.
Examples:
is_square([1, 4, 9, 16]) --> True
is_square([3, 4, 7, 9]) --> False
is_square([]) --> None
Пояснение задачи:
По условию задачи нам необходимо выяснить являются ли все элементы исходного массива квадратными числами. Квадратное число – это число, которое является результатом умножения целого числа само на себя, например, 4 – это квадратное число, потому что 2×2=4. Что касаемо задачи, для примера можем взять массив [1, 4, 9, 16] результатом проверки которого должна быть "Истина" ибо каждое число внутри является квадратным!
Решение задачи:
(Нажмите на спойлер чтобы увидеть решение)
Задача 5
Платформа: CodeWars
Название задачи: Find Screen Size (Найди размер экрана)
Ссылка на задачу: https://www.codewars.com/kata/5bbd279c8f8bbd5ee500000f (Нажмите на строку)
Сложность: 7 (7 / 8)
Уже решили (На момент написания статьи): 2,017 из 7,158
Тэги: Фундаментальные, Строки
Оригинальное описание задачи:
Cheesy Cheeseman just got a new monitor! He is happy with it, but he just discovered that his old desktop wallpaper no longer fits. He wants to find a new wallpaper, but does not know which size wallpaper he should be looking for, and alas, he just threw out the new monitor's box. Luckily he remembers the width and the aspect ratio of the monitor from when Bob Mortimer sold it to him. Can you help Cheesy out?
The Challenge
Given an integer width
and a string ratio
written as WIDTH:HEIGHT
, output the screen dimensions as a string written as WIDTHxHEIGHT
.
Note: The calculated height should be represented as an integer. If the height is fractional, truncate it.
Пояснение задачи:
По условию задачи нам дан размер ширины экрана монитора и соотношение сторон в формате "Ширина:Высота". Наша цель — вывести размеры экрана в формате "Ширина x Высота", где высота округляется вниз до ближайшего целого числа. Например если ширина равна 1920 пикселей, а соотношение сторон — "16:9", тогда высота = 1920 × (9/16) ≈ 1080
Решение задачи:
(Нажмите на спойлер чтобы увидеть решение)
Новое в конфигурации Algo1C:
Заключение:
Платформа: CodeWars
Название задачи: Satisfying numbers (Удовлетворительные числа)
Ссылка на задачу: https://www.codewars.com/kata/55e7d9d63bdc3caa2500007d (Нажмите на строку)
Сложность: 7 (7 / 8)
Уже решили (На момент написания статьи): 436 из 825
Тэги: Алгоритмы
Оригинальное описание задачи:
2520 is the smallest number that can be divided by each of the integers from 1 to 10 without any remainder.
Find the smallest positive number that is evenly divisible by all of the integers from 1 to n, (in this kata, 1≤n≤401 \le n \le 40).
For example:
5 --> 60 // 1 to 5 can all divide evenly into 60 10 --> 2520
Пояснение задачи:
Задача заключается в том, чтобы найти наименьшее число, которое делится без остатка на все целые числа от 1 до n. То есть нам нужно найти такое минимальное число, что при делении его на любое целое число от 1 до n результат будет целым числом.
Например, если n=5, то ответ должен быть 60, потому что 60 делится нацело на 1, 2, 3, 4 и 5.
Решение задачи:
Платформа: CodeWars
Название задачи: Triple trouble (Тройная угроза)
Ссылка на задачу: https://www.codewars.com/kata/55d5434f269c0c3f1b000058 (Нажмите на строку)
Сложность: 6 (6 / 8)
Уже решили (На момент написания статьи): 4,775 из 15,165
Тэги: Алгоритмы
Оригинальное описание задачи:
Write a function which takes two integers
num1
andnum2
and returns1
if there is a straight triple of a digit at any place innum1
and also a straight double of the same digit innum2
.If this isn't the case, return
0
.Examples
451999277, 41177722899 --> 1 // num1 has straight triple 999s and num2 has straight double 99s 1222345, 12345 --> 0 // num1 has straight triple 2s but num2 has only a single 2 12345, 12345 --> 0 888, 77 --> 0 // num1 has three '8's, num2 has 2 '7's, but they are not the same digit 88888, 88888 --> 1 // more than 3 or 2 repetitions also count 123123123, 123 --> 0 // '123' is not a single digit
Пояснение задачи:
По условию задачи мы будем получать два числа. Наша с вами цель заключается в том чтобы выяснить, повторяется ли какая-то конкретная цифра несколько раз подряд и в первом числе и во втором но с одним нюансом. В первом числе эта цифра должна повторяться три раза подряд а во втором всего-лишь два раза! Например в числах 451999277, 41177722899 цифра 9 повторяется три раза в первом числе и два раза во втором. В качестве результата мы должны будем возвращать 1 (Истина) если условие соблюдается и 0 (Ложь) если нет.
Решение задачи:
Платформа: CodeWars
Название задачи: Array element parity (Равенство элементов массива)
Ссылка на задачу: https://www.codewars.com/kata/5a092d9e46d843b9db000064 (Нажмите на строку)
Сложность: 7 (7 / 8)
Уже решили (На момент написания статьи): 2,722 из 8,856
Тэги: Массивы, Алгоритмы
Оригинальное описание задачи:
In this Kata, you will be given an array of integers whose elements have both a negative and a positive value, except for one integer that is either only negative or only positive. Your task will be to find that integer.
Examples:
[1, -1, 2, -2, 3] => 3
3
has no matching negative appearance
[-3, 1, 2, 3, -1, -4, -2] => -4
-4
has no matching positive appearance
[1, -1, 2, -2, 3, 3] => 3
(the only-positive or only-negative integer may appear more than once)
Good luck!
Пояснение задачи:
Наша с вами задача заключается в том, чтобы найти число в массиве, которое не имеет пары с противоположным знаком. То есть, если все числа имеют пару (например, для каждого положительного числа есть такое же отрицательное), то нужно найти единственное число, у которого такой пары нет. Например в массиве [1, -1, 2, -2, 3, 3] единственными числом без пары является число 3. Точно также и с массивом [-3, 1, 2, 3, -1, -4, -2] где единственным числом без бары будет являться -4
Решение задачи:
Платформа: CodeWars
Название задачи: Are they square? (Они квадратные?)
Ссылка на задачу: https://www.codewars.com/kata/56853c44b295170b73000007 (Нажмите на строку)
Сложность: 7 (7 / 8)
Уже решили (На момент написания статьи): 1,494 из 4,258
Тэги: Массивы, Фундаментальные
Оригинальное описание задачи:
Write a function that checks whether all elements in an array are square numbers. The function should be able to take any number of array elements.
Your function should return true if all elements in the array are square numbers and false if not.
An empty array should return
undefined
/None
/nil
/false
(for C). You can assume that all array elements will be positive integers.Examples:
is_square([1, 4, 9, 16]) --> True is_square([3, 4, 7, 9]) --> False is_square([]) --> None
Пояснение задачи:
По условию задачи нам необходимо выяснить являются ли все элементы исходного массива квадратными числами. Квадратное число – это число, которое является результатом умножения целого числа само на себя, например, 4 – это квадратное число, потому что 2×2=4. Что касаемо задачи, для примера можем взять массив [1, 4, 9, 16] результатом проверки которого должна быть "Истина" ибо каждое число внутри является квадратным!
Решение задачи:
Платформа: CodeWars
Название задачи: Find Screen Size (Найди размер экрана)
Ссылка на задачу: https://www.codewars.com/kata/5bbd279c8f8bbd5ee500000f (Нажмите на строку)
Сложность: 7 (7 / 8)
Уже решили (На момент написания статьи): 2,017 из 7,158
Тэги: Фундаментальные, Строки
Оригинальное описание задачи:
Cheesy Cheeseman just got a new monitor! He is happy with it, but he just discovered that his old desktop wallpaper no longer fits. He wants to find a new wallpaper, but does not know which size wallpaper he should be looking for, and alas, he just threw out the new monitor's box. Luckily he remembers the width and the aspect ratio of the monitor from when Bob Mortimer sold it to him. Can you help Cheesy out?
The Challenge
Given an integer
width
and a stringratio
written asWIDTH:HEIGHT
, output the screen dimensions as a string written asWIDTHxHEIGHT
.Note: The calculated height should be represented as an integer. If the height is fractional, truncate it.
Пояснение задачи:
По условию задачи нам дан размер ширины экрана монитора и соотношение сторон в формате "Ширина:Высота". Наша цель — вывести размеры экрана в формате "Ширина x Высота", где высота округляется вниз до ближайшего целого числа. Например если ширина равна 1920 пикселей, а соотношение сторон — "16:9", тогда высота = 1920 × (9/16) ≈ 1080
Решение задачи:
Ну что ж, пока на этом всё, надеюсь статья была увлекательной для вас, благодарю за внимание.
Подключайтесь к решению алгоритмических задач вместе со мной, делитесь вашим мнением и решениями в комментариях, сохраняя при этом позитивный настрой!
Увидимся в новой статье!