Фон:
Стандартна математика роботи, як базове додавання та множення в реальному світі, працює так:
12 + 123 = 135
і
12 * 123 = 1476
Це не цікаво і нудно! Багато шкіл вже трактують це як практику, практику, практику офіційних алгоритмів. Це передбачає досить жорстку і нудну математичну дієту, і це не те, що призначено в цьому виклику. Будьте готові пограти весело на нашому улюбленому сайті.
Розглянемо процес додавання двох додатних цілих чисел, а потім знову додаємо всі цифри його результату. Повторюючи з додаванням, поки не вийде лише одна цифра. Наприклад:
- Результат
12 + 123
- 135. - Додаючи всі цифри 135, отримані нами
1 + 3 + 5 = 9
.
Кількість кроків, необхідних для отримання одноцифрового значення 9 у цьому повторному додаванні, становить 2.
Як і в попередньому процесі додавання, множення двох додатних цілих чисел слідує за тим самим процесом. Помножте всі цифри його результату, а потім повторюйте цей процес, поки не залишиться лише одна цифра. Візьмемо наведений вище приклад:
- Результат
12 * 123
- 1476 рік. - Помножте всі отримані цифри 1476
1 * 4 * 7 * 6 = 168
. - Помножимо ще раз усі отримані цифри 168
1 * 6 * 8 = 48
. - Помножимо ще раз усі цифри 48, які ми отримаємо
4 * 8 = 32
. - Помножимо ще раз усі цифри 32, які ми отримаємо
3 * 2 = 6
.
Кількість етапів, необхідних для отримання одноцифрового значення 6 цього повторного множення, становить 5.
Для цього виклику та уникнення будь-якого зловживання математичними позначеннями я ввожу ці дві фіктивні позначення: (+)
і (*)
, але ви можете використовувати будь-які позначення, які вам подобаються , які діють як наступні:
- Операція повторного процесу додавання для отримання єдиного значення є
12 (+) 123 = 9
. - Операція повторного процесу множення для отримання єдиного значення є
12 (*) 123 = 6
.
Виклик:
Завдання полягає в тому, щоб написати або програму, або функцію, яка може виконувати обидві операції, як пояснено у фоновому розділі: (+)
і (*)
.
Вхід:
Вхідними програмами або функцією є два натуральних числа і одна операція або (+)
і (*)
. Формат вводу - це довільний вибір програміста . Ви можете форматувати введення, наприклад, a (+) b
або , F(a, (+), b)
або будь-який формат , який ви хочете.
Вихід:
Вихід програми або функції повинен містити результат роботи та кількість кроків, необхідних для формату фрістайлу, як бажаєте.
Випробування (ігноруйте формат введення та виведення):
81 (+) 31 --> (4 ; 2)
351 (+) 14568 --> (6 ; 3)
21 (*) 111 --> (8 ; 3)
136 (*) 2356 --> (0 ; 2)
Загальні правила:
- Це код-гольф , тому найкоротша відповідь у байтах виграє виклик.
Не дозволяйте esolangs відбивати вас від публікації відповіді звичайними мовами. Насолоджуйтесь цим завданням, надаючи відповідь якомога коротше за допомогою мови програмування. Якщо ви опублікуєте розумну відповідь і чітке пояснення, ваша відповідь буде оцінена (звідси і відгуки) незалежно від мови програмування, яку ви використовуєте. - Для вашої відповіді застосовуються стандартні правила , тому вам дозволяється використовувати STDIN / STDOUT, функції / метод з відповідними параметрами, повноцінні програми тощо. Вибір за вами.
- По можливості ваша програма може правильно обробляти велику кількість. Якщо ні, то це буде просто добре.