前言
当我今天早些时候在射箭900圈时(10头结束时每箭6箭,10头结束时每箭3箭,总共90箭,最高得分900),我想到了这一挑战。
在射箭比赛中(假设您使用FITA提供的目标面孔 [射击的纸张]射击),对于每个箭头,您的最高得分为10。目标面孔包含10或11个直径逐渐减小的环,彼此嵌套。从内圈向外,从10点算到一个点(在11个圈的情况下,存在第二个最里面的圈,记为“ X”,得分为10,但在打破平局的情况下使用:较高的值)。观察:
当然,我指的是FITA度量标准评分,如上图所示。如果仔细观察,您可能会看到最里面的环,它是一条淡淡的虚线,其分数未标记。那就是我所指的“ X”,但是除非您争夺奖金,否则您不必理会。
挑战
创建一个函数(或完整程序,如果该语言不支持该函数),则接收一个完美的正方形图像作为输入(或图像文件名,如果需要的话),其中包含一定数量的绿色(十六进制#00FF00,RGB(0, 255,0))点的大小,并返回分数。图像中可能包含绿点以外的数据,但绿色始终是完全相同的阴影。
您可能会想像正方形图像代表目标脸,最外面的环在4个点(顶部中心,底部中心,右中心,左中心)接触。所表示的目标面部将始终具有相同的比例,所有环的宽度都恰好是输入目标图像宽度的1/20。例如,给定输入尺寸为400px x 400px的输入图像,您可以假定每个环的内部宽度均为20px,如下所示:
澄清说明
- 如果触摸两个单独的环,则计算两个环中的较高者
- 您无需自动解决未命中或“ x”的情况,除非尝试获得奖金
- 您可以假设没有绿色圆圈重叠
- 您还可以假设图像中没有其他那种绿色阴影的像素
- 图片将采用PNG,JPEG或PPM格式(您可以选择)
- 如果在发布此问题之前进行创作,则允许使用外部图像处理库
- 您可以假设一个目标上的所有绿色圆圈的直径相同
- 如果拍摄(哈哈)重叠的圆圈奖励,则可以假设图像中至少一个圆圈没有另一个重叠的圆圈
- 不允许出现标准漏洞
测试用例
以下两种情况应分别获得52分(或在奖金为52分时有1个“ x”和1个未中):
最后一个测试用例应得分25:
奖金
- 如果还返回未命中数(在任何环之外),则为-25个字节
- 如果您还返回Xs的量,则为-30个字节(假设最里面的x是图像宽度的3/100,然后10是图像宽度的2/100。1-9的比例保持不变)
- 如果您考虑重叠的圆圈,则字节计数为-35%
这是代码高尔夫球,因此最少的字节获胜。玩得开心!