Lý lịch:
Toán học hoạt động tiêu chuẩn như phép cộng và phép nhân cơ bản trong thế giới thực hoạt động như sau:
12 + 123 = 135
và
12 * 123 = 1476
Điều đó không thú vị và nhàm chán! Nhiều trường đã diễn giải điều này như thực hành, thực hành, thực hành các thuật toán chính thức. Điều đó ngụ ý một chế độ ăn uống toán học khá cứng nhắc và nhàm chán và không phải là những gì được dự định trong thử thách này. Hãy sẵn sàng để chơi một số niềm vui trên trang web yêu thích của chúng tôi.
Xem xét quá trình thêm hai số nguyên dương, sau đó thêm lại tất cả các chữ số của kết quả. Lặp lại với phép cộng cho đến khi chỉ thu được một chữ số duy nhất. Ví dụ:
- Kết quả
12 + 123
là 135. - Thêm tất cả các chữ số của 135 chúng tôi có được
1 + 3 + 5 = 9
.
Số bước cần thiết để có được một giá trị một chữ số 9 trong phần bổ sung lặp lại này là 2.
Như với quá trình bổ sung trước đó, phép nhân của hai số nguyên dương theo cùng một quy trình. Nhân tất cả các chữ số của kết quả của nó và sau đó lặp lại quá trình này cho đến khi chỉ còn lại một chữ số. Lấy ví dụ trên:
- Kết quả
12 * 123
là 1476. - Nhân tất cả các chữ số của 1476 chúng tôi thu được
1 * 4 * 7 * 6 = 168
. - Nhân lại tất cả các chữ số của 168 chúng ta thu được
1 * 6 * 8 = 48
. - Nhân lại tất cả các chữ số của 48 chúng tôi thu được
4 * 8 = 32
. - Nhân một lần nữa tất cả các chữ số của 32 chúng tôi thu được
3 * 2 = 6
.
Số bước cần thiết để có được một giá trị một chữ số 6 phép nhân lặp lại này là 5.
Vì lợi ích của thử thách này và tránh mọi hành vi lạm dụng các ký hiệu toán học, tôi giới thiệu hai ký hiệu giả này: (+)
và (*)
, nhưng bạn có thể sử dụng bất kỳ ký hiệu nào bạn thích , hoạt động như sau:
- Hoạt động của quá trình bổ sung lặp đi lặp lại để có được một giá trị duy nhất là
12 (+) 123 = 9
. - Hoạt động của quá trình nhân lặp lại để có được một giá trị duy nhất là
12 (*) 123 = 6
.
Thử thách:
Thách thức là viết một chương trình hoặc một chức năng có thể thực hiện cả hai thao tác như được giải thích trong phần nền: (+)
và (*)
.
Đầu vào:
Các đầu vào của chương trình, chức năng là hai số nguyên dương và một hoạt động hoặc (+)
và (*)
. Định dạng của đầu vào là một lựa chọn tùy ý của lập trình viên . Bạn có thể định dạng đầu vào, ví dụ, a (+) b
hoặc F(a, (+), b)
hoặc bất kỳ định dạng mà bạn muốn.
Đầu ra:
Đầu ra của chương trình hoặc hàm phải chứa kết quả hoạt động và số bước cần thiết với định dạng tự do như bạn muốn.
Các trường hợp thử nghiệm (bỏ qua định dạng đầu vào và đầu ra):
81 (+) 31 --> (4 ; 2)
351 (+) 14568 --> (6 ; 3)
21 (*) 111 --> (8 ; 3)
136 (*) 2356 --> (0 ; 2)
Quy tắc chung:
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất tính bằng byte sẽ chiến thắng thử thách.
Đừng để esolang ngăn cản bạn đăng câu trả lời bằng các ngôn ngữ thông thường. Tận hưởng thử thách này bằng cách cung cấp câu trả lời càng ngắn càng tốt với ngôn ngữ lập trình của bạn. Nếu bạn đăng một câu trả lời thông minh và một lời giải thích rõ ràng, câu trả lời của bạn sẽ được đánh giá cao (do đó các upvote) bất kể ngôn ngữ lập trình bạn sử dụng. - Các quy tắc chuẩn áp dụng cho câu trả lời của bạn, vì vậy bạn được phép sử dụng STDIN / STDOUT, các hàm / phương thức với các tham số phù hợp, các chương trình đầy đủ, v.v. Sự lựa chọn là của bạn.
- Nếu có thể, chương trình của bạn có thể xử lý số lượng lớn. Nếu không, điều đó sẽ ổn thôi.