Я строю гигантского робота Lego, и мне нужно сгенерировать некоторые конкретные передаточные числа, используя набор передач. У меня много передач с общими размерами лего: 8, 16, 24 или 40 зубьев. Напишите программу, которую я могу использовать, где я вводю передаточное число, и программа говорит мне, какую комбинацию шестерен я должен использовать, чтобы получить требуемое передаточное число.
Отношение ввода будет указано на стандартном вводе (или эквиваленте вашего языка) с двумя целыми числами, разделенными двоеточием. Соотношение a:b
означает, что выходной вал должен вращаться a/b
так же быстро, как и входной вал.
Вывод в стандартный вывод должен быть отдельной строкой, содержащей разделенный пробелами список передаточных чисел, в виде x:y
где x
- размер шестерни на входном валу и y
размер шестерни на выходном валу. Вы должны использовать минимально возможное количество передач для данного передаточного числа. Каждый x
и y
должен быть одним из 8,16,24,40
.
Примеры:
1:5 -> 8:40
10:1 -> 40:8 16:8
9:4 -> 24:16 24:16
7:1 -> IMPOSSIBLE
7:7 ->
6:15 -> 16:40
Если желаемое передаточное число невозможно, выведите «Невозможно». Если никаких передач не требуется, выведите пустую строку.
Это код гольф, самый короткий ответ выигрывает.
1:5 -> 8:40
и 10:1 -> 40:8
имеет смысл, но другие не так много.
1:5
означает, что выходной вал вращается в 5 раз медленнее, и на этом происходит 8-зубчатая передача на входе и 40-зубчатая передача на выходе.
10:1 -> 40:8 16:8
не то, что ты сказал. Что насчет других смущает вас? 9:4
реализован, делая 3:2
дважды. 3:2
реализуется с помощью 24:16
.
7:7
так же, как 1:1
, так что не требует никаких механизмов для реализации.