Saya melihat pertanyaan membingungkan baru-baru ini:
Tambahkan tanda kurung untuk menjadikan ini benar
Dan melihat bahwa satu jawaban menggunakan skrip Python untuk mencoba semua kemungkinan .
Tantangan Anda adalah, diberi ekspresi (sebagai string) dan integer, adalah membuat program yang dapat menentukan apakah Anda dapat menambahkan parens untuk membuat ekspresi sama dengan integer.
Misalnya, jika ekspresi adalah 1 + 2 * 3dan bilangan bulat 9, maka Anda dapat menambahkan parens seperti (1 + 2) * 3, yang sama dengan 9, sehingga hasilnya harus benar. Tetapi jika ekspresi itu 1 + 2 - 3 * 4 / 5dan bilangan bulatnya adalah 9999999999999, Anda tidak bisa menambahkan jumlah parens apa pun untuk menyamakan itu 9999999999999, jadi outputnya harus falsey.
Perhatikan bahwa input bilangan bulat mungkin positif atau negatif, tetapi ekspresi hanya akan mengandung bilangan bulat positif. Bahkan, ekspresi akan selalu cocok (\d+ [+*/-] )+ \d(regex). Dengan kata lain, tidak ada parens, ada eksponen, hanya +, -, *dan /. Pesanan operator standar ( *dan /, kemudian+ dan -).
Lebih banyak kasus uji:
1 + 2 - 3 * 4 / 9 and -1 -> truthy, ((1 + 2) - (3 * 4)) / 9
10 - 9 * 8 - 7 * 6 - 5 * 4 - 3 * 2 - 2 * 1 and 1, falsey, see linked question
10 + 9 - 8 * 7 + 6 - 5 * 4 + 3 - 2 * 1 and 82 -> truthy, (10 + (9 - 8)) * 7 + (6 - 5) * 4 + 3 - 2 * 1
34 + 3 and 15 -> falsey
1 + 2 + 5 + 7 and 36 -> falsey
1 / 10 * 3 + 3 / 10 * 10 and 6 -> truthy, (1/10*3+3/10)*10
Ada pertanyaan?
Anda dapat mengeluarkan ekspresi dengan tanda kurung jika memungkinkan, misalnya (10 + (9 - 8)) * 7 + (6 - 5) * 4 + 3 - 2 * 1untuk kasus uji terakhir. Saya lebih suka ini daripada hanya nilai kebenaran, tetapi terserah Anda. Penggunaan 2(5)untuk penggandaan tidak diperbolehkan, hanya saja *.
3 / 2 - 1 - 1 and 2 -> 3 / (2 - 1) - 1
/Apakah divisi float, kan?