如何用Ruby实现求解含x的简单数学等式中缺失数字的算法
Ruby 实现 missing_digit 函数
实现逻辑
- 拆分输入字符串,提取等式两侧的操作数、运算符和结果
- 遍历0-9的所有数字,依次替换表达式中的
x字符 - 验证替换后的等式是否成立,匹配成功直接返回当前数字
- 除法场景额外处理整除判断和除0异常规避
代码实现
def missing_digit(str) # 拆分等式得到操作数、运算符、结果 left_num, operator, right_num, _, target = str.split (0..9).each do |digit| # 替换所有x为当前测试数字 a = left_num.gsub('x', digit.to_s).to_i b = right_num.gsub('x', digit.to_s).to_i res = target.gsub('x', digit.to_s).to_i # 按运算符校验等式 case operator when '+' return digit if a + b == res when '-' return digit if a - b == res when '*' return digit if a * b == res when '/' # 规避除0,同时保证整除避免浮点数误差 return digit if b != 0 && a % b == 0 && a / b == res end end end
测试用例验证
- 示例1:
missing_digit("4 - 2 = x")输出:2 - 示例2:
missing_digit("1x0 * 12 = 1200")输出:0 - 补充示例:
missing_digit("3x + 12 = 46")输出:4
内容的提问来源于stack exchange,提问作者mr_muscle
相关产品推荐
相关产品推荐

