首页 > 解决方案 > 94个字符的一行任务,圆交叉

问题描述

我在这里发现了一个挑战:

https://www.codewars.com/kata/one-line-task-circle-intersection/train/javascript

编写一个函数,它接受两个点和两个相同大小的圆的半径,并返回两个圆相交的面积。

with(Math)circleIntersection=([a,b],[c,d],r)=>(l=hypot(a-c,b-d)/2/r)>1?0:2*r*r*(acos(l)-l*sqrt(1-l*l))|0

它表示该函数不应超过 94 个字符。我已尽力缩短函数,仍然有 104 个字符(函数名称不能更改)。有什么改进的办法吗?

标签: javascriptgeometryintersection

解决方案


我真的认为我的答案是最好的:-)

with(Math)circleIntersection=([a,b],[c,d],r)=>(-sin(x=2*acos(hypot(a-c,b-d)/2/r))+x)*r*r|0


推荐阅读