চতুষ্কোণ বর্গমূল


11

পটভূমি

কোয়ার্টারিয়ন একটি সংখ্যা সিস্টেম যা জটিল সংখ্যাগুলিকে প্রসারিত করে। একটি চৌম্বক নিম্নলিখিত ফর্ম আছে

a+bi+cj+dk

যেখানে সংখ্যা এবং তিনটি মৌলিক চতুর্ভুজ ইউনিট । ইউনিটগুলির নিম্নলিখিত বৈশিষ্ট্য রয়েছে:a,b,c,di,j,k

i2=j2=k2=1
ij=k,jk=i,ki=j
ji=k,kj=i,ik=j

মনে রাখবেন যে চতুর্থাংশের গুণটি পরিবর্তনীয় নয়

কার্য

একটি অ-আসল চৌম্বক দেওয়া, এর বর্গমূলের কমপক্ষে একটি গণনা করুন।

কিভাবে?

এই ম্যাথ.এসই উত্তর অনুসারে , আমরা নিম্নলিখিত আকারে যে কোনও অ-আসল চৌম্বক প্রকাশ করতে পারি:

q=a+bu

যেখানে বাস্তব সংখ্যা এবং হয় আকারে কল্পিত একক ভেক্টর হয় সঙ্গে । এ জাতীয় যে কোনও এর সম্পত্তি , সুতরাং এটি কল্পিত ইউনিট হিসাবে দেখা যেতে পারে।a,buxi+yj+zkx2+y2+z2=1uu2=1

তারপরে এর বর্গটি এর মতো দেখাচ্ছে:q

q2=(a2b2)+2abu

বিপরীতভাবে, একটি চতুর্থাংশ given দেওয়া , আমরা নীচের সমীকরণগুলি সমাধান করে বর্গমূল খুঁজে পেতে পারিq=x+yuq

x=a2b2,y=2ab

যা জটিল সংখ্যার বর্গমূল খুঁজে বের করার প্রক্রিয়ার সাথে সমান।

মনে রাখবেন যে negativeণাত্মক আসল সংখ্যার অনেকগুলি চৌম্বকীয় বর্গমূল রয়েছে, তবে একটি অ-আসল চৌম্বকীয় মাত্র দুটি বর্গমূল রয়েছে

ইনপুট এবং আউটপুট

ইনপুট একটি অ-আসল চতুর্ভুজ। আপনি আপনার পছন্দমতো যে কোনও ক্রম এবং কাঠামোতে এটি চারটি আসল (ভাসমান-পয়েন্ট) নম্বর হিসাবে নিতে পারেন। অ-বাস্তবের অর্থ এর কমপক্ষে একটি অ-শূন্য।b,c,d

আউটপুট হল এক বা দুটি চতুর্ভুজ যা স্কোয়ার হলে ইনপুট সমান হয়।

পরীক্ষার মামলা

   Input (a, b, c, d)  =>  Output (a, b, c, d) rounded to 6 digits

 0.0,  1.0,  0.0,  0.0 =>  0.707107,  0.707107,  0.000000,  0.000000
 1.0,  1.0,  0.0,  0.0 =>  1.098684,  0.455090,  0.000000,  0.000000
 1.0, -1.0,  1.0,  0.0 =>  1.168771, -0.427800,  0.427800,  0.000000
 2.0,  0.0, -2.0, -1.0 =>  1.581139,  0.000000, -0.632456, -0.316228
 1.0,  1.0,  1.0,  1.0 =>  1.224745,  0.408248,  0.408248,  0.408248
 0.1,  0.2,  0.3,  0.4 =>  0.569088,  0.175720,  0.263580,  0.351439
99.0,  0.0,  0.0,  0.1 =>  9.949876,  0.000000,  0.000000,  0.005025

এই পাইথন স্ক্রিপ্টটি ব্যবহার করে তৈরি করা হয়েছে । প্রতিটি পরীক্ষার ক্ষেত্রে দুটি সঠিক উত্তরের একটি নির্দিষ্ট করা হয়; অন্যটি চারটি মান অবহেলিত।

স্কোরিং এবং বিজয়ী মানদণ্ড

স্ট্যান্ডার্ড বিধি প্রযোজ্য। সংক্ষিপ্ততম প্রোগ্রাম বা প্রতিটি ভাষার বাইটে ফাংশন জিতে।


আমরা কি চতুষ্পদ হিসাবে নিতে পারি a, (b, c, d)?
nwellnhof

পুনঃটুইট এমন কি কিছু a,[b,[c,[d]]]ঠিক আছে, আপনি যদি এটির সাথে কোনওভাবে বাইটগুলিও সংরক্ষণ করতে পারেন :)
বুদ্বুদ

উত্তর:


29

এপিএল (এনএআরএস) , 2 বাইট

কোয়ার্ট্রিয়েন্সগুলির জন্য NARS অন্তর্নির্মিত সমর্থন করেছে। ¯ \: _ (⍨): _ / ¯


4
আমি এটি সাহায্য করতে পারি না: আপনার উত্তরে "¯_ (ツ) _ / ¯" অন্তর্ভুক্ত করা উচিত
ব্যারানকা

7
আপনি এটিকে dropped
অ্যান্ড্রু

@ বারানকা সম্পন্ন
Adám

@ অ্যান্ড্রু অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে এটি দোষারোপ করুন ... এটি তোলার জন্য আপনাকে ধন্যবাদ :)
বারানকা

2
এটির চেয়ে ভাল হত¯\_(⍨)√¯
জাকারি

8

পাইথন 2 , 72 বাইট

def f(a,b,c,d):s=((a+(a*a+b*b+c*c+d*d)**.5)*2)**.5;print s/2,b/s,c/s,d/s

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

কমবেশি একটি কাঁচা সূত্র। আমি ভেবেছিলাম লুপ শেষ করতে আমি তালিকা বোধগম্যতা ব্যবহার করতে পারি b,c,dতবে এটি আরও দীর্ঘ বলে মনে হচ্ছে। বিশেষত স্কেলিং এবং আদর্শে ভেক্টর অপারেশনের অভাবে পাইথন সত্যিই এখানে আঘাত পেয়েছে।

পাইথন 3 , 77 বাইট

def f(a,*l):r=a+sum(x*x for x in[a,*l])**.5;return[x/(r*2)**.5for x in[r,*l]]

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

চতুর্ভুজটি সরাসরি সমাধান করা পাইথনের জটিল-সংখ্যা বর্গমূল ব্যবহারের চেয়ে সমস্যার বিবৃতিতে যেমন সমাধান করার জন্য এটিও ছোট ছিল।


"ইনপুটটি একটি অ-আসল চতুর্ভুজ। আপনি এটি আপনার পছন্দ মতো কোনও ক্রম এবং কাঠামোতে চারটি আসল (ভাসমান পয়েন্ট) নম্বর হিসাবে নিতে পারেন" " সুতরাং আপনি এটিকে পান্ডাস সিরিজ বা নাম্পার অ্যারে হিসাবে বিবেচনা করতে পারেন। সিরিজের সাধারণ গুণনের সাথে স্কেলিং রয়েছে এবং আদর্শ পাওয়ার বিভিন্ন উপায় রয়েছে যেমন (s*s).sum()**.5
সংগৃহীত

6

ওল্ফ্রাম ভাষা (গণিত) , 19 বাইট

Sqrt
<<Quaternions`

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

ম্যাথামেটিকায় কোয়ার্টেরিয়নও অন্তর্নির্মিত রয়েছে তবে এটি আরও ভার্জোজ।


যদিও বিল্ট-ইনগুলি দুর্দান্ত দেখায়, আপটোট সমাধানগুলি করুন যা বিল্ট-ইনগুলিও ব্যবহার করে না! আমি চাই না যে এইচএনকিউ-তে পৌঁছানো প্রশ্নগুলিতে ভোট স্কাই হোক।


4

জাভাস্ক্রিপ্ট (ES7), 55 53 বাইট

Xnor দ্বারা ব্যবহৃত সরাসরি সূত্রের ভিত্তিতে

অ্যারে হিসাবে ইনপুট নেয়।

q=>q.map(v=>1/q?v/2/q:q=((v+Math.hypot(...q))/2)**.5)

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

কিভাবে?

q=[a,b,c,d]

x=a+a2+b2+c2+d22

এবং ফেরত:

[x,b2x,c2x,d2x]

q =>                            // q[] = input array
  q.map(v =>                    // for each value v in q[]:
    1 / q ?                     //   if q is numeric (2nd to 4th iteration):
      v / 2 / q                 //     yield v / 2q
    :                           //   else (1st iteration, with v = a):
      q = (                     //     compute x (as defined above) and store it in q
        (v + Math.hypot(...q))  //     we use Math.hypot(...q) to compute:
        / 2                     //       (q[0]**2 + q[1]**2 + q[2]**2 + q[3]**2) ** 0.5
      ) ** .5                   //     yield x
  )                             // end of map()

3

হাস্কেল , 51 বাইট

f(a:l)|r<-a+sqrt(sum$(^2)<$>a:l)=(/sqrt(r*2))<$>r:l

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

একটি সরাসরি সূত্র। আউটপুটের আসল অংশটি r/sqrt(r*2)কল্পিত অংশের মত প্রকাশের সমান্তরাল হিসাবে প্রকাশ করার মূল কৌশল , যা কয়েক বাইটের বেশি সঞ্চয় করে:

54 বাইট

f(a:l)|s<-sqrt$2*(a+sqrt(sum$(^2)<$>a:l))=s/2:map(/s)l

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


3

কাঠকয়লা , 32 বাইট

≔X⊗⁺§θ⁰XΣEθ×ιι·⁵¦·⁵η≧∕ηθ§≔θ⁰⊘ηIθ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। @ Xnor এর পাইথন উত্তরের পোর্ট। ব্যাখ্যা:

≔X⊗⁺§θ⁰XΣEθ×ιι·⁵¦·⁵η

|x+yu|=x2+y2=(a2b2)2+(2ab)2=a2+b2x2a22a

≧∕ηθ

y=2abb2a

§≔θ⁰⊘η

2a

Iθ

মানগুলিকে স্ট্রিংয়ে কাস্ট করুন এবং অন্তর্নিহিতভাবে মুদ্রণ করুন।


3

জাভা 8, 84 বাইট

(a,b,c,d)->(a=Math.sqrt(2*(a+Math.sqrt(a*a+b*b+c*c+d*d))))/2+" "+b/a+" "+c/a+" "+d/a

@ এক্সনোরের পাইথন 2 উত্তরটির বন্দর ।

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

ব্যাখ্যা:

(a,b,c,d)->           // Method with four double parameters and String return-type
  (a=                 //  Change `a` to:
     Math.sqrt(       //   The square root of:
       2*             //    Two times:
         (a+          //     `a` plus,
          Math.sqrt(  //     the square-root of:
            a*a       //      `a`  squared,
            +b*b      //      `b` squared,
            +c*c      //      `c` squared,
            +d*d))))  //      And `d` squared summed together
  /2                  //  Then return this modified `a` divided by 2
  +" "+b/a            //  `b` divided by the modified `a`
  +" "+c/a            //  `c` divided by the modified `a`
  +" "+d/a            //  And `d` divided by the modified `a`, with space delimiters

2

05 এ বি 1 ই , 14 বাইট

nOtsн+·t©/¦®;š

@ এক্সনোরের পাইথন 2 উত্তরটির বন্দর ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

n                 # Square each number in the (implicit) input-list
 O                # Sum them
  t               # Take the square-root of that
   sн+            # Add the first item of the input-list
      ·           # Double it
       t          # Take the square-root of it
        ©         # Store it in the register (without popping)
         /        # Divide each value in the (implicit) input with it
          ¦       # Remove the first item
           ®;     # Push the value from the register again, and halve it
             š    # Prepend it to the list (and output implicitly)


2

সি #। নেট, 88 বাইট

(a,b,c,d)=>((a=System.Math.Sqrt(2*(a+System.Math.Sqrt(a*a+b*b+c*c+d*d))))/2,b/a,c/a,d/a)

আমার জাভা 8 এর বন্দর উত্তর দেয় তবে স্ট্রিংয়ের পরিবর্তে একটি টুপল দেয়। আমি ভেবেছিলাম যে এটি আরও ছোট হত তবে দুর্ভাগ্যক্রমে 10 # বাইটের পরিবর্তে 4 বাইটের চেয়ে বেশি শেষ হওয়া সি # নেট এ জরুরী Math.Sqrtপ্রয়োজন System>

ল্যাম্বদা ঘোষণাটি বেশ মজাদার দেখাচ্ছে যদিও:

System.Func<double, double, double, double, (double, double, double, double)> f =

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


1

পার্ল 6 , 49 বাইট

{;(*+@^b>>².sum**.5*i).sqrt.&{.re,(@b X/2*.re)}}

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

হিসাবে ইনপুট গ্রহণ কারি ফাংশন f(b,c,d)(a)। কোয়ার্টারিয়ন হিসাবে প্রদান করে a,(b,c,d)

ব্যাখ্যা

{;                                             }  # Block returning WhateverCode
     @^b>>².sum**.5     # Compute B of quaternion written as q = a + B*u
                        # (length of vector (b,c,d))
  (*+              *i)  # Complex number a + B*i
                      .sqrt  # Square root of complex number
                           .&{                }  # Return
                              .re,  # Real part of square root
                                  (@b X/2*.re)  # b,c,d divided by 2* real part
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.