Tugas Anda adalah mengambil array angka dan angka nyata dan mengembalikan nilai pada titik itu dalam array. Array mulai dari dan dihitung dalam interval . Masalahnya, kita sebenarnya akan menginterpolasi antara elemen yang diberi "indeks". Sebagai contoh:
Index: 1π 2π 3π 4π 5π 6π
Array: [ 1.1, 1.3, 6.9, 4.2, 1.3, 3.7 ]
Karena itu , kita harus melakukan trigonometri wajib, jadi kita akan menggunakan interpolasi kosinus menggunakan rumus berikut:
dimana:
- adalah input "indeks"
- adalah nilai elemen tepat sebelum "indeks"
- adalah nilai elemen segera setelah "indeks"
- mengambil sudut dalam radian
Contoh
Diberikan [1.3, 3.7, 6.9], 5.3:
Indeks 5.3 adalah antara dan , jadi 1.3 akan digunakan untuk before
dan 3.7 akan digunakan untuk after
. Dengan memasukkannya ke dalam formula, kita mendapatkan:
Yang keluar ke 3.165
Catatan
- Input dan output mungkin dalam format apa pun yang nyaman
- Anda dapat menganggap nomor input lebih besar dari dan kurang dari
array length
* - Anda dapat mengasumsikan array input akan memiliki setidaknya 2 elemen.
- Hasil Anda harus memiliki setidaknya dua titik desimal presisi, akurat hingga 0,05, dan angka dukungan hingga 100 untuk presisi / akurasi ini. (Pelampung presisi tunggal lebih dari cukup untuk memenuhi persyaratan ini)
Selamat Golf!
Jawaban:
R ,
5953 byteCobalah online!
Tidak ada yang terlalu pintar di sini - hanya versi R dari rumus dalam pertanyaan. Terima kasih @MickyT karena menyimpan byte, dan ke @Giueseppe dan secara tidak langsung @xnor untuk dua byte lagi, dan terima kasih kepada @RobinRyder karena telah menyimpan 3 lebih lanjut.
sumber
...*(cos(i%%pi)+1)/2
Python 3.8 (pra-rilis) ,
8574 byte-8 Bytes berkat @xnor
-2 Bytes berkat @Quintec
Ini mengambil keuntungan dari
:=
operator penugasan baru Python 3.8 pra-rilis . Selain itu, ini benar-benar hanya persamaan yang ditulis dengan Python.Pemakaian:
Cobalah online!
sumber
j
tempat pertama yang disebutkan - bagian dari kekuatan ekspresi penugasan adalah bahwa mereka mengevaluasi nilai serta menugaskannya.(cos(i%pi)+1)/2
kecos(i%pi/2)**2
p=
karena fungsi anonim okJelly , 17 byte
Program lengkap yang menerima dan array yang mencetak nilai yang diinterpolasi.saya
Cobalah online!
Bagaimana?
Interpolasi antara semua tetangga menggunakan lalu pilih nilai yang relevan.cos( sayamodπ) + 12
sumber
C # (Visual C # Interactive Compiler) , 69 byte
Saya mengalahkan Python!Sial, Python mengalahkan saya.Saya mengalahkan Python lagi!Cobalah online!
sumber
Röda , 51 byte
Cobalah online!
sumber
Stax , 17 byte
Jalankan dan debug itu
Membongkar, tidak diserang, dan berkomentar sepertinya ini.
Jalankan yang ini
sumber
Japt ,
474638 byteBersambung ... (golf)
Cobalah online!
sumber
APL + WIN,
3937 byte2 byte disimpan berkat Adám
Cobalah online! Dyalog Classic
Penjelasan:
sumber
×.5×
→÷2÷
danm[2]
→2⊃m
Haskell , 65 byte
Cobalah online!
Catatan: array diwakili sebagai daftar.
Terima kasih kepada @xnor untuk tip setengah sudutnya.
sumber
Jelly ,
232018 byteCobalah online!
sumber
Attache , 54 byte
Cobalah online!
Penjelasan
sumber
C (GCC)
9979 byte-20 byte ceilingcat
Cobalah online!
Kode panggilan
perhatikan bahwa diperlukan flag kompiler
-lm
untuk terhubung dengan perpustakaan matematika, jadi +3 byte jika Anda menghitungnya.sumber
05AB1E ,
22212019 byteCobalah secara online atau verifikasi beberapa kasus uji lagi .
Penjelasan:
sumber
Ruby , 67 byte
Cobalah online!
sumber