Ihre Aufgabe ist es, ein Array von Zahlen und eine reelle Zahl zu nehmen und den Wert an dieser Stelle im Array zurückzugeben. Arrays beginnen bei und werden in Intervallen gezählt. Die Sache ist, wir werden tatsächlich zwischen Elementen interpolieren, wenn der "Index" gegeben ist. Als Beispiel:
Index: 1π 2π 3π 4π 5π 6π
Array: [ 1.1, 1.3, 6.9, 4.2, 1.3, 3.7 ]
Da es , müssen wir die obligatorische Trigonometrie durchführen, also verwenden wir die Kosinusinterpolation mit der folgenden Formel:
wo:
- ist die Eingabe "Index"
- ist der Wert des Elements unmittelbar vor dem "Index"
- ist der Wert des Elements unmittelbar nach dem "Index"
- nimmt seinen Winkel im Bogenmaß
Beispiel
Gegeben [1.3, 3.7, 6.9], 5.3:
Index 5.3 liegt zwischen und , daher wird 1.3 für before
und 3.7 für verwendet after
. Wenn wir es in die Formel einfügen, erhalten wir:
Welches kommt zu 3.165 heraus
Anmerkungen
- Eingabe und Ausgabe können in jedem geeigneten Format erfolgen
- Sie können davon ausgehen, dass die Eingabenummer größer als und kleiner als
array length
* - Sie können davon ausgehen, dass das Eingabearray mindestens 2 Elemente lang ist.
- Ihr Ergebnis muss mindestens zwei Dezimalstellen genau sein, auf 0,05 genau sein und Zahlen bis zu 100 für diese Genauigkeit / Genauigkeit unterstützen. (Schwimmer mit einfacher Genauigkeit sind mehr als ausreichend, um diese Anforderung zu erfüllen.)
Viel Spaß beim Golfen!
Antworten:
R ,
5953 BytesProbieren Sie es online aus!
Nichts zu klug hier - nur eine R-Version der Formel in der Frage. Vielen Dank an @MickyT für das Speichern eines Bytes und an @Giueseppe und indirekt an @xnor für zwei weitere Byte sowie an @RobinRyder für das Speichern weiterer 3.
quelle
...*(cos(i%%pi)+1)/2
Python 3.8 (Vorabversion) ,
8574 Byte-8 Bytes dank @xnor
-2 Bytes dank @Quintec
Dies nutzt den neuen
:=
Zuweisungsoperator der Python 3.8-Vorabversion . Davon abgesehen ist dies wirklich nur die in Python geschriebene Gleichung.Verwendungszweck:
Probieren Sie es online aus!
quelle
j
die erwähnt wird. Ein Teil der Fähigkeit von Zuweisungsausdrücken besteht darin, dass sie den Wert auswerten und ihm zuweisen.(cos(i%pi)+1)/2
umcos(i%pi/2)**2
p=
Gelee , 17 Bytes
Probieren Sie es online aus!
Wie?
quelle
C # (Visual C # Interactive Compiler) , 69 Byte
Ich habe Python geschlagen!Verdammt, Python hat mich geschlagen.Ich habe Python wieder geschlagen!Probieren Sie es online aus!
quelle
Röda , 51 Bytes
Probieren Sie es online aus!
quelle
Stax , 17 Bytes
Führen Sie es aus und debuggen Sie es
Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie diesen aus
quelle
Japt ,
474638 BytesFortsetzung folgt ... (Golfen)
Probieren Sie es online aus!
quelle
APL + WIN,
3937 Bytes2 Bytes dank Adám gespeichert
Probieren Sie es online aus! Dyalog Classic
Erläuterung:
quelle
×.5×
→÷2÷
undm[2]
→2⊃m
Haskell , 65 Bytes
Probieren Sie es online aus!
Hinweis: Das Array wird als Liste dargestellt.
Danke an @xnor für die Halbwinkelspitze.
quelle
Gelee ,
232018 BytesProbieren Sie es online aus!
quelle
Attache , 54 Bytes
Probieren Sie es online aus!
Erläuterung
quelle
C (GCC)
9979 Bytes-20 Bytes Deckenkatze
Probieren Sie es online aus!
Code anrufen
Beachten Sie, dass das Compiler-Flag
-lm
für die Verknüpfung mit Mathematikbibliotheken erforderlich ist , also +3 Byte, wenn Sie das zählen.quelle
05AB1E ,
22212019 BytesProbieren Sie es online aus oder überprüfen Sie weitere Testfälle .
Erläuterung:
quelle
Ruby , 67 Bytes
Probieren Sie es online aus!
quelle