Вам надається масив / список / вектор пар цілих чисел, що представляють декартові координати точок на 2D евклідовій площині; всі координати між та , копії дозволені. Знайдіть площу опуклого корпусу цих точок, закруглену до найближчого цілого числа; точну середину слід округлювати до найближчого парного числа. Ви можете використовувати номери з плаваючою комою в проміжних обчисленнях, але тільки якщо ви можете гарантувати, що кінцевий результат буде завжди правильним. Це код-гольф , тому виграє найкоротша правильна програма.
Опукла оболонка безлічі точок є найменше опукле безліч, що містить . На площині Евкліда для будь-якої окремої точки - сама точка; для двох чітких точок - це пряма, що їх містить, для трьох неколінеарних точок - це трикутник, який вони утворюють тощо.
Хороше візуальне пояснення того, що опуклий корпус, найкраще описати як уявлення всіх точок як цвяхів на дерев'яній дошці, а потім натягування гумки навколо них, щоб укласти всі точки:
Деякі тестові випадки:
Input: [[50, -13]]
Result: 0
Input: [[-25, -26], [34, -27]]
Result: 0
Input: [[-6, -14], [-48, -45], [21, 25]]
Result: 400
Input: [[4, 30], [5, 37], [-18, 49], [-9, -2]]
Result: 562
Input: [[0, 16], [24, 18], [-43, 36], [39, -29], [3, -38]]
Result: 2978
Input: [[19, -19], [15, 5], [-16, -41], [6, -25], [-42, 1], [12, 19]]
Result: 2118
Input: [[-23, 13], [-13, 13], [-6, -7], [22, 41], [-26, 50], [12, -12], [-23, -7]]
Result: 2307
Input: [[31, -19], [-41, -41], [25, 34], [29, -1], [42, -42], [-34, 32], [19, 33], [40, 39]]
Result: 6037
Input: [[47, 1], [-22, 24], [36, 38], [-17, 4], [41, -3], [-13, 15], [-36, -40], [-13, 35], [-25, 22]]
Result: 3908
Input: [[29, -19], [18, 9], [30, -46], [15, 20], [24, -4], [5, 19], [-44, 4], [-20, -8], [-16, 34], [17, -36]]
Result: 2905