Wprowadzenie
Wszyscy słyszeli o sinus (grzech) , cosinus (cos) , styczna (tan) , cotangens (łóżeczko) , secant (sec) i cosecant (csc) . Ma je prawie każdy kąt.
O wiele mniej znane lub zapamiętane są exsecant (exsec) , excosecant (excsc) , versine (versin) i coverine (cvs) . Prawie każdy kąt ma również te. Niektóre są jeszcze mniej znane, ale będziemy się ich trzymać.
Stworzyłem ich wizualizację dla kąta θ, który wynosi 45 °.
Wyzwanie
Utwórz program, który pobiera kąt n
w stopniach i wyświetli:
sinus kąta
n
cosinus kąta
n
styczna kąta
n
Secant of Angle
n
przynajmniej jeden z poniższych. Każdy dodatkowy przedmiot z tej listy otrzyma bonus -5%, maksymalnie do -25%.
exsecant of angle
n
kątnik
n
wykrzyknik kąta
n
kontra kąt
n
zakrywający kąt
n
cotangens kąta
n
Jeśli po zastosowaniu premii wynik jest dziesiętny, zaokrąglij w górę do najbliższej liczby całkowitej.
Wkład
Możesz zaakceptować swoje dane wejściowe poprzez STDIN lub poprzez wywołanie funkcji. Pojedynczy argument n
zostanie przekazany.
n
będzie zawsze liczbą całkowitą większą niż 0, ale mniejszą lub równą 90.
Wydajność
Oto przykład wyjścia dla sinusa 45 °. Wszystkie elementy wyjściowe muszą być w tym formacie. Kolejność elementów nie ma znaczenia.
sine: 0.70710678118
Wszystkie pozycje muszą mieć dokładnie 4 cyfry po przecinku (dokładność do dziesięciu tysięcznych). Poniżej znajduje się kilka przykładów zaokrąglania.
0 -> 0.0000
1 -> 1.0000
0.2588190451 -> 0.2588
5.67128181962 -> 5.6713
10 -> 10.0000
12.4661204396 -> 12.4661
Wszelkie nieistniejące / nieokreślone wyniki powinny mieć domyślną wartość 0.
Przykład
myprogram(60)
sine: 0.8660
cosine: 0.5000
tangent: 1.7321
secant: 2.0000
exsecant: 1.0000
cosecant: 1.1547
excosecant: 0.1547
versine: 0.5000
coversine: 0.1340
cotangent: 0.5774
Tablica wyników
Twój wynik powinien pojawić się na tablicy, powinien mieć następujący format:
# Language, Score
Lub jeśli zarobiłeś bonus:
# Language, Score (Bytes - Bonus%)
Przekreślenia nie powinny powodować problemów.
źródło
greater than 0
, więc 0 nie jest dozwolone?Odpowiedzi:
CJam,
9489858180 bajtówKod ma 84 bajty długości i kwalifikuje się do 5% premii ( cotangens i cosecant ).
Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
Julia, 162-10% = 144 bajty
Nie golfowany:
źródło
Pyth, 66-10% = 59,4 bajtów
Oblicza sinus, sieczny i styczny. Następnie funkcje są po prostu obliczane za pomocą wzoru
coF(x) = F(90 - x)
.źródło
Mathematica (obecnie nieważny),
134121104Po prostu dla zabawy, na pewno można dużo grać w golfa
I powinien mieć premię 5% (łóżeczko i Csc), a zatem wynosić 99 znaków
Przykładowe dane wyjściowe:
źródło
0
dlasec(90)
?JavaScript (ES6), 173 (182 - 5%)
Edytuj poprawione po wyjaśnieniu, teraz premia wynosi 5%
Edytuj zdał sobie sprawę, że kąt nie może wynosić 0
źródło
JavaScript ES6,
154148 (198–25%)Nie golfowany:
źródło
R,
122136134 bajtówPrzykładowe użycie
źródło
scan()/(180/pi)
->scan()*pi/180
?Perl,
182177(236–25%)Uruchom z
-n
(dodany 1 bajt do nieskorygowanego wyniku).Nic fajnego. Korzysta z
-n
niejawnego wejścia,$_
jako domyślnego argumentu dosin
icos
, i słów kluczowych dla ciągów. Reguła „undefined = 0” jest zakodowana na stałe za pomocą operatora trójskładnikowego?:
(dotyczy tylko 90 °).Jedną rzeczą jest to, że ja learend najwyraźniej nie można mieć (lub nie można nazwać ) podprogram o nazwie
s
(lubm
,y
,tr
):sub s {print 1}; s
plonySubstitution pattern not terminated at -e line 1
.źródło
Python 3, 282 (375–25%)
Obsługa błędów okazała się nieco skomplikowana z powodu błędów zmiennoprzecinkowych; mianowicie,
cos(90)
wyszedł do bardzo małej liczby zamiast zera.To nigdy nie będzie najlepsza odpowiedź, ale lubię myśleć, że może to być najkrótsza poprawna odpowiedź na wszystkie funkcje w języku innym niż golfowy, który nie ma funkcji trig w domyślnej przestrzeni nazw . ;-)
Przykładowe dane wyjściowe:
źródło
'.4f'%(r)
byłby krótszy?Perl, 165 (193–15%)
Przedstawiam tę odpowiedź jako nową odpowiedź, ponieważ pomysł jest zupełnie inny od drugiego . Daj mi znać, czy lepiej jest zastąpić moją pierwszą próbę.
Uruchom z
-n
(dodano 1 bajt).Nie golfowany:
Ponieważ wykonuje cztery funkcje „co”, myślę, że kwalifikuje się do otrzymania premii 3 * 5% = 15%.
źródło
Perl,
1009594 bajtówWhoa, Lotta Perl odpowiada.
źródło
-n
(liczy się 1 bajt) zamiast$_=<>
. Musisz jednak przekonwertować stopnie na radiany i nie obsługujesz przypadku 90 ° zgodnie z zaleceniami. (W tym drugim przypadku wydaje się, że nie jesteś sam wśród odpowiedzi tutaj.)Haskell, 159 = 186–15% bajtów
Żadnych ekscesów, by utrzymać mój sprytny schemat nazewnictwa, a ponieważ nie wiedziałem, jak go skrócić
(\x->x-1)
.(-1)
to tylko liczba.Skarż się, jeśli chcesz, żebym upiększył (
mapM_ putStrLn
) wiersze.źródło