Einführung
Jeder kennt Sinus (Sünde) , Cosinus (Cosinus) , Tangens (Tan) , Cotangens (Cot) , Sekant (Sec) und Cosekant (Csc) . Fast jeder Winkel hat sie.
Weit weniger bekannt oder in Erinnerung geblieben sind die exsecant (exsec) , excosecant (excsc) , versine (versin) und coversine (cvs) . Fast jeder Winkel hat auch diese. Es gibt einige, die noch weniger bekannt sind, aber wir werden uns nur an diese halten.
Ich habe eine Visualisierung für diesen Winkel θ erstellt, der 45 ° beträgt.
Die Herausforderung
Erstellen Sie ein Programm, das die Eingabe eines Winkels n
in Grad akzeptiert und Folgendes ausgibt:
der Sinus des Winkels
n
der Kosinus des Winkels
n
der Tangens des Winkels
n
die Sekante des Winkels
n
mindestens eines der folgenden. Für jeden weiteren Gegenstand aus dieser Liste erhalten Sie einen Bonus von -5% und maximal -25%.
außerhalb des Winkels
n
Cosecant des Winkels
n
Excosekans des Winkels
n
Winkelversine
n
Coversine des Winkels
n
Kotangens des Winkels
n
Wenn Ihre Punktzahl nach dem Einlösen eines Bonus eine Dezimalstelle ist, runden Sie auf die nächste ganze Zahl auf.
Eingang
Sie können Ihre Eingabe über STDIN oder über einen Funktionsaufruf annehmen. Ein einzelnes Argument n
wird übergeben.
n
wird immer eine ganze Zahl sein, die größer als 0, aber kleiner oder gleich 90 ist.
Ausgabe
Hier ist ein Beispiel für die Ausgabe eines Sinus von 45 °. Alle Ausgabeelemente müssen in diesem Format vorliegen. Die Reihenfolge der Artikel spielt keine Rolle.
sine: 0.70710678118
Alle Artikel müssen genau 4 Nachkommastellen haben (Zehntausendstelgenauigkeit). Nachfolgend einige Beispiele zur Rundung.
0 -> 0.0000
1 -> 1.0000
0.2588190451 -> 0.2588
5.67128181962 -> 5.6713
10 -> 10.0000
12.4661204396 -> 12.4661
Nicht vorhandene / undefinierte Ergebnisse sollten standardmäßig auf 0 gesetzt werden.
Beispiel
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
Anzeigetafel
Damit Ihre Partitur auf der Tafel erscheint, sollte sie in folgendem Format vorliegen:
# Language, Score
Oder wenn Sie einen Bonus verdient haben:
# Language, Score (Bytes - Bonus%)
Durchgestrichene Symbole sollten kein Problem verursachen.
quelle
greater than 0
so, dass 0 nicht erlaubt ist?Antworten:
CJam,
9489858180 BytesDer Code ist 84 Byte lang und berechtigt zu einem Bonus von 5% ( Kotangens und Kosekant ).
Versuchen Sie es online in dem CJam Dolmetscher .
Wie es funktioniert
quelle
Julia, 162 - 10% = 144 Bytes
Ungolfed:
quelle
Pyth, 66 - 10% = 59,4 Bytes
Berechnet den Sinus, die Sekante und die Tangente. Dann werden die Co-Funktionen einfach über die Formel berechnet
coF(x) = F(90 - x)
.quelle
Mathematica (derzeit ungültig),
134121104Nur zum Spaß kann man sicher viel Golf spielen
Und es sollte einen 5% Bonus (Cot und Csc) haben, also 99 Zeichen
Beispielausgabe:
quelle
0
dafürsec(90)
?JavaScript (ES6), 173 (182 - 5%)
Änderung nach Klärung überarbeitet, jetzt beträgt der Bonus 5%
Edit erkannte, dass der Winkel nicht 0 sein kann
quelle
Javascript ES6,
154148 (198 - 25%)Ungolfed:
quelle
R,
122136134 BytesAnwendungsbeispiel
quelle
scan()/(180/pi)
->scan()*pi/180
?Perl,
182177 (236 - 25%)Ausführen mit
-n
(1 Byte zum nicht korrigierten Ergebnis hinzugefügt).Nichts Außergewöhnliches. Es nutzt
-n
implizite Eingaben$_
als Standardargument fürsin
undcos
und Barewords für Zeichenfolgen. Die Regel „undefined = 0“ ist mit dem ternären Operator fest codiert?:
(gilt nur für 90 °).Eine Sache , die ich learend ist , dass es scheint, können Sie nicht (oder nicht nennen ) ein Unterprogramm namens
s
(oderm
,y
,tr
):sub s {print 1}; s
AusbeutenSubstitution pattern not terminated at -e line 1
.quelle
Python 3, 282 (375 - 25%)
Die Fehlerbehandlung gestaltete sich durch Gleitkommafehler etwas kompliziert. kam nämlich
cos(90)
auf eine sehr kleine Zahl statt auf Null.Es wird nie die Top-Antwort sein, aber Ich mag es zu denken , könnte die seiner kürzesten gültigen all-Funktionen in einer nicht-Golfy Sprache beantworten , die nicht die trigonometrischen Funktionen im Standard - Namespace hat . ;-)
Beispielausgabe:
quelle
'.4f'%(r)
kürzerPerl, 165 (193 - 15%)
Ich reiche dies als neue Antwort ein, weil die Idee ganz anders ist als die andere . Bitte lassen Sie mich wissen, ob es sinnvoller ist, meinen ersten Versuch zu ersetzen.
Ausführen mit
-n
(1 Byte hinzugefügt).Ungolfed:
Da es die vier "Co" -Funktionen ausführt, qualifiziert es sich meiner Meinung nach für einen 3 * 5% = 15% Bonus.
quelle
Perl,
1009594 BytesWhoa, lotta perl antwortet.
quelle
-n
(zählt für 1 Byte) anstelle von verwenden$_=<>
. Sie müssen jedoch von Grad in Bogenmaß umrechnen und behandeln den 90 ° -Fall nicht wie vorgeschrieben. (Mit letzterem scheint es, als ob Sie bei den Antworten hier kaum allein sind.)Haskell, 159 = 186 - 15% Bytes
Keine Ex-Dinger, um mein cleveres Namensschema beizubehalten und da ich nicht wusste, wie ich kürzen sollte
(\x->x-1)
.(-1)
ist nur eine Zahl.Bitte beschweren Sie sich, wenn ich
mapM_ putStrLn
die Zeilen verschönern soll .quelle