Otrzymujesz tablicę / listę / wektor par liczb całkowitych reprezentujących współrzędne kartezjańskie punktów na płaszczyźnie euklidesowej 2D; wszystkie współrzędne mają wartości od do , dozwolone są duplikaty. Znajdź obszar wypukłego kadłuba tych punktów, zaokrąglony do najbliższej liczby całkowitej; dokładny punkt środkowy powinien być zaokrąglony do najbliższej liczby całkowitej. Liczb zmiennoprzecinkowych można używać w obliczeniach pośrednich, ale tylko wtedy, gdy można zagwarantować, że końcowy wynik będzie zawsze poprawny. To jest golf golfowy , więc wygrywa najkrótszy prawidłowy program.
Wypukłe kadłuba z zestawu punktów jest najmniejszy zbiór wypukły zawierający . Na płaszczyźnie euklidesowej dla każdego pojedynczego punktu jest to sam punkt; dla dwóch odrębnych punktów jest to linia je zawierająca, dla trzech niekolinearnych punktów jest to trójkąt, który tworzą i tak dalej.
Dobre wizualne wyjaśnienie, czym są wypukłe kadłuby, najlepiej opisać jako wyobrażenie sobie wszystkich punktów jako gwoździ w drewnianej desce, a następnie rozciągnięcie gumowej opaski wokół nich, aby zamknąć wszystkie punkty:
Niektóre przypadki testowe:
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
[[0, 0], [1, 1], [0, 1]]
Odpowiedzi:
SQL Server 2012+, 84 bajty
Wykorzystuje funkcje geometryczne i agregacje w SQL Server. Współrzędne są z tabeli
A
z kolumnamix
iy
.źródło
Java 10,
405... już nie pasowało; zobacz historię edycji.317316 bajtów-52 bajtów dzięki @ OlivierGrégoire
-3 bajtów dzięki @PeterTaylor
-7 bajtów dzięki @ceilingcat
Wypróbuj online.
Lub 299 bajtów bez zaokrąglenia .. .
Wyjaśnienie:
Są trzy kroki do zrobienia:
Aby obliczyć współrzędne wchodzące w skład wypukłego kadłuba, stosujemy następujące podejście:
Co do kodu:
źródło
Wolfram Language (Mathematica) , 27 bajtów
Wypróbuj online!
źródło
JavaScript (ES6),
191189 bajtówImplementuje marsz Jarvisa (inaczej algorytm pakowania prezentów).
Wypróbuj online!
Lub 170 bajtów bez uciążliwego schematu zaokrąglania.
źródło
R ,
858178 bajtówWypróbuj online!
Pobiera dane wejściowe jako macierz 2-kolumnową - pierwsza dla
x
, druga dlay
. Rround
faktycznie używa metody zaokrąglania przez bankiera, więc mamy tu szczęście.Dzięki Giuseppe za -3 bajty.
źródło
[Pakiet R + sp], 55 bajtów
Wypróbuj w RDRR
Funkcja, która pobiera macierz anx 2 i zwraca zaokrąglony obszar. To używa
sp
pakietu.drop=F
Jest potrzebne do obsługi sprawy jeden współrzędnych. RDRR używany do demonstracji, ponieważ TIO nie masp
pakietu.źródło