Biorąc pod uwagę dwa punkty A
i B
, znajdź kąt od linii AO
do linii BO
wokół punktu, z O
którego O
pochodzi początek ( (0,0)
). Dodatkowo kąt może być dodatni lub ujemny w zależności od położenia punktów (patrz przykłady). Dane wejściowe będą punktami A
i B
mogą być podane w dowolnej dogodnej formie. Wyjściowy będzie kąt w stopniach (ale jest dodatni, jeśli AO
zostanie obrócony przeciwnie do ruchu wskazówek zegara wokół początku, BO
a ujemny, jeśli zostanie obrócony zgodnie z ruchem wskazówek zegara). Jeśli kąt wynosi 180 stopni, możesz zwrócić wynik ujemny lub dodatni. Podobnie, kąt może być dodatnią lub ujemną wersją tego samego kąta ( 90 deg
jest równy -270 deg
). Przykłady:
Dane wejściowe: Dane
A(5,5) B(5,-5)
wyjściowe:-90
( aby uzyskać stopnieAO
obrotu ).-90
BO
Dane wejściowe: Dane
A(5,-5) B(5,5)
wyjściowe:90
( aby uzyskać stopnieAO
obrotu ).90
BO
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
źródło
(0,0)
?AO
iBO
byłby zwykle nazywany kątemAOB
.Odpowiedzi:
Pyth, 11 bajtów
Demonstracja
Dane wejściowe są podawane w formacie:
Jeśli pożądane jest, aby A był pierwszy, można to zmienić na 1 bajt.
Wyjaśnienie:
źródło
TI-BASIC, 13 bajtów
Do kalkulatorów serii TI-83 + / 84 +.
Aby użyć tego programu, wprowadź listę
{x1,x2}
za pomocą zmiennej Ans i{y1,y2}
po monicie.źródło
ΔList(
, to jeden bajt każda. Obejmuje toR►Pθ(
.CJam, 14 bajtów
Jest to pełny program, który odczytuje dane wejściowe
[[Ax Ay] [Bx By]]
z STDIN.Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
Minkolang 0,9 , 112 bajtów
I naprawdę chcą wprowadzić parametrów wyzwalania funkcje jak obecnie budowanych-ins ... ale to była zabawa! (Zastrzeżenie: generuje to dodatnią różnicę kąta, a nie różnicę kąta ze znakiem. Biorąc pod uwagę moje ograniczenia, myślę, że jest to uzasadnione.)
Wypróbuj tutaj.
Wyjaśnienie
Jeśli ktoś tego chce, opublikuję pełniejsze wyjaśnienie, ale jego sedno brzmi:
źródło
:D
Czy było to wyzwanie Hello World, w którym zauważyłeś komentarze (FYI interpreter, który stworzyłem dla Simplex, działa w różnych „trybach”: trybie łańcuchowym i trybie komentowania. Ułatwia to parsowanie i pozwala zignorować znaki jednego z nich tryb, podczas gdy w drugim.)Mathematica, 22 bajty
Przykład:
źródło
{{0,1},{1,0}}
JavaScript, 66 bajtów
próbny
źródło
let f=
i nadal jest uważany za prawidłowy jako funkcja anonimowa.Julia,
1825 bajtówZakłada się, że „jakakolwiek dogodna forma” już pozwala
A
iB
może być podawana jako liczby zespolone. Następnie arytmetyka liczb zespolonych wykonuje wszystkie ciężkie podnoszenie.Edycja: przekonwertowany fragment kodu na funkcję. Wersja 18-bajtowa działa tylko w Julia REPL.
źródło
Python 2.7, 73 bajtów
Test:
źródło
*
s wszędzieOktawa, 43 bajty
Wejście wyjście:
źródło
CJam, 15 bajtów
Myślałem, że wezmę również udział w grze CJam. Wypróbuj online . Dane wejściowe mają postać
bx by ax ay
. Niestety jest to najkrótsza metoda wykonania tego wyzwania bez kopiowania odpowiedzi Dennisa.źródło
TeaScript, 28 bajtów
Naprawdę powinienem zaimplementować funkcje trig ...
Wypróbuj Internecie wejściowy
a.x a.y b.x b.y
Wyjaśnienie
źródło
Rubinowy,
64, 58 bajtówStosowanie
źródło
JavaScript, 49 bajtów
Dane wejściowe są pobierane w postaci:
[aY, aX], [bY, bX]
(zauważ odwrócone x / y)źródło
Simplex v.0.7 , 13 bajtów
Cieszę się, że dodałem
mathrelations
: D Niestety, nie mogę pobierać danych punktowych. Tak więc wpisuję każdy punkt jako osobną liczbę (Ax, Ay, Bx, By). (Użyłem tego jako zasobu.)Mogę zapisać znak, jeśli mogę wziąć dane wejściowe jako (Ay, Axe, By, Bx):
źródło
C, 88 bajtów
Wymaga kompilacji z GCC, aby skorzystać z
M_PI
definicji zdefiniowanejmath.h
jako część wbudowanych stałych matematycznych GCC . Wypróbuj online - ponieważ ideone nie używa GCC (najwyraźniej), potrzeba kilku dodatkowych bajtów, aby wystarczająca liczba cyfr π była dokładna.źródło
45/atan(1)
zamiast180/3.14159....
(w wersji online).