Wprowadzenie
Wyobraź sobie, że jesteś na dwuwymiarowej płaszczyźnie kartezjańskiej i chcesz ustalić na niej swoją pozycję. Znasz 3 punkty na tym samolocie i odległość do każdego z nich. Chociaż zawsze można na tej podstawie obliczyć swoją pozycję, robienie tego w głowie jest dość trudne. Więc decydujesz się napisać do tego program.
Wyzwanie
Biorąc pod uwagę 3 punkty i odległość do nich, wypisz cordinata swojej pozycji.
- Dane wejściowe i wyjściowe mogą być w dowolnym dogodnym formacie, w tym przy użyciu liczb złożonych zamiast liczb rzeczywistych. W odpowiedzi proszę wyjaśnić, jakiego formatu używasz.
- Zawsze otrzymasz dokładnie 3 różne punkty wraz z odległością od Ciebie.
- Współrzędne i odległości będą zmienne z dowolną precyzją. Wynik musi być poprawny do 3 miejsc po przecinku. Zaokrąglanie zależy od ciebie. Proszę wyjaśnić w swojej odpowiedzi.
- Możesz założyć, że trzy punkty nie są współliniowe, więc zawsze będzie unikalne rozwiązanie.
- Nie możesz brutalnie wymusić rozwiązania.
- Nie możesz używać żadnych wbudowanych, które trywializują ten konkretny problem. Wbudowane normy wektorów itp. Są jednak dozwolone.
Wskazówka, aby rozpocząć:
Pomyśl o okręgu wokół każdego z tych 3 punktów, którego odległość od ciebie jest promieniem.
Zasady
- Dozwolona funkcja lub pełny program.
- Domyślne reguły wejścia / wyjścia.
- Obowiązują standardowe luki .
- To jest golf golfowy , więc wygrywa najmniej bajtów. Tiebreaker to wcześniejsze zgłoszenie.
Przypadki testowe
Format wejściowy dla jednego punktu tutaj jest [[x,y],d]
z x
i y
bycia współrzędnych i d
jest dystans do tego punktu. 3 z tych punktów są ułożone na liście. Wyjście będzie x
, a następnie y
na liście.
[[[1, 2], 1.414], [[1, 1], 2.236], [[2, 2], 1.0]] -> [2, 3] [[[24.234, -13,902], 31,46], [[12.3242, 234,12], 229,953], [[23,983, 0,321], 25,572]] -> [-1.234, 4.567] [[[973,23, -123.221], 1398.016], [[-12.123, -98.001], 990.537], [[-176.92, 0], 912.087]] -> [12.345, 892.234]
Za pomocą tego programu Pyth można generować dodatkowe przypadki testowe . Lokalizacja przebiega w pierwszym wierszu wejścia, a 3 punkty znajdują się w kolejnych 3 wierszach.
Happy Coding!
solve
(biorąc pod uwagę trzy równania kół) problem jest trywialny? Myślałem, że tak, ale jeśli nie masz nic przeciwko takim rzeczom, napiszę to.Odpowiedzi:
Desmos, 122 bajty
Korzystanie z Internetu . Skopiuj + wklej każde równanie do pola równania, kliknij „dodaj wszystko” dla każdego pola, następnie kliknij punkt przecięcia, a następnie wprowadź odpowiednio każdą wartość. każda
A
,B
iC
są odległości dla punktów(a,b)
,(c,d)
i(E,f)
, odpowiednio. Aby uzyskać pierwiastek kwadratowy z wartości, wpiszsqrt
następnie wartość w polu.Sprawdź pierwszy przypadek testowy .
Lub możesz zajrzeć tutaj:
źródło
C,
362348345 bajtówDane wejściowe są podawane jako sekwencja spacji oddzielonych spacją na standardowym wejściu:
x1 y1 d1 x2 y2 d2 x3 y3 d3
. Wyjście jest podobna na stdout:x y
.C
jest typem struktury, której członkowie są współrzędnymi x, współrzędnymia
yb
i odległość (promień)c
. Funkcjaf
przenosi dwieC
struktury i wskaźnik do pływaka i określa linię, na którejC
przecinają się (okręgi). Punkt przecięcia y tej linii jest umieszczany w pływaka wskazanym do, a nachylenie jest zwracane.Program wywołuje
f
dwie pary kół, a następnie określa przecięcie utworzonych linii.źródło
f
nigdy nie będą równoległe. Testy mają na celu upewnienie się, że nie są one również pionowe, ponieważ używam formy przechwytywania nachylenia. W ten sposób zawsze jest dokładnie jedna odpowiedź.Python - 172
Pobiera dane wejściowe jako listę krotek formy (x, y, d). Daj mi znać, jeśli znajdziesz sposób na grę w golfa dalej. Czuję, że musi być, ale nie mogę tego rozgryźć!
źródło
-1 if 1 else 1
może się-1if 1else 1
na przykład stać . Działa to również z nawiasami. Jest kilka miejsc, w których możesz z tego skorzystać..5
Jest również taki sam jak0.5
.