Pertanyaan ini terinspirasi oleh jawaban ini . Secara kebetulan, saya biasa menggunakan Penggandaan Ethiopia ketika saya masih kecil, tetapi belum pernah tahu nama metode ini sampai saat ini.
Perkalian Ethiopia adalah metode mengalikan bilangan bulat dengan hanya menggunakan penjumlahan, penggandaan, dan separuh.
Metode:
- Ambil dua angka untuk dikalikan dan tuliskan di atas dua kolom.
- Di kolom sebelah kiri berulang kali membagi dua angka terakhir, membuang sisa, dan menulis hasilnya di bawah yang terakhir di kolom yang sama, sampai Anda menulis nilai 1.
- Di kolom kanan berulang kali gandakan angka terakhir dan tulis hasilnya di bawah ini. berhenti ketika Anda menambahkan hasil di baris yang sama dengan tempat kolom sebelah kiri menunjukkan 1.
- Periksa tabel yang dihasilkan dan buang baris mana pun yang nilainya berada di kolom kiri. Jumlahkan nilai di kolom kanan yang tetap menghasilkan hasil dari mengalikan dua angka asli bersama-sama.
Misalnya: 17 x 34
17 34
Membagi dua kolom pertama:
17 34
8
4
2
1
Menggandakan kolom kedua:
17 34
8 68
4 136
2 272
1 544
Baris pemogokan yang sel pertamanya genap, kita akan melakukan ini dengan membungkus angka-angka di sebelah kanan dalam tanda kurung siku:
17 34
8 [68]
4 [136]
2 [272]
1 544
Jumlahkan angka yang tersisa di kolom kanan:
17 34
8 [68]
4 [136]
2 [272]
1 544
=====
578
Jadi 17 dikalikan 34, dengan metode Ethiopia adalah 578.
Tugas:
Kode golf yang mengambil dua angka antara 1 dan 1000 dan melakukan tata letak dan algoritma yang sama, menampilkan produk di bawah ini.
Metode Input: Namun Anda memilih ...
Input Contoh:
19 427
Output yang dihasilkan:
19 427
9 854
4 [1708]
2 [3416]
1 6832
======
8113
Harap perhatikan penyelarasan digit. Ini paling penting dalam tata letak. Perhatikan juga bahwa garis ganda yang disusun oleh tanda sama harus dua karakter lebih panjang dari jawaban keseluruhan dan harus dibenarkan tengah.
Pengujian
Bagaimana Anda akan menguji ini? Dengan menjalankan program Anda menggunakan dua angka. Angka-angka ini dapat diekstraksi dari nomor ID pengguna Anda (ini dapat diperoleh dengan mengarahkan kursor Anda di atas avatar Anda di jendela atas). Ambil nomor Anda dan ambil tiga digit terakhir, ini akan menjadi nomor B, ambil apa pun yang tersisa di depan, yang akan menjadi nomor A. Kemudian uji A kali B.
Contoh pengujian:
Nomor ID pengguna saya adalah 8555, jadi angka saya adalah 8 dan 555. Jadi output saya akan terlihat seperti ini:
8 [555]
4 [1110]
2 [2220]
1 4440
======
4440
Pembatasan:
Tidak ada operator perkalian asli yang diizinkan untuk disimpan dalam penggunaan "penggandaan", sebagaimana disebutkan dalam algoritma. Dengan kata lain, jika Anda menggunakan operator seperti *, itu hanya dapat digunakan untuk mengalikan dengan 2 saja.
Entri yang tidak mematuhi ini tidak akan dipertimbangkan dan pengguna akan diantar keluar dari tempat itu dengan kotak kardus yang penuh dengan barang-barang mereka. Setiap entri akan memiliki kode, ditambah tes berdasarkan pada nomor ID pengguna Anda.
Ini kode golf. Jumlah byte terpendek akan menerima hadiah, kemuliaan, dan kekaguman dari rekan-rekan mereka ... (Dan mungkin sebuah Lamborghini ... Aku berkata "mungkin"!)
*
ataux
), tetapi tidak mungkin untuk mendeteksi apakah perkalian digunakan atau tidak. Kecuali bagian itu, tantangannya menarik.