शुरू होता है


10

आपका कार्य संख्याओं और वास्तविक संख्याओं को लेना है और सरणी में उस बिंदु पर मान वापस करना है। Arrays से शुरू होते हैं और अंतराल में गिने जाते हैं । बात यह है, हम वास्तव में "इंडेक्स" दिए गए तत्वों के बीच अंतर करने जा रहे हैं। उदहारण के लिए:ππ

Index:    1π   2π   3π   4π   5π   6π
Array: [ 1.1, 1.3, 6.9, 4.2, 1.3, 3.7 ]

क्योंकि यह , हमें अनिवार्य त्रिकोणमिति करना है, इसलिए हम निम्नलिखित सूत्र का उपयोग करके कोसाइन प्रक्षेप का उपयोग करेंगे:π

cos(imodπ)+12(αβ)+β

कहाँ पे:

  • i इनपुट "सूचकांक" हूँ
  • α "सूचकांक" से ठीक पहले तत्व का मान है
  • β "इंडेक्स" के तुरंत बाद तत्व का मान है
  • cos अपने कोणों को रेडियंस में ले जाता है

उदाहरण

दिया गया [१.३, ३.,, ६.९], ५.३:

सूचकांक 5.3 और , इसलिए 1.3 का उपयोग किया जाएगा और 3.7 का उपयोग किया जाएगा । इसे सूत्र में रखते हुए, हम प्राप्त करते हैं:1π2πbeforeafter

cos(5.3modπ)+12(1.33.7)+3.7

जो 3.165 तक आता है

टिप्पणियाँ

  • इनपुट और आउटपुट किसी भी सुविधाजनक प्रारूप में हो सकते हैं
  • आप मान सकते हैं कि इनपुट संख्या π से अधिक है और array length* \ pi से कम हैπ
  • आप मान सकते हैं कि इनपुट सरणी कम से कम 2 तत्वों की होगी।
  • आपके परिणाम में सटीकता के कम से कम दो दशमलव बिंदु होने चाहिए, यह 0.05 के भीतर सटीक होगा, और इस सटीकता / सटीकता के लिए 100 तक समर्थन संख्याएँ। (इस आवश्यकता को पूरा करने के लिए एकल-सटीक फ़्लोट पर्याप्त से अधिक हैं)

हैप्पी गोल्फिंग!


8
FYI करें गोल्फर्स, यह फिर से लिखने के लिए छोटा हो सकता है (cos(x)+1)/2 जैसा cos(x/2)2का उपयोग करते हुए आधा कोण सूत्र के लिएcos
xnor

क्या मैं इसकी कुंजी के रूप में डबल्स के साथ एक शब्दकोश में ले सकता हूं? युगल पूरे नंबर होंगे, निश्चित रूप से।
अज्ञानता

@EododimentofIgnorance, निश्चित रूप से। मुझे संदेह है कि आपकी मदद करने जा रहा है, लेकिन यह सरणियों का पूरी तरह से उचित प्रतिनिधित्व है, क्योंकि यह कैसे लुआ करता है।
बीफस्टर

@ केविनक्रूजसेन मैं नहीं देखता कि यह क्यों मायने रखेगा। 3.7 पाई और 2pi के बीच है।
बीफस्टर

जवाबों:


5

आर , 59 53 बाइट्स

function(x,i)x[0:1+i%/%pi]%*%c(a<-cos(i%%pi/2)^2,1-a)

इसे ऑनलाइन आज़माएं!

यहां कुछ भी बहुत चालाक नहीं है - सवाल में सूत्र का सिर्फ एक आर संस्करण। एक बाइट को बचाने के लिए @ मिक्की और @Giueseppe के लिए धन्यवाद और अप्रत्यक्ष रूप से @xnor को एक और दो के लिए, और एक और 3 को बचाने के लिए @RobinRyder को धन्यवाद।


मुझे लगता है कि आप एक बाइट को छोड़ सकते हैं...*(cos(i%%pi)+1)/2
मिकी

@ मिक्की धन्यवाद, मैंने मूल रूप से कोष्ठकों में +1 डाला था, लेकिन 60 बाइट्स के साथ समाप्त होने वाली कोष्ठक की एक निरर्थक जोड़ी जोड़ी थी
निक केनेडी

आधा कोण सूत्र के बारे में xnor की टिप्पणी के बाद 56 बाइट्स
ग्यूसेप


4

पायथन 3.8 (पूर्व-रिलीज़) , 85 74 बाइट्स

-8 बाइट्स @xnor
-2 बाइट्स की बदौलत @Quintec को धन्यवाद

यह पायथन 3.8 के प्री-रिलीज़ के नए :=असाइनमेंट ऑपरेटर का लाभ उठाता है । इसके अलावा, यह वास्तव में केवल पायथन में लिखित समीकरण है।

import math
lambda l,i:cos(i%math.pi/2)**2*(l[(j:=int(i/pi))-1]-l[j])+l[j]

उपयोग:

>>> p=lambda l,i:cos(i%math.pi/2)**2*(l[(j:=int(i/pi))-1]-l[j])+l[j]
>>> print(p([1.3, 3.7, 6.9],5.3))
3.165249203414993

इसे ऑनलाइन आज़माएं!


1
आप इसे बताए गए पहले स्थान को असाइनj कर सकते हैं - असाइनमेंट एक्सप्रेशन की शक्ति का हिस्सा यह है कि वे मूल्य का मूल्यांकन करने के साथ-साथ इसे असाइन भी करते हैं।
xnor

1
एक और बाइट बचा: कन्वर्ट (cos(i%pi)+1)/2 करने के लिए cos(i%pi/2)**2
ट्रिगर

@xnor अच्छा बिंदु। मुझे पता था कि मैं उस गलत इस्तेमाल कर रहा था
senox13

1
p=अनाम कार्यों के ठीक होने के बाद आप छोड़ सकते हैं
क्विंटेक

1
बायटेकाउंट को अपडेट करना भूल गए :)
क्विंटेक

3

जेली , 17 बाइट्स

d©ØPṪÆẠ‘H×I_@Ḋ}®ị

एक पूर्ण कार्यक्रम स्वीकार कर रहा है मैं और सरणी जो प्रक्षेपित मूल्य को प्रिंट करता है।

इसे ऑनलाइन आज़माएं!

कैसे?

उपयोग करने वाले सभी पड़ोसियों के बीच इंटरपोल करता है क्योंकि(मैंआधुनिकπ)+12 फिर प्रासंगिक मूल्य चुनता है।

d©ØPṪÆẠ‘H×I_@Ḋ}®ị - Link: number, i; list of numbers, A
  ØP              - pi (ish) = 3.141592653589793
d                 - divmod = [i//pi, i%pi]
 ©                - (copy to register for later)
    Ṫ             - tail (gets i%pi leaving register copy as [i//pi])  
     ÆẠ           - cosine = cos(i%pi)
       ‘          - increment
        H         - halve
         ×        - multiply by A (vectorises)
          I       - increments -- i.e. (cos(i%pi)+1)(r-l)/2 for neighbours [l,r]
             Ḋ}   - dequeue A
           _@     - swapped arg subtract (vectorises) -- i.e. r-(cos(i%pi)+1)(r-l)/2
                  -                                         = r+(cos(i%pi)+1)(l-r)/2
               ®  - recall value from the register
                ị - index into (vectorises) -- i.e. [β+(cos(i%pi)+1)(α-β)/2]
                  - implicit print of Jelly representation (only 1 entry so [] wont appear)

2

सी # (विजुअल सी # इंटरएक्टिव कंपाइलर) , 69 बाइट्स

n=>m=>(Math.Cos(m%Math.PI)+1)/2*(n[m=(int)(m/Math.PI)-1]-n[++m])+n[m]

मैंने अजगर को हराया! डार इट, पायथन ने मुझे हराया। मैंने अजगर को फिर से हरा दिया!

इसे ऑनलाइन आज़माएं!


1
खूबियों को देखो। हम में से कोई भी जेली के खिलाफ एक मौका नहीं खड़ा था
senox13

@ senox13 शायद स्टेक्स को छोड़कर
अज्ञानता


1

स्टैक्स , 17 बाइट्स

≈ëBü☺ÆssÅ¢â)KjjïΔ

इसे चलाएं और डीबग करें

अनपैक्ड, अनगुल्फेड और टिप्पणी की गई यह इस तरह दिखता है।

VP|%    divmod with pi;  push div and mod results separately
|7^h    do (cos(modpart) + 1) / 2
sX      swap the original div result to top of stack, store it in the x register
v       decrement
;:-     pairwise differences of array
@       get element at index
N*      negate and multiply
;x@     get element from the original array at the x index, where x is the register
+       add

इसको चलाओ



1

एपीएल + विन, 39 37 बाइट्स

2 बाइट्स ने Adám को धन्यवाद दिया

2⊃m+(-/m←⎕[0 1+⌊n÷○1])÷2÷1+2○(○1)|n←⎕

इसे ऑनलाइन आज़माएं! Dyalog Classic

स्पष्टीकरण:

n←⎕ prompt for input of integer

2÷1+2○(○1)|n evaluate first term of formula

[0 1+⌊n÷○1] identify indices of alpha and beta

m←⎕[...] prompt for input of vector and select alpha and beta

-/m alpha-beta

2⊃m+ take result of adding beta to complete the equation 



0

जेली , 23 20 18 बाइट्स

³%ØPÆẠ×_++H
÷ØPịÇ/

इसे ऑनलाइन आज़माएं!

÷ØPịṁؽµ³%ØPÆẠ×I_@SH    Dyadic link, arguments x (index) and Z (array):
֯P                     x/pi
   ị                    Index (into Z).
                        When x/pi is an integer, returns that elt of Z.
                        Otherwise returns 2 elements at floor and ceiling.
     ؽ                   [1,2] (generic 2 element array)
    ṁؽ                 Mold; shape like [1,2] to ensure we have 2 elements.
       µ                Start a new, monadic chain with the result [a,b]
        ³%ØPÆẠ×I_@SH    Monadic chain
        ³               x
         %ØP            x mod pi
            ÆẠ          Unarccosine; cos(x mod pi).
               I          Increment; b-a.
              ×I        (b-a) cos(x mod pi)
                  S       a+b
                _@S     a + b - (b-a) cos(x mod pi)
                   H    Halve; this is equivalent to our desired result.

0

अटैच , 54 बाइट्स

${Cos[y%PI/2]^2*&`-@(j:=x[1'-1*Floor[y'-y/PI]-1])+j@1}

इसे ऑनलाइन आज़माएं!

व्याख्या

${Cos[y%PI/2]^2*&`-@(j:=x[1'-1*Floor[y'-y/PI]-1])+j@1}
${                                                   }  parameters: x, y
  Cos[y%PI/2]^2                                         the scaling function factor
               *                                        times
                     j:=                                set j to
                        x[                     ]        the element in x at
                          1'-1*Floor[y'-y/PI]-1         the closest indices scaled by PI
                &`-@(                           )       spread subtraction over bounds
                                                 +j@1   add the upper bound

0

सी (जीसीसी) 99 79 बाइट्स

-20 बाइट्स छत

float P=3.141593;b;
#define f(i,a)(cos(fmod(i,P))+1)/2*(a[b=i/P-1]-a[++b])+a[b]

इसे ऑनलाइन आज़माएं!

कॉलिंग कोड

int main() {
  float a[3] = {1.3,3.7,6.9};
  printf("%f\n", f(5.3,a));
}

ध्यान दें कि यह -lmगणित पुस्तकालयों के साथ लिंक करने के लिए संकलक ध्वज की आवश्यकता है , इसलिए +3 बाइट्स यदि आप इसे गिनते हैं।


0

05AB1E , 22 21 20 19 बाइट्स

žq‰`ž>;UÝèÐÁ-θX*-θ

इसे ऑनलाइन आज़माएं या कुछ और परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

žq        # Take the divmod PI of the (implicit) input-decimal
           # (part = input integer-divided by PI, remainder = input modulo-PI)
           #  i.e. 5.3 → [1, 2.158...]
   `       # Push both values separately to the stack
    ž     # Take the cosine of the remainder
           #  i.e. 2.158... → -0.554...
      >    # Increase it by 1
           #  i.e. -0.554... → 0.554...
       ;   # Halve it
           #  i.e. 0.554... → 0.222...
        U  # Pop and store it in variable `X`
    Ý      # Pop the part, and push a list in the range [0, part]
           #  i.e. 1 → [0, 1]
     è     # (0-based) index all of them into the (implicit) input-list
           #   i.e. [1.3, 3.7, 6.9] and [0, 1] → [1.3, 3.7]
Ð          # Triplicate this list
 Á         # Rotate the last copy once towards the right
           #  i.e. [1.3, 3.7] → [3.7, 1.3]
  -        # Subtract the values in the top two lists from one another
           #  i.e. [1.3, 3.7] and [3.7, 1.3] → [-2.4, 2.4]
   θ       # Pop and only leave the last value of this list
           #  i.e. [-2.4, 2.4] → 2.4
    X*     # Multiply it by `X`
           #  i.e. 2.4 * `X`=0.222... → 0.534...
     -     # Subtract it from each of the values in the list we triplicated
           #  i.e. [1.3, 3.7] - 0.534... → [0.765..., 3.165...]
      θ    # And only leave the last value of this list
           #  i.e. [0.765..., 3.165...] → 3.165...
           # (which is output implicitly as result)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.