2
数学表达式摊牌!
系统会为您提供6个数字:5个数字[0-9]和一个目标数字。您的目标是将运算符散布在数字之间,以尽可能接近目标。你必须使用每个数字恰好一次,可以使用下面的运营商 多达你想要的时间:+ - * / () ^ sqrt sin cos tan。例如,如果给出的话,8 2 4 7 2 65我可以输出82-(2*7)-4。评估结果为64,因此我的得分是1,因为我离目标1分。注意:不能在数字之间放置小数点。 我正在使用此StackOverflow答案中的代码来评估数学表达式。在该问题的底部,可以使用一些程序进行测试。 链接功能(更新!) @mdahmoune揭示了这一挑战的新高度。因此,我要添加一个新功能:链接一元函数。这适用于sin,cos,tan和sqrt。现在sin(sin(sin(sin(10))))您可以写作,而不是写作sin_4(10)。在评估器中试用! 输入值 200个行分隔的5位数字的测试用例和一个目标数字,以空格分隔。您可以使用问题底部的程序来制作示例测试用例,但是我将拥有自己的测试用例以进行官方评分。测试用例分为40个测试的5个部分,目标数量的范围如下: 第1节:[0,1](至5个小数点) 第2节:[0,10](至4个小数点) 第3节:[0,1000](至3个小数点) 第4节:[0,10 6 ](至1个小数点) 第5节:[0,10 9 ](至0个小数点) 输出量 200行分隔的数学表达式。例如,如果测试用例为5 6 7 8 9 25.807,则可能的输出为78-59+6 计分 每个回合的目标是比其他竞争计划更接近目标人数。我将使用Mario Kart 8得分,即:。如果多个答案获得相同的准确分数,则将分数平均分配,四舍五入到最接近的整数。例如,如果并列第5-8位的程序,则它们各自在该回合中获得(8 + 7 + 6 + 5)/ 4 = 6.5 …