Приветствую всех любителей программирования на новой статье с подборкой интересных задач для тренировки навыков решения алгоритмических проблем. В этом материале я собрал разнообразные задания от простых до сложных, чтобы каждый мог проверить свои силы и получить удовольствие от процесса кодинга! Цель статьи — не только улучшить умение применять различные алгоритмы, но и поддерживать навыки в форме.
Что было раньше:
В предыдущей части мы решили:
- SpeedCode #2 - Array Madness (Скоростной код)
- Remove the time (Удалите время)
- Simple Fun #260: Permutation Shift (Простое веселье)
- Find the Speedcuber's times! (Найдите время Speedcuber!)
- up AND down (вверх и вниз)
- Maximum and minimum (Максимум и минимум)
- ASCII Games: Flood Fill (Player) (Игры ASCII: заливка наводнения (игрок))
- Find number in an array # 2 (Найти номер в массиве)
Решение новых задач:
Задача 1
Платформа: CodeWars
Название задачи: Reverse List Order (Обратный список)
Ссылка на задачу: https://www.codewars.com/kata/53da6d8d112bd1a0dc00008b
Сложность: 8 kyu
Уже решили (На момент написания статьи): 55 184 из 94 921
Тэги: Списки, основы
Оригинальное описание задачи:
In this kata you will create a function that takes in a list and returns a list with the reverse order.
Examples (Input -> Output)
* [1, 2, 3, 4] -> [4, 3, 2, 1]
* [9, 2, 0, 7] -> [7, 0, 2, 9]
Пояснение задачи:
Дана задача создать функцию, которая принимает список чисел и возвращает его в обратном порядке.
Примеры:
- Входной список `[1, 2, 3, 4]` преобразуется в выходной `[4, 3, 2, 1]`.
- Входной список `[9, 2, 0, 7]` преобразуется в выходной `[7, 0, 2, 9]`.
Задача 2
Платформа: CodeWars
Название задачи: Push a hash/an object into array (Втянуть хеш/объект в массив)
Ссылка на задачу: https://www.codewars.com/kata/527b3cd0492b6b15250060af
Сложность: 8 kyu
Уже решили (На момент написания статьи): 11 037 из 26 408
Тэги: Массивы, отладка
Оригинальное описание задачи:
You are trying to put a hash in ruby or an object in javascript or java into an array, but it always returns error, solve it and keep it as simple as possible!
Пояснение задачи:
Суть задачи заключается в том чтобы исправить ошибку, которая возникает при попытке добавить хэш или объект в массив. При начале решения задачи даётся код, который надо отладить!
Задача 3
Платформа: CodeWars
Название задачи: Simple Fun #175: Same Encryption (Простое веселье)
Ссылка на задачу: https://www.codewars.com/kata/58b6c403a38abaaf6c00006b
Сложность: 7 kyu
Уже решили (На момент написания статьи): 424 из 2 266
Тэги: Головоломки, алгоритмы
Оригинальное описание задачи:
Task
John loves encryption. He can encrypt any string by the following algorithm:
take the first and the last letters of the word;
replace the letters between them with their number;
replace this number with the sum of it digits
until a single digit is obtained.
Given two strings(s1
and s2
), return true
if their encryption is the same, or false
otherwise.
Example
For s1 = "EbnhGfjklmjhgz" and s2 = "Eabcz"
, the result should be true
.
"EbnhGfjklmjhgz" --> "E12z" --> "E3z"
"Eabcz" --> "E3z"
Their encryption is the same.
Input/Output
[input]
string s1
The first string to be encrypted.
s1.length >= 3
[input]
string s2
The second string to be encrypted.
s2.length >= 3
[output]
a boolean value
true
if encryption is the same, false
otherwise.
Пояснение задачи:
Задача состоит в том, чтобы проверить, совпадает ли результат шифрования двух строк по алгоритму Джона.
Этот алгоритм включает несколько шагов:
1. Берем первые и последние буквы каждой строки.
2. Удаляем все символы между первыми и последними буквами.
3. Заменяем каждую такую последовательность на сумму цифр ее длины.
4. Повторяем процесс до тех пор, пока не получим одну цифру.
Если две строки после такого шифрования становятся одинаковыми, они считаются совпадающими.
Пример:
Для строк `s1 = "EbnhGfjklmjhgz"` и `s2 = "Eabcz"`:
- `s1` превращается в `"E12z"`, затем в `"E3z"`.
- `s2` уже является однобуквенной строкой `"E3z"`.
Так как обе строки после шифрования равны `"E3z"`, они совпадают.
Таким образом, задачей является проверка того, совпадают ли зашифрованные версии двух строк.
Задача 4
Платформа: CodeWars
Название задачи: Regexp Basics - is it a eight bit unsigned number? (Основы regexp - это восемь бит без знака?)
Ссылка на задачу: https://www.codewars.com/kata/567e8f7b4096f2b4b1000005
Сложность: 7 kyu
Уже решили (На момент написания статьи): 1 473 из 10 824
Тэги: Регулярные выражения, основы
Оригинальное описание задачи:
Implement String#eight_bit_number?
, which should return true if given object is a number representable by 8 bit unsigned integer (0-255), false
otherwise.
It should only accept numbers in canonical representation, so no leading +
, extra 0
s, spaces etc.
Пояснение задачи:
Необходимо реализовать метод `String#eight_bit_number?`, который должен возвращать `true`, если переданный объект является числом, представимым с помощью 8-битного беззнакового целого числа (от 0 до 255), и `false` в противном случае. Метод должен принимать только числа в каноническом представлении, то есть без ведущего плюса, дополнительных нулей, пробелов и т.п.
Задача 5
Платформа: CodeWars
Название задачи: Dude, my computer cannot count! (Чувак, мой компьютер не может считать!)
Ссылка на задачу: https://www.codewars.com/kata/58fa9898dfec0ef150000014
Сложность: 6 kyu
Уже решили (На момент написания статьи): 441 из 1 185
Тэги: Параллелизм, отладка
Оригинальное описание задачи:
Remember the times when every website had a counter? A friend of yours runs one of those sites.
But as his site gains popularity, he observes some strange behavior: Sometimes, when there are many users accessing his page, the counter does not represent what he can get from the access logs.
Knowing your programming skills, he asks you to investigate. You look at his code and immediately see what's wrong: his VisitorStatistics implementation is not thread-safe.
"No big deal," you tell him. "I'll fix it in no time!"
Пояснение задачи:
Речь идёт о старой доброй практике размещения счётчиков посещений на веб-сайтах. Ваш друг владеет одним из таких сайтов, и замечает странное поведение: иногда, когда много пользователей одновременно заходят на страницу, счётчик показывает неверные данные, отличающиеся от тех, что видны в логах доступа.
Вы быстро понимаете проблему: реализация класса VisitorStatistics не является потокобезопасной. Потоки конкурируют за доступ к общему ресурсу (счётчику), что приводит к неправильным результатам.
Теперь ваша задача — исправить код, сделав его потокобезопасным, чтобы счётчик всегда отображал корректные данные независимо от количества одновременных запросов.
Задача 6
Платформа: CodeWars
Название задачи: Gambling Game Joker (Игра в азартные игры Джокер)
Ссылка на задачу: https://www.codewars.com/kata/621e323a98afab001628d9a0
Сложность: 6 kyu
Уже решили (На момент написания статьи): 232 из 995
Тэги: Основы, строки
Оригинальное описание задачи:
Popular gambling game Joker consists of drawing 6 balls from a drum on which are written numbers between 1 and 45. The winning joker number is formed from the drawn numbers so that in the same order in which the balls are drawn, we write down their last digits.
For example, if the numbers 12, 35, 1, 2, 23 and 39 are drawn in order, then it is a joker No. 251239.
1[2], 3[5], [1], [2], 2[3], 3[9] --> 251239
Players buy winning tickets and look forward to drawing and calculating the joker number to calculate their possible gain. The winnings of the ticket are calculated by comparing the serial number written on the ticket with the calculated joker number in a way to count how many last digits of these two numbers match, as shown in the following table.
Serial No. | Name of prize
-----------+---------------
251239 | I type
X51239 | II type
XX1239 | III type
XXX239 | IV type
XXXX39 | V type
XXXXX9 | Losing card
XXXXXX | Losing card
In the left column are the serial numbers of the tickets, where X denotes arbitrary digits. In the right column of the table are the winnings names for each of the serial number forms. So if the serial number is exactly equal to the Joker number then we get the gain of type I, if the last 5 digits are equal we get the gain of type II, and so on, until the gain of type V, the kind we get when the last two digits are equal. All other serials are not winning.
Write a program that will return the names of the winnings for a given Joker number and given tickets. The names of the winnings must be written exactly as written in the table above (the number of winnings is written in Roman numbers with capital letters ‘I’ and ‘V’, followed by a space and lowercase letters ‘type’).
Input
joker_nums --> an array of 6 numbers from which you have to make the winning Joker number
ticket_serials --> an array of 3 ticket serial numbers
Output
You should return a list with the names of the winnings for the 3 given tickets
joker_card([12, 35, 1, 2, 23, 39], ['151239', '251229', '251339']) --> ["II type", "Losing card", "V type"]
Note
- some tickets may have leading zeros
- some joker numbers may have leading zeros
- leading zeros still count towards the total
Problem taken from the Cantonal competition in Informatics 2016, Tuzla
Пояснение задачи:
Задача состоит в том, чтобы написать код, который определяет выигрышные номера билетов для лотереи "Джокер".
Игроки покупают билеты, и их выигрыш зависит от того, насколько совпадают последние цифры серийного номера билета с номером джокера.
Если последние цифры совпадают полностью, то билет считается выигрышным типа I, если совпадают все, кроме одной последней цифры, то билет типа II, и так далее, пока совпадают только две последние цифры, что дает выигрыш типа V.
Все остальные билеты считаются проигрышными.
Входные данные:
- `joker_nums`: массив из 6 чисел, которые формируют номер джокера.
- `ticket_serials`: массив из 3 строк, представляющих серийные номера билетов.
Выходные данные:
- Список с названиями выигрышей для каждого из трех билетов.
Примечание:
- Серийные номера билетов могут содержать ведущие нули.
- Номер джокера также может содержать ведущие нули.
- Ведущие нули учитываются при сравнении.
Задача 7
Платформа: CodeWars
Название задачи: Simple Fun #365: Remove Number Game I (Простое веселье)
Ссылка на задачу: https://www.codewars.com/kata/59e9576d7905dff72600001e
Сложность: 5 kyu
Уже решили (На момент написания статьи): 50 из 309
Тэги: Головоломки, игры, алгоритмы, основы
Оригинальное описание задачи:
Task
You are given two positive integers n
and d
(n
is given by string fromat). And then, we are playing a Remove Number Game
:
-
1st turn, we remove a digit from n
, that the resulting number has at least one non-zero
digit and is divisible by d
.
-
2nd turn, we remove a digit from n
, that the resulting number has at least one non-zero
digit and is divisible by d-1
.
-
3rd turn, ................................divisible by d-2
.
-
ith turn, ................................divisible by d-i+1
.
-
And so on. Until d-i+1
is decreased to 1 or you can not find a way to romove 1 digit from n
and is divisible by d-i+1
.
Your task is, determine the maximum possible number of turns you can make.
Still not understand the task? Look at the following examples:
Examples
For n = "102045" and d = 4
, the output should be 4
.
turn 1: "102045" -> "10204" (remove 5 from n)
"10204" is divisible by 4
turn 2: "10204" -> "0204" (remove 1 from n)
"204" is divisible by 3
turn 3: "204" -> "20" (remove 4 from n)
"20" is divisible by 2
turn 4: "20" -> "2" (remove 0 from n)
"2" is divisible by 1
Perhaps there are many ways to playing this game.
But the maximum possible number of turns should be 4.
For n = "5555" and d = 3
, the output should be 1
.
Only 1 turn: "5555"
-> "555"
(divisible by 3), "555"
remove any digit 5
will became to "55"
, but "55"
is not divisible by 2
. So, after turn 1, the game is over.
For n = "88" and d = 2
, the output should be 1
.
Only 1 turn: "88"
-> "8"
(divisible by 2), "8"
can not remove digit again.
For n = "100000" and d = 4
, the output should be 1
.
Note that "100000"
can only remove digit 0
from it. If we removed digit 1
, "00000"
is not a valid number.
Note
-
2 <= n.length <= 15
-
1 <= d <= 15
-
Happy Coding ^_^
Пояснение задачи:
Задача состоит в том, чтобы определить максимальное количество ходов в игре, где игрок последовательно удаляет цифры из числа `n`, соблюдая следующие условия:
1. После каждого хода число должно иметь хотя бы одну ненулевую цифру.
2. Число должно быть кратно `d-i+1`, где `i` — номер хода.
3. Если после очередного хода условие 1 и 2 больше не выполняются, игра заканчивается.
Пример:
Для `n = "102045" и `d = 4`, можно сделать 4 хода:
- Первый ход: `"102045"` → `"10204"` (удаляем 5)
- Второй ход: `"10204"` → `"0204"` (удаляем 1)
- Третий ход: `"0204"` → `"204"` (удаляем 0)
- Четвертый ход: `"204"` → `"2"` (удаляем 0)
Максимальное количество ходов для этой игры — 4.
Задача требует найти максимальное количество ходов для разных входных данных, учитывая ограничения на длину числа `n` и значение `d`.
Задача 8
Платформа: CodeWars
Название задачи: Basic neural networks - Machine Learning #2 (Основные нейронные сети - машинное обучение)
Ссылка на задачу: https://www.codewars.com/kata/576af5056a3efe4b130020bd
Сложность: 5 kyu
Уже решили (На момент написания статьи): 102 из 408
Тэги: Машинное обучение, нейронные сети, игры, наука о данных
Оригинальное описание задачи:
Basic neural networks - Machine Learning #2
In machine learning and cognitive science, Artificial Neural Network (ANNs) are a family of models inspired by biological neural networks (the central nervous systems of animals, in particular the brain) which are used to estimate or approximate functions that can depend on a large number of inputs and are generally unknown.
In this kata series our main focus will be around (ANNs) because they are fundemental to Machine Learning. We will be useing the brain package to help us create an artificial neural network that we can use to solve simple problems. I won't go into depth about how to use brain because of the sheer amount of tutorials and examples available (I will post some below under the reference section).
Task
Your task is simple! You must use brain to process the results of a game of paper scissors rock and return the end state of the players, you will have to create training tests to train the brain, then your brain will be tested to return the correct result 100% of the time.
Input
The brain will take an array of 6
, 0's
and 1's
Player 1
Choice
Player 2
Choice
1,0,0
Paper
1,0,0
Paper
0,1,0
Scissors
0,1,0
Scissors
0,0,1
Rock
0,0,1
Rock
The table above indicates the format of the array and what numbers indicate the choices for each player.
Output
The brain must then return the state for each player.
Player 1
State
Player 2
State
0
Loss
1
Win
1
Win
0
Loss
1
Tie
1
Tie
The table above indicates the format of the array and what numbers indicate the state for each player.
IMPORTANT, It's important to note that all results will be rounded, the brain returns floating points numbers between 0
and 1
, so all results will be rounded automatically.
Examples
Below are some examples of input and output expected.
Input: [1,0,0,0,0,1];
Output: [1,0];
Input: [1,0,0,1,0,0];
Output: [1,1];
Input: [0,1,0,0,0,1];
Output: [0,1];
References
stackabuse - neural networks in javascript with brain js
heatonresearch - non mathematical introduction using neural networks
Пояснение задачи:
Задача состоит в том, чтобы использовать библиотеку *brain* для создания искусственной нейронной сети, которая будет обрабатывать результаты игры "камень, ножницы, бумага" и определять конечный результат для каждого игрока.
Мы будем обучать сеть на тестовых данных, а затем проверим ее точность.
Входные данные для сети будут представлять собой массив из 6 элементов, где каждый элемент соответствует выбору одного из игроков.
Например, `[1,0,0]` означает, что первый игрок выбрал "камень", второй — "бумагу".
Выходные данные должны содержать состояние для каждого игрока.
Например, если первый игрок проиграл, выходные данные могут быть `[0,1]`, что означает поражение первого игрока и победу второго.
Точность работы сети должна составлять 100%.
Заключение:
Платформа: CodeWars
Название задачи: Reverse List Order (Обратный список)
Ссылка на задачу: https://www.codewars.com/kata/53da6d8d112bd1a0dc00008b
Сложность: 8 kyu
Уже решили (На момент написания статьи): 55 184 из 94 921
Тэги: Списки, основы
Оригинальное описание задачи:
In this kata you will create a function that takes in a list and returns a list with the reverse order.
Examples (Input -> Output)
* [1, 2, 3, 4] -> [4, 3, 2, 1] * [9, 2, 0, 7] -> [7, 0, 2, 9]
Пояснение задачи:
Дана задача создать функцию, которая принимает список чисел и возвращает его в обратном порядке.
Примеры:
- Входной список `[1, 2, 3, 4]` преобразуется в выходной `[4, 3, 2, 1]`.
- Входной список `[9, 2, 0, 7]` преобразуется в выходной `[7, 0, 2, 9]`.
Платформа: CodeWars
Название задачи: Push a hash/an object into array (Втянуть хеш/объект в массив)
Ссылка на задачу: https://www.codewars.com/kata/527b3cd0492b6b15250060af
Сложность: 8 kyu
Уже решили (На момент написания статьи): 11 037 из 26 408
Тэги: Массивы, отладка
Оригинальное описание задачи:
You are trying to put a hash in ruby or an object in javascript or java into an array, but it always returns error, solve it and keep it as simple as possible!
Пояснение задачи:
Суть задачи заключается в том чтобы исправить ошибку, которая возникает при попытке добавить хэш или объект в массив. При начале решения задачи даётся код, который надо отладить!
Платформа: CodeWars
Название задачи: Simple Fun #175: Same Encryption (Простое веселье)
Ссылка на задачу: https://www.codewars.com/kata/58b6c403a38abaaf6c00006b
Сложность: 7 kyu
Уже решили (На момент написания статьи): 424 из 2 266
Тэги: Головоломки, алгоритмы
Оригинальное описание задачи:
Task
John loves encryption. He can encrypt any string by the following algorithm:
take the first and the last letters of the word; replace the letters between them with their number; replace this number with the sum of it digits until a single digit is obtained.
Given two strings(
s1
ands2
), returntrue
if their encryption is the same, orfalse
otherwise.Example
For
s1 = "EbnhGfjklmjhgz" and s2 = "Eabcz"
, the result should betrue
."EbnhGfjklmjhgz" --> "E12z" --> "E3z" "Eabcz" --> "E3z" Their encryption is the same.
Input/Output
[input]
strings1
The first string to be encrypted.
s1.length >= 3
[input]
strings2
The second string to be encrypted.
s2.length >= 3
[output]
a boolean value
true
if encryption is the same,false
otherwise.
Пояснение задачи:
Задача состоит в том, чтобы проверить, совпадает ли результат шифрования двух строк по алгоритму Джона.
Этот алгоритм включает несколько шагов:
1. Берем первые и последние буквы каждой строки.
2. Удаляем все символы между первыми и последними буквами.
3. Заменяем каждую такую последовательность на сумму цифр ее длины.
4. Повторяем процесс до тех пор, пока не получим одну цифру.
Если две строки после такого шифрования становятся одинаковыми, они считаются совпадающими.
Пример:
Для строк `s1 = "EbnhGfjklmjhgz"` и `s2 = "Eabcz"`:
- `s1` превращается в `"E12z"`, затем в `"E3z"`.
- `s2` уже является однобуквенной строкой `"E3z"`.
Так как обе строки после шифрования равны `"E3z"`, они совпадают.
Таким образом, задачей является проверка того, совпадают ли зашифрованные версии двух строк.
Платформа: CodeWars
Название задачи: Regexp Basics - is it a eight bit unsigned number? (Основы regexp - это восемь бит без знака?)
Ссылка на задачу: https://www.codewars.com/kata/567e8f7b4096f2b4b1000005
Сложность: 7 kyu
Уже решили (На момент написания статьи): 1 473 из 10 824
Тэги: Регулярные выражения, основы
Оригинальное описание задачи:
Implement
String#eight_bit_number?
, which should return true if given object is a number representable by 8 bit unsigned integer (0-255),false
otherwise.It should only accept numbers in canonical representation, so no leading
+
, extra0
s, spaces etc.
Пояснение задачи:
Необходимо реализовать метод `String#eight_bit_number?`, который должен возвращать `true`, если переданный объект является числом, представимым с помощью 8-битного беззнакового целого числа (от 0 до 255), и `false` в противном случае. Метод должен принимать только числа в каноническом представлении, то есть без ведущего плюса, дополнительных нулей, пробелов и т.п.
Платформа: CodeWars
Название задачи: Dude, my computer cannot count! (Чувак, мой компьютер не может считать!)
Ссылка на задачу: https://www.codewars.com/kata/58fa9898dfec0ef150000014
Сложность: 6 kyu
Уже решили (На момент написания статьи): 441 из 1 185
Тэги: Параллелизм, отладка
Оригинальное описание задачи:
Remember the times when every website had a counter? A friend of yours runs one of those sites.
But as his site gains popularity, he observes some strange behavior: Sometimes, when there are many users accessing his page, the counter does not represent what he can get from the access logs.
Knowing your programming skills, he asks you to investigate. You look at his code and immediately see what's wrong: his VisitorStatistics implementation is not thread-safe.
"No big deal," you tell him. "I'll fix it in no time!"
Пояснение задачи:
Речь идёт о старой доброй практике размещения счётчиков посещений на веб-сайтах. Ваш друг владеет одним из таких сайтов, и замечает странное поведение: иногда, когда много пользователей одновременно заходят на страницу, счётчик показывает неверные данные, отличающиеся от тех, что видны в логах доступа.
Вы быстро понимаете проблему: реализация класса VisitorStatistics не является потокобезопасной. Потоки конкурируют за доступ к общему ресурсу (счётчику), что приводит к неправильным результатам.
Теперь ваша задача — исправить код, сделав его потокобезопасным, чтобы счётчик всегда отображал корректные данные независимо от количества одновременных запросов.
Платформа: CodeWars
Название задачи: Gambling Game Joker (Игра в азартные игры Джокер)
Ссылка на задачу: https://www.codewars.com/kata/621e323a98afab001628d9a0
Сложность: 6 kyu
Уже решили (На момент написания статьи): 232 из 995
Тэги: Основы, строки
Оригинальное описание задачи:
Popular gambling game Joker consists of drawing 6 balls from a drum on which are written numbers between 1 and 45. The winning joker number is formed from the drawn numbers so that in the same order in which the balls are drawn, we write down their last digits.
For example, if the numbers 12, 35, 1, 2, 23 and 39 are drawn in order, then it is a joker No. 251239.
1[2], 3[5], [1], [2], 2[3], 3[9] --> 251239
Players buy winning tickets and look forward to drawing and calculating the joker number to calculate their possible gain. The winnings of the ticket are calculated by comparing the serial number written on the ticket with the calculated joker number in a way to count how many last digits of these two numbers match, as shown in the following table.
Serial No. | Name of prize -----------+--------------- 251239 | I type X51239 | II type XX1239 | III type XXX239 | IV type XXXX39 | V type XXXXX9 | Losing card XXXXXX | Losing card
In the left column are the serial numbers of the tickets, where X denotes arbitrary digits. In the right column of the table are the winnings names for each of the serial number forms. So if the serial number is exactly equal to the Joker number then we get the gain of type I, if the last 5 digits are equal we get the gain of type II, and so on, until the gain of type V, the kind we get when the last two digits are equal. All other serials are not winning.
Write a program that will return the names of the winnings for a given Joker number and given tickets. The names of the winnings must be written exactly as written in the table above (the number of winnings is written in Roman numbers with capital letters ‘I’ and ‘V’, followed by a space and lowercase letters ‘type’).
Input
joker_nums --> an array of 6 numbers from which you have to make the winning Joker number
ticket_serials --> an array of 3 ticket serial numbers
Output
You should return a list with the names of the winnings for the 3 given tickets
joker_card([12, 35, 1, 2, 23, 39], ['151239', '251229', '251339']) --> ["II type", "Losing card", "V type"]
Note
- some tickets may have leading zeros
- some joker numbers may have leading zeros
- leading zeros still count towards the total
Problem taken from the Cantonal competition in Informatics 2016, Tuzla
Пояснение задачи:
Задача состоит в том, чтобы написать код, который определяет выигрышные номера билетов для лотереи "Джокер".
Игроки покупают билеты, и их выигрыш зависит от того, насколько совпадают последние цифры серийного номера билета с номером джокера.
Если последние цифры совпадают полностью, то билет считается выигрышным типа I, если совпадают все, кроме одной последней цифры, то билет типа II, и так далее, пока совпадают только две последние цифры, что дает выигрыш типа V.
Все остальные билеты считаются проигрышными.
Входные данные:
- `joker_nums`: массив из 6 чисел, которые формируют номер джокера.
- `ticket_serials`: массив из 3 строк, представляющих серийные номера билетов.
Выходные данные:
- Список с названиями выигрышей для каждого из трех билетов.
Примечание:
- Серийные номера билетов могут содержать ведущие нули.
- Номер джокера также может содержать ведущие нули.
- Ведущие нули учитываются при сравнении.
Платформа: CodeWars
Название задачи: Simple Fun #365: Remove Number Game I (Простое веселье)
Ссылка на задачу: https://www.codewars.com/kata/59e9576d7905dff72600001e
Сложность: 5 kyu
Уже решили (На момент написания статьи): 50 из 309
Тэги: Головоломки, игры, алгоритмы, основы
Оригинальное описание задачи:
Task
You are given two positive integers
n
andd
(n
is given by string fromat). And then, we are playing aRemove Number Game
:
1st turn, we remove a digit from
n
, that the resulting number has at least onenon-zero
digit and is divisible byd
.2nd turn, we remove a digit from
n
, that the resulting number has at least onenon-zero
digit and is divisible byd-1
.3rd turn, ................................divisible by
d-2
.ith turn, ................................divisible by
d-i+1
.And so on. Until
d-i+1
is decreased to 1 or you can not find a way to romove 1 digit fromn
and is divisible byd-i+1
.Your task is, determine the maximum possible number of turns you can make.
Still not understand the task? Look at the following examples:
Examples
For
n = "102045" and d = 4
, the output should be4
.turn 1: "102045" -> "10204" (remove 5 from n) "10204" is divisible by 4 turn 2: "10204" -> "0204" (remove 1 from n) "204" is divisible by 3 turn 3: "204" -> "20" (remove 4 from n) "20" is divisible by 2 turn 4: "20" -> "2" (remove 0 from n) "2" is divisible by 1 Perhaps there are many ways to playing this game. But the maximum possible number of turns should be 4.
For
n = "5555" and d = 3
, the output should be1
.Only 1 turn:
"5555"
->"555"
(divisible by 3),"555"
remove any digit5
will became to"55"
, but"55"
is not divisible by2
. So, after turn 1, the game is over.For
n = "88" and d = 2
, the output should be1
.Only 1 turn:
"88"
->"8"
(divisible by 2),"8"
can not remove digit again.For
n = "100000" and d = 4
, the output should be1
.Note that
"100000"
can only remove digit0
from it. If we removed digit1
,"00000"
is not a valid number.Note
2 <= n.length <= 15
1 <= d <= 15
Happy Coding
^_^
Пояснение задачи:
Задача состоит в том, чтобы определить максимальное количество ходов в игре, где игрок последовательно удаляет цифры из числа `n`, соблюдая следующие условия:
1. После каждого хода число должно иметь хотя бы одну ненулевую цифру.
2. Число должно быть кратно `d-i+1`, где `i` — номер хода.
3. Если после очередного хода условие 1 и 2 больше не выполняются, игра заканчивается.
Пример:
Для `n = "102045" и `d = 4`, можно сделать 4 хода:
- Первый ход: `"102045"` → `"10204"` (удаляем 5)
- Второй ход: `"10204"` → `"0204"` (удаляем 1)
- Третий ход: `"0204"` → `"204"` (удаляем 0)
- Четвертый ход: `"204"` → `"2"` (удаляем 0)
Максимальное количество ходов для этой игры — 4.
Задача требует найти максимальное количество ходов для разных входных данных, учитывая ограничения на длину числа `n` и значение `d`.
Платформа: CodeWars
Название задачи: Basic neural networks - Machine Learning #2 (Основные нейронные сети - машинное обучение)
Ссылка на задачу: https://www.codewars.com/kata/576af5056a3efe4b130020bd
Сложность: 5 kyu
Уже решили (На момент написания статьи): 102 из 408
Тэги: Машинное обучение, нейронные сети, игры, наука о данных
Оригинальное описание задачи:
Basic neural networks - Machine Learning #2
In machine learning and cognitive science, Artificial Neural Network (ANNs) are a family of models inspired by biological neural networks (the central nervous systems of animals, in particular the brain) which are used to estimate or approximate functions that can depend on a large number of inputs and are generally unknown.
In this kata series our main focus will be around (ANNs) because they are fundemental to Machine Learning. We will be useing the brain package to help us create an artificial neural network that we can use to solve simple problems. I won't go into depth about how to use brain because of the sheer amount of tutorials and examples available (I will post some below under the reference section).
Task
Your task is simple! You must use brain to process the results of a game of paper scissors rock and return the end state of the players, you will have to create training tests to train the brain, then your brain will be tested to return the correct result 100% of the time.
Input
The brain will take an array of
6
,0's
and1's
Player 1 Choice Player 2 Choice 1,0,0 Paper 1,0,0 Paper 0,1,0 Scissors 0,1,0 Scissors 0,0,1 Rock 0,0,1 Rock The table above indicates the format of the array and what numbers indicate the choices for each player.
Output
The brain must then return the state for each player.
Player 1 State Player 2 State 0 Loss 1 Win 1 Win 0 Loss 1 Tie 1 Tie The table above indicates the format of the array and what numbers indicate the state for each player.
IMPORTANT, It's important to note that all results will be rounded, the brain returns floating points numbers between
0
and1
, so all results will be rounded automatically.Examples
Below are some examples of input and output expected.
Input: [1,0,0,0,0,1]; Output: [1,0]; Input: [1,0,0,1,0,0]; Output: [1,1]; Input: [0,1,0,0,0,1]; Output: [0,1];
References
stackabuse - neural networks in javascript with brain js
heatonresearch - non mathematical introduction using neural networks
Пояснение задачи:
Задача состоит в том, чтобы использовать библиотеку *brain* для создания искусственной нейронной сети, которая будет обрабатывать результаты игры "камень, ножницы, бумага" и определять конечный результат для каждого игрока.
Мы будем обучать сеть на тестовых данных, а затем проверим ее точность.
Входные данные для сети будут представлять собой массив из 6 элементов, где каждый элемент соответствует выбору одного из игроков.
Например, `[1,0,0]` означает, что первый игрок выбрал "камень", второй — "бумагу".
Выходные данные должны содержать состояние для каждого игрока.
Например, если первый игрок проиграл, выходные данные могут быть `[0,1]`, что означает поражение первого игрока и победу второго.
Точность работы сети должна составлять 100%.
На этом всё, надеюсь, вам было интересно. Спасибо за уделённое время. Если у вас есть вопросы или пожелания, не стесняйтесь задавать их в комментариях. До новых встреч в следующих статьях, где мы продолжим решать интересные задачи вместе!