Votre tâche consiste à prendre un tableau de nombres et un nombre réel et à renvoyer la valeur à ce point du tableau. Les tableaux commencent à et sont comptés dans des intervalles . Le fait est que nous allons en fait interpoler entre les éléments étant donné l’indice. Par exemple:
Index: 1π 2π 3π 4π 5π 6π
Array: [ 1.1, 1.3, 6.9, 4.2, 1.3, 3.7 ]
Parce que c'est , nous devons faire la trigonométrie obligatoire, nous allons donc utiliser l'interpolation en cosinus en utilisant la formule suivante:
où:
- est l'entrée "index"
- est la valeur de l'élément immédiatement avant l '"index"
- est la valeur de l'élément immédiatement après l '"index"
- prend son angle en radians
Exemple
Étant donné [1.3, 3.7, 6.9], 5.3:
L'index 5.3 est compris entre et , donc 1.3 sera utilisé pour before
et 3.7 sera utilisé pour after
. En le mettant dans la formule, nous obtenons:
Ce qui sort à 3.165
Remarques
- L'entrée et la sortie peuvent être dans n'importe quel format pratique
- Vous pouvez supposer que le nombre d'entrée est supérieur à et inférieur à
array length
* - Vous pouvez supposer que le tableau d'entrée comportera au moins 2 éléments.
- Votre résultat doit avoir au moins deux décimales de précision, être précis à 0,05 près et prendre en charge jusqu'à 100 pour cette précision / exactitude. (les flotteurs à simple précision sont plus que suffisants pour répondre à cette exigence)
Bon golf!
Réponses:
R ,
5953 octetsEssayez-le en ligne!
Rien de trop intelligent ici - juste une version R de la formule de la question. Merci à @MickyT d'avoir sauvegardé un octet, et à @Giueseppe et indirectement @xnor pour deux autres, et merci à @RobinRyder d'avoir enregistré 3 autres.
la source
...*(cos(i%%pi)+1)/2
Python 3.8 (pré-version) ,
8574 octets-8 octets grâce à @xnor
-2 octets grâce à @Quintec
Cela profite du nouvel
:=
opérateur d'affectation de la pré-version de Python 3.8 . En dehors de cela, ce n'est vraiment que l'équation écrite en Python.Usage:
Essayez-le en ligne!
la source
j
le premier endroit mentionné - une partie du pouvoir des expressions d'affectation est qu'elles évaluent la valeur ainsi que l'assigner.(cos(i%pi)+1)/2
encos(i%pi/2)**2
p=
puisque les fonctions anonymes sont correctesGelée , 17 octets
Un programme complet acceptant et le tableau qui imprime la valeur interpolée.i
Essayez-le en ligne!
Comment?
Interpole entre tous les voisins en utilisant puis sélectionne la valeur appropriée.cos(imodπ)+12
la source
C # (Visual C # Interactive Compiler) , 69 octets
J'ai battu Python!Bon sang, Python m'a battu.J'ai encore battu Python!Essayez-le en ligne!
la source
Röda , 51 octets
Essayez-le en ligne!
la source
Stax , 17 octets
Exécuter et déboguer
Déballé, non golfé et commenté, cela ressemble à ceci.
Exécutez celui-ci
la source
Japt ,
474638 octetsÀ suivre ... (golf)
Essayez-le en ligne!
la source
APL + WIN,
3937 octets2 octets économisés grâce à Adám
Essayez-le en ligne! Dyalog Classic
Explication:
la source
×.5×
→÷2÷
etm[2]
→2⊃m
Haskell , 65 octets
Essayez-le en ligne!
Remarque: le tableau est représenté sous forme de liste.
Merci à @xnor pour la pointe demi-angle.
la source
Gelée ,
232018 octetsEssayez-le en ligne!
la source
Attaché , 54 octets
Essayez-le en ligne!
Explication
la source
C (GCC)
9979 octets-20 octets plafondcat
Essayez-le en ligne!
Indicatif d'appel
notez qu'il avait besoin de l'indicateur du compilateur
-lm
pour se lier aux bibliothèques mathématiques, donc +3 octets si vous comptez cela.la source
05AB1E ,
22212019 octetsEssayez-le en ligne ou vérifiez d'autres cas de test .
Explication:
la source
Rubis , 67 octets
Essayez-le en ligne!
la source