Chúng ta cần viết một hàm JavaScript nhận vào một dãy số và trả về dãy phép toán đúng để thỏa mãn phương trình. Các toán tử cho phép: (+, -, *, /, ^, %).
Ví dụ:
Input: 5 3 8 Output: 5+3=8 Input: 9 27 3 Output: 9=27/3 Input: 5 2 25, 1 5 2 Output: 5^2=25, 1=5%2
Mỗi đầu vào có ít nhất một giải pháp, chỉ cần trả về một giải pháp đúng.
Thuật toán:
- Chọn số lớn hơn đặt ở một vế.
- Đặt dấu "=" đối diện số giữa.
- Giải phương trình.
- Nếu không thành công, thử số khác.
Ví dụ
const arr = ["5 3 8", "9 27 3", "5 2 25", "1 5 2", "3 3 3 30"];
const findCombination = (arr = []) => {
const answers = [];
for(let i = 0; i < arr.length; i++){
const el = arr[i];
for(let n = 0; n < 1000; n++){
const s = el.replace(/ /g, () => "+- */^=%"[Math.floor(Math.random() * 7)]);
if(eval(s.replace(/=/g, "===").replace(/\^/g, "**")) === true
&& answers.indexOf(s) === -1){
answers.push(s);
};
};
}
return answers;
};
console.log(findCombination(arr));Kết quả
Kết quả in ra console:
[ '5+3=8', '9=27/3', '5^2=25', '1=5%2', '3=3%3^30', '3^3+3=30', '3+3^3=30' ]