Latar Belakang:
Matematika operasi standar seperti penjumlahan dasar dan perkalian di dunia nyata bekerja seperti ini:
12 + 123 = 135
dan
12 * 123 = 1476
Itu tidak menarik dan tidak membosankan! Banyak sekolah sudah menafsirkan ini sebagai praktik, praktik, praktik algoritma formal. Itu menyiratkan diet matematika yang cukup kaku dan membosankan dan bukan yang dimaksudkan dalam tantangan ini. Bersiaplah untuk bersenang-senang di situs tercinta kami.
Pertimbangkan proses menambahkan dua bilangan bulat positif, lalu tambahkan lagi semua digit hasilnya. Mengulangi dengan penambahan sampai hanya satu digit yang diperoleh. Sebagai contoh:
- Hasilnya
12 + 123
adalah 135. - Menambahkan semua angka 135 kita dapatkan
1 + 3 + 5 = 9
.
Jumlah langkah yang diperlukan untuk mendapatkan nilai satu digit 9 dalam penambahan berulang ini adalah 2.
Seperti halnya proses penambahan sebelumnya, perkalian dua bilangan bulat positif mengikuti proses yang sama. Lipat gandakan semua digit hasilnya dan ulangi proses ini sampai hanya satu digit yang tersisa. Ambil contoh di atas:
- Hasilnya
12 * 123
adalah 1476. - Lipat gandakan semua angka 1476 yang kita dapatkan
1 * 4 * 7 * 6 = 168
. - Kalikan lagi semua angka 168 yang kita dapatkan
1 * 6 * 8 = 48
. - Kalikan lagi semua angka 48 yang kita dapatkan
4 * 8 = 32
. - Kalikan sekali lagi semua angka 32 yang kita peroleh
3 * 2 = 6
.
Jumlah langkah yang diperlukan untuk mendapatkan nilai satu digit 6 perkalian berulang ini adalah 5.
Demi tantangan ini dan menghindari penyalahgunaan notasi matematika, saya memperkenalkan dua notasi dummy ini: (+)
dan (*)
, tetapi Anda dapat menggunakan notasi yang Anda suka , yang berfungsi seperti berikut:
- Operasi proses penambahan berulang untuk mendapatkan nilai tunggal adalah
12 (+) 123 = 9
. - Pengoperasian proses multiplikasi berulang untuk mendapatkan nilai tunggal adalah
12 (*) 123 = 6
.
Tantangan:
Tantangannya adalah untuk menulis baik program atau fungsi yang dapat melakukan kedua operasi seperti yang dijelaskan di bagian latar belakang: (+)
dan (*)
.
Memasukkan:
Input dari program atau fungsi adalah dua bilangan bulat positif dan satu operasi baik (+)
dan (*)
. Format input adalah pilihan sewenang-wenang dari programmer . Anda dapat memformat input, misalnya, a (+) b
atau F(a, (+), b)
format apa pun yang Anda inginkan.
Keluaran:
Output dari program atau fungsi harus berisi hasil operasi dan jumlah langkah yang diperlukan dengan format gaya bebas seperti yang Anda inginkan.
Kasus Uji (abaikan format input dan output):
81 (+) 31 --> (4 ; 2)
351 (+) 14568 --> (6 ; 3)
21 (*) 111 --> (8 ; 3)
136 (*) 2356 --> (0 ; 2)
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte memenangkan tantangan.
Jangan biarkan esolang mencegah Anda mengirim jawaban dengan bahasa biasa. Nikmati tantangan ini dengan memberikan jawaban sesingkat mungkin dengan bahasa pemrograman Anda. Jika Anda memposting jawaban yang cerdas dan penjelasan yang jelas, jawaban Anda akan dihargai (karenanya upvotes) terlepas dari bahasa pemrograman yang Anda gunakan. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat, program lengkap, dll. Pilihan ada di tangan Anda.
- Jika memungkinkan, program Anda dapat menangani jumlah besar dengan benar. Jika tidak, itu akan baik-baik saja.