94 символа одна строка задачи, круг-пересечение - PullRequest
0 голосов
/ 05 мая 2018

Я нашел вызов здесь:

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 символа (имя функции не может быть изменено). Есть идеи по улучшению?

1 Ответ

0 голосов
/ 28 мая 2018

Я действительно считаю, что мой ответ самый лучший: -)

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