Terinspirasi oleh jawaban ini (penekanan pada saya):
Kami akan memainkan game. Misalkan Anda memiliki nomor x . Anda mulai dengan x dan kemudian Anda dapat menambah, mengurangi, mengalikan, atau membagi dengan bilangan bulat apa pun, kecuali nol. Anda juga bisa mengalikan dengan x . Anda dapat melakukan hal-hal ini sebanyak yang Anda inginkan. Jika total menjadi nol, Anda menang.
Misalnya, anggap x adalah 2/3. Kalikan dengan 3, lalu kurangi 2. Hasilnya adalah nol. Kamu menang!
Misalkan x adalah 7 ^ (1/3). Kalikan dengan x , lalu x lagi, lalu kurangi 7. Anda menang!
Misalkan x adalah √2 + √3. Di sini tidak mudah untuk melihat bagaimana menang. Tetapi ternyata jika Anda mengalikan x , kurangi 10, kalikan x dua kali, dan tambah 1, maka Anda menang. (Ini seharusnya tidak jelas; Anda dapat mencobanya dengan kalkulator Anda.)
Tetapi jika Anda mulai dengan x = π, Anda tidak bisa menang. Tidak ada cara untuk beralih dari π ke 0 jika Anda menambahkan, mengurangi, mengalikan, atau membagi dengan bilangan bulat, atau mengalikan dengan π, tidak peduli berapa banyak langkah yang Anda ambil. (Ini juga tidak seharusnya jelas. Itu adalah hal yang sangat rumit!)
Angka seperti √2 + √3 dari mana Anda bisa menang disebut aljabar . Angka seperti π yang tidak dapat Anda menangkan disebut transendental.
Mengapa ini menarik? Setiap angka aljabar terkait secara hitung dengan bilangan bulat, dan gerakan yang menang dalam permainan menunjukkan kepada Anda bagaimana hal itu terjadi. Jalan menuju nol mungkin panjang dan rumit, tetapi setiap langkah sederhana dan ada jalan. Tetapi bilangan transendental berbeda secara mendasar: bilangan transendental tidak terkait secara hitung dengan bilangan bulat melalui langkah-langkah sederhana.
Pada dasarnya, Anda akan menggunakan langkah-langkah yang digunakan dalam pertanyaan yang dikutip di atas untuk "memenangkan" game untuk input yang diberikan.
Dengan konstanta aljabar nyata, xkonversikan bilangan menjadi nol dengan menggunakan operasi yang diizinkan berikut ini:
- Tambahkan atau Kurangi bilangan bulat.
- Lipat gandakan atau Bagi dengan bilangan bulat bukan nol.
- Kalikan dengan konstanta asli
x.
Input adalah string yang mungkin mengandung bilangan bulat, penjumlahan, pengurangan, perkalian, pembagian, eksponensial (pilihan Anda **atau ^, eksponen digunakan untuk mewakili akar), dan tanda kurung. Spasi dalam input adalah opsional, tetapi tidak dalam output. Anda harus menampilkan langkah-langkah yang diperlukan untuk mendapatkan hasil nol, jadi mengalikan dengan 7satu langkah akan menjadi hasil sebagai *7. Ruang tambahan dan / atau baris baru diizinkan.
Contohnya
0 -> +0 (or any other valid, or empty)
5/7 + 42 -> -42 *7 -5 (or shorter: *7 -299)
2^(1/3) -> *x *x -2
5*(3**(1/4)) -> *x *x *x -1875
2^(1/2)+3^(1/2) -> *x -10 *x *x +1
Kode terpendek menang.
x^4-10*x^2+1. Lihat WolframAlpha

0hasil yang perlu dilakukan? Mengingat kesalahan pembulatan dan presisi float, saya dapat dengan mudah melihat situasi bermasalah ...