Tło:
Standardowa matematyka operacji, taka jak podstawowe dodawanie i mnożenie w świecie rzeczywistym, działa w następujący sposób:
12 + 123 = 135
i
12 * 123 = 1476
To nie jest interesujące i nudne! Wiele szkół interpretuje to już jako praktykę, praktykę, praktykę algorytmów formalnych. Oznacza to dość sztywną i nudną dietę matematyczną i nie jest to cel tego wyzwania. Przygotuj się na zabawę na naszej ukochanej stronie.
Rozważ proces dodawania dwóch dodatnich liczb całkowitych, a następnie ponownego dodawania wszystkich cyfr jego wyniku. Powtarzanie z dodawaniem, dopóki nie zostanie uzyskana tylko jedna cyfra. Na przykład:
- Wynik
12 + 123
to 135. - Dodając wszystkie cyfry 135 otrzymujemy
1 + 3 + 5 = 9
.
Liczba kroków wymaganych do uzyskania wartości jednocyfrowej 9 w tym powtarzanym dodaniu wynosi 2.
Podobnie jak w poprzednim procesie dodawania, mnożenie dwóch dodatnich liczb całkowitych odbywa się w ten sam sposób. Pomnóż wszystkie cyfry wyniku, a następnie powtarzaj ten proces, aż pozostanie tylko jedna cyfra. Weź powyższy przykład:
- Wynik
12 * 123
to 1476. - Pomnóż wszystkie uzyskane liczby 1476
1 * 4 * 7 * 6 = 168
. - Pomnóż ponownie wszystkie otrzymane cyfry 168
1 * 6 * 8 = 48
. - Pomnóż ponownie wszystkie otrzymane cyfry 48
4 * 8 = 32
. - Pomnóżmy jeszcze raz wszystkie uzyskane cyfry 32
3 * 2 = 6
.
Liczba kroków wymaganych do uzyskania wartości jednocyfrowej 6 to powtarzane mnożenie wynosi 5.
Ze względu na to wyzwanie i unikanie niewłaściwego używania notacji matematycznych przedstawiam te dwa fikcyjne notacje: (+)
i (*)
, ale możesz użyć dowolnej notacji, którą lubisz , która działa jak poniżej:
- Proces powtarzanego dodawania w celu uzyskania pojedynczej wartości to
12 (+) 123 = 9
. - Operacja powtarzania procesu mnożenia w celu uzyskania pojedynczej wartości to
12 (*) 123 = 6
.
Wyzwanie:
Wyzwanie polega na napisaniu programu lub funkcji, która może wykonywać obie operacje, jak wyjaśniono w części dotyczącej tła: (+)
i (*)
.
Wejście:
Wejściami programu lub funkcji są dwie dodatnie liczby całkowite i jedna operacja (+)
oraz (*)
. Format danych wejściowych jest arbitralnym wyborem programisty . Możesz formatować wejściowe, na przykład, a (+) b
lub F(a, (+), b)
lub dowolnego formatu chcesz.
Wynik:
Dane wyjściowe programu lub funkcji muszą zawierać wynik operacji i liczbę kroków wymaganych w formacie freestyle zgodnie z życzeniem.
Przypadki testowe (zignoruj format wejściowy i wyjściowy):
81 (+) 31 --> (4 ; 2)
351 (+) 14568 --> (6 ; 3)
21 (*) 111 --> (8 ; 3)
136 (*) 2356 --> (0 ; 2)
Główne zasady:
- To jest golf golfowy , więc najkrótsza odpowiedź w bajtach wygrywa.
Nie pozwól, by esolangi zniechęcały Cię do publikowania odpowiedzi w zwykłych językach. Podejmij wyzwanie, udzielając możliwie najkrótszej odpowiedzi w języku programowania. Jeśli zamieścisz sprytną odpowiedź i jasne wyjaśnienie, Twoja odpowiedź zostanie doceniona (stąd głosy poparcia) niezależnie od używanego języka programowania. - Odpowiedzi dotyczą standardowe zasady , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami, pełnych programów itp. Wybór należy do Ciebie.
- Jeśli to możliwe, twój program może poprawnie obsługiwać duże liczby. Jeśli nie, będzie dobrze.