javascript - 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 个字符(函数名称不能更改)。有什么改进的办法吗?
解决方案
我真的认为我的答案是最好的:-)
with(Math)circleIntersection=([a,b],[c,d],r)=>(-sin(x=2*acos(hypot(a-c,b-d)/2/r))+x)*r*r|0
推荐阅读
- ruby - 根据两个属性对哈希数组进行排序
- android - Firebase Crashlytics 不会在没有 VPN 代理的情况下将崩溃发送到控制台
- python - PyCharm 将所有 txt 文件视为需求文件
- python - 事件调用未更改数组后半部分的条形颜色
- regex - 否定正则表达式的匹配结果
- shell - 我想以指定格式 HH:MM:SS 在 shell 脚本中获取本地时间
- java - 递归java方法和xml解析
- macos - 是否有任何解决方案可用于 Mac 操作系统的 VSTO 插件支持?
- ruby - Test::Unit::TestCase 中 `#cleanup` 和 `#teardown` 的区别
- r - 转换数据框的列和行