অ্যারে শুরু হয়


10

আপনার টাস্কটি হ'ল সংখ্যার একটি অ্যারে এবং একটি আসল সংখ্যার নেওয়া এবং অ্যারের সেই বিন্দুতে মানটি ফিরিয়ে দেওয়া। অ্যারে শুরু হয়π এবং গণনা করা হয় πঅন্তর। কথাটি হচ্ছে, আমরা আসলে "সূচক" প্রদত্ত উপাদানগুলির মধ্যে বিভক্ত হতে চলেছি। উদাহরণ হিসাবে:

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

কারণ এটা π, আমাদের বাধ্যতামূলক ত্রিকোণমিতি করতে হবে, সুতরাং আমরা নিম্নলিখিত সূত্রটি ব্যবহার করে কোসাইন ইন্টারপোলেশন ব্যবহার করব:

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

কোথায়:

  • i ইনপুট "সূচক"
  • αindex হ'ল "সূচক" এর আগেই উপাদানটির মান is
  • βindex হ'ল "সূচক" এর পরপরই উপাদানটির মান is
  • cos তার কোণটি রেডিয়ানে নিয়ে যায়

উদাহরণ

প্রদত্ত [1.3, 3.7, 6.9], 5.3:

সূচক 5.3 এবং , সুতরাং 1.3 ব্যবহার করা হবে এবং 3.7 এর জন্য ব্যবহৃত হবে । সূত্রের মধ্যে রেখে, আমরা পাই:1π2πbeforeafter

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

যা 3.165 এ বেরিয়ে আসে

মন্তব্য

  • ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক বিন্যাসে থাকতে পারে
  • আপনি ধরে নিতে পারেন ইনপুট নম্বরটি চেয়ে বেশি এবং * চেয়ে কমπarray lengthπ
  • আপনি ধরে নিতে পারেন ইনপুট অ্যারে কমপক্ষে 2 টি উপাদান দীর্ঘ হবে।
  • আপনার ফলাফলের যথাযথতার কমপক্ষে দুটি দশমিক পয়েন্ট থাকা আবশ্যক, 0.05 এর মধ্যে সঠিক হতে হবে এবং এই নির্ভুলতা / নির্ভুলতার জন্য 100 পর্যন্ত সমর্থন সংখ্যাগুলি থাকতে হবে। (একক নির্ভুলতা ভাসমানগুলি এই প্রয়োজনীয়তা মেটাতে পর্যাপ্ত চেয়ে বেশি)

শুভ গল্ফিং!


8
অবগতির জন্য গলফার, এটা খাটো হতে পারে লিখতে লেখা হিসাবে ব্যবহার অর্ধ কোণ সূত্র জন্য । (cos(x)+1)/2cos(x/2)2cos
xnor

আমি কি ডাবলিকে ডাবলস এর কী হিসাবে নিতে পারি? ডাবল অবশ্যই পুরো সংখ্যা হবে।
অজ্ঞতা প্রতিমূর্তি

এম্বোডিমেন্টফ অজ্ঞতা, নিশ্চিত আমি সন্দেহ করি যে এটি আপনাকে সহায়তা করতে চলেছে, তবে এটি অ্যারের একদম যুক্তিসঙ্গত উপস্থাপনা কারণ লুয়া এটি করে।
গরুর মাংস

@ কেভিনিক্রুজসেন আমি কেন দেখছি না কেন এটি গুরুত্ব পাবে। 3.7 পাই এবং 2 পিআই এর মধ্যে রয়েছে।
গরুর মাংস 16

উত্তর:


5

আর , 59 53 বাইট

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

এটি অনলাইন চেষ্টা করুন!

এখানে খুব চালাক কিছুই নেই - প্রশ্নের সূত্রের কেবল একটি আর সংস্করণ। একটি বাইট সংরক্ষণ করার জন্য @ মিকিটি, এবং @ জিউসেপ্পিকে এবং অপ্রত্যক্ষভাবে @ আরও দু'জনের জন্য এক্সনরকে ধন্যবাদ এবং আরও 3 টি সংরক্ষণ করার জন্য @ রবিনরাইডারকে ধন্যবাদ।


আমি মনে করি আপনি ...*(cos(i%%pi)+1)/2
18-24 এ

@ মিকিটি ধন্যবাদ, আমি প্রথমে প্রথম বন্ধনীতে +1 রেখেছিলাম, তবে 60 বাইটের সাথে শেষ হওয়া বন্ধুত্বের একটি অপ্রয়োজনীয় জোড় যুক্ত করেছি
নিক কেনেডি

অর্ধকোণ সূত্রটি সম্পর্কে এক্সনরের মন্তব্যে নিম্নলিখিত 56 বাইটস
জিউসেপে


4

পাইথন 3.8 (প্রাক রিলিজ) , 85 74 বাইট

-8 বাইটস @ এক্সনোর
-২ বাইটস @ কুইন্টেককে ধন্যবাদ

এটি পাইথন 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
ট্রিগ

@ এক্সনর ভাল পয়েন্ট। আমি জানতাম যে আমি সেই
ভুলটি

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 ছাড়া হয়তো Stax
অজ্ঞতা প্রতিমূর্তি


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 বাইট সংরক্ষণ করা হয়েছে

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

অনলাইনে এটি ব্যবহার করে দেখুন! ডায়ালগ ক্লাসিক

ব্যাখ্যা:

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

05 এ বি 1 ই , 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)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.