Це надихнуло математичну проблему, яку я бачив десь в Інтернеті, але не пам’ятаю, де (ОНОВЛЕННЯ: Оригінальна проблема була знайдена в математичних загадках subreddit із підтвердженням того, що це можливо, також дивіться цей Math SE post ), запитуючи доказ того, що наступний процес можливий для будь-якої довільної пари цілих чисел (з того, що я пам’ятаю, це було можливим для будь-якої заданої пари):
Давши пару цілих чисел, j і k, подвійно одне з них і додайте одне до іншого, в результаті виходить пара нових цілих чисел, тобто (j, k) -> (j + 1, k * 2) або (j * 2, k + 1). Потім повторіть цей процес з цими цілими числами з метою, щоб пара цілих чисел була рівною.
Наведені приклади не обов'язково є оптимальними, але показують, як цей процес можна виконати для будь-яких цілих чисел, додатних, від'ємних або нульових:
(2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(5, 6) -> (6, 12) -> (7, 24) -> (14, 25) -> (28, 26) -> (56, 27) -> (112, 28) -> (113, 56) -> (226, 57) -> (227, 114) -> (228, 228)
(0, 2) -> (1, 4) -> (2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(-4, 0) -> (-3, 0) -> (-2, 0) -> (-1, 0) -> (0, 0)
(3, -1) -> (6, 0) -> (12, 1) -> (13, 2) -> (14, 4) -> (15, 8) -> (16, 16)
(-4, -3) -> (-8, -2) -> (-16, -1) -> (-32, 0) -> (-31, 0) -> ... -> (0, 0)
Виклик
Створіть програму, яка задала два цілі числа, виводить список кроків, необхідних для того, щоб ці цілі числа були рівними шляхом багаторазового збільшення одного і подвоєння іншого
Технічні умови
- Рішення не повинно бути оптимальним, але воно має вирішуватись у кінцевій кількості кроків для будь-якої довільної пари
Вхід має бути двома цілими числами
Вихідним може бути будь-який розумний вихід, який чітко позначає цілі числа кожного кроку, наприклад:
- рядок з двома різними роздільниками (будь-який символ, пробіл тощо), один для кожного цілого числа в парі та один для кожної пари
- наприклад, вхід j, k: 2, 5 -> вихід: 3,10; 6,11; 12,12
- список списків цілих чисел
- наприклад вхід j, k: 2, 5 -> вихід: [[3, 10], [6, 11], [12, 12]]
- рядок з двома різними роздільниками (будь-який символ, пробіл тощо), один для кожного цілого числа в парі та один для кожної пари
Якщо вхід - пара рівних чисел, ви можете виводити що завгодно, якщо це відповідає іншим нетривіальним відповідям
- наприклад
- якщо вхід [2, 5] має вихід [[3, 10], [6, 11], [12, 12]], який не включає вхідну пару, то вхід [4, 4] не повинен нічого робити.
- якщо вхід [2, 5] має вихід [[2, 5], [3, 10], [6, 11], [12, 12]], який дійсно включає вхідну пару, то вхід [4, 4] повинен вихід [[4, 4]].
- наприклад
Застосовуються стандартні методи вводу-виводу, а стандартні лазівки заборонені
Це кодовий гольф, тому найкоротша відповідь у байтах виграє
[(12,12),(6,11),(3,10),(2,5)]
Для введення (2,5)
?