关于成绩如何计算的一点小建议

2018/02/26710 浏览综合
首先向开发者表示感谢,这个游戏挺有趣,为了通关还真是要费些心思。
强迫循环执行,不完整的逻辑支持(不支持else分支,不支持false判断)都增加了难度。最初习惯于按照以往经验来写程序,经常掉到坑里。
对于每一关的成绩如何计算,我个人有个小建议供开发者参考。可提供两种计算方法——
方法1、基于“完美的程序永远不会失败”原则的“完美得分计算”:
1.1、显然,有的程序策略不见得是100%成功的,所以提交的程序需要被运行n次(简单起见n可取100),如果有任何一次程序运行失败(超时,核心被摧毁...),则此程序得0分;
1.2、如果n次全都成功,则每一次的运行结果按照以下优先级顺序计算得分:运行时长>残血>代码行数。或许与开发者想表达的初衷不同,我个人比较倾向于将代码行数放在最后进行考量——两段代码,前者50行执行10秒钟达成,后者10行执行50秒钟达成,谁更优秀一些?我倾向于前者。虽然残血只能算是附加成就,但即便如此我也觉得比代码行数来得重要;
1.3、分数如何计算。建议回收足够多的用户代码样本并真实模拟后再进行归一化计算。可考虑给样本中单项成就最好者满分1分定锚,余者折算成百分比。各单项按权重累加。n次的结果应去掉前后各5%最优最差样本计算平均值;
方法2、相对宽容一点的计算方法,即便不是100%成功,也可以获得相应分数:
把上面的1.1改成运行n次,失败的单次得0分甚至给一定的惩罚扣分,运行成功的实例仍有得分。其余不变。
BTW,按方法1的话,我有几关也得不到分数了。囧
3
1
3