Convex hull: Difference between revisions
Content added Content deleted
(→{{header|Kotlin}}: solution) |
|||
Line 1,526: | Line 1,526: | ||
</html> |
</html> |
||
</lang> |
</lang> |
||
=={{header|jq}}== |
|||
{{trans|Wren}} |
|||
{{works with|jq}} |
|||
'''Works with gojq, the Go implementation of jq''' |
|||
<lang jq># ccw returns true if the three points make a counter-clockwise turn |
|||
def ccw(a; b; c): |
|||
a as [$ax, $ay] |
|||
| b as [$bx, $by] |
|||
| c as [$cx, $cy] |
|||
| (($bx - $ax) * ($cy - $ay)) > (($by - $ay) * ($cx - $ax)) ; |
|||
def convexHull: |
|||
if . == [] then [] |
|||
else sort as $pts |
|||
# lower hull: |
|||
| reduce $pts[] as $pt ([]; |
|||
until (length < 2 or ccw(.[-2]; .[-1]; $pt); .[:-1] ) |
|||
| . + [$pt] ) |
|||
# upper hull |
|||
| (length + 1) as $t |
|||
| reduce range($pts|length-2; -1; -1) as $i (.; |
|||
$pts[$i] as $pt |
|||
| until (length < $t or ccw(.[-2]; .[-1]; $pt); .[:-1] ) |
|||
| . + [$pt]) |
|||
| .[:-1] |
|||
end ;</lang> |
|||
'''The task''' |
|||
<lang jq>def pts: [ |
|||
[16, 3], [12, 17], [ 0, 6], [-4, -6], [16, 6], |
|||
[16, -7], [16, -3], [17, -4], [ 5, 19], [19, -8], |
|||
[ 3, 16], [12, 13], [ 3, -4], [17, 5], [-3, 15], |
|||
[-3, -9], [ 0, 11], [-9, -3], [-4, -2], [12, 10] |
|||
]; |
|||
"Convex Hull: \(pts|convexHull)"</lang> |
|||
{{out}} |
|||
<pre> |
|||
Convex Hull: [[-9,-3],[-3,-9],[19,-8],[17,5],[12,17],[5,19],[-3,15]] |
|||
</pre> |
|||
=={{header|Julia}}== |
=={{header|Julia}}== |