দুটি পয়েন্টের মধ্যে কোণটি সন্ধান করুন


13

দুই পয়েন্ট দেওয়া Aএবং B, লাইন থেকে কোণটির এটি AOলাইন BOবিন্দু সম্পর্কে Oযেখানে Oমূল হল ( (0,0))। অতিরিক্তভাবে, কোণগুলি পয়েন্টগুলির অবস্থানের উপর নির্ভর করে ধনাত্মক বা নেতিবাচক হতে পারে (উদাহরণগুলি দেখুন)। ইনপুট হবে পয়েন্ট Aএবং Bএবং যে কোনও সুবিধাজনক আকারে দেওয়া যেতে পারে। আউটপুট ডিগ্রিতে কোণ হবে (তবে এটি AOপেতে উত্সটি সম্পর্কে ঘড়ির কাঁটার বিপরীতে ঘোরানো হয় BOএবং যদি এটি ঘড়ির কাঁটার দিকে ঘোরানো হয় তবে) এটি ইতিবাচক is যদি কোণটি 180 ডিগ্রি হয় তবে আপনি একটি নেতিবাচক বা ধনাত্মক আউটপুট ফিরে আসতে পারেন। একইভাবে, কোণ একই কোণ ( 90 degসমান -270 deg) এর ধনাত্মক বা নেতিবাচক সংস্করণ হতে পারে । উদাহরণ:

  • ইনপুট: A(5,5) B(5,-5)আউটপুট: -90( পেতে ডিগ্রি AOঘোরানো -90হয় BO)।

  • ইনপুট: A(5,-5) B(5,5)আউটপুট: 90( পেতে ডিগ্রি AOঘোরানো 90হয় BO)।

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড!


11
কত নির্ভুলতা প্রয়োজন?
রেটো কোরাডি

2
আমরা কি দুটি জটিল সংখ্যা হিসাবে ইনপুট নিতে পারি?
lirtosiast

5
এক বিন্দু হলে আউটপুটটি কী হওয়া উচিত (0,0)?
lirtosiast

1
@ থমাসকওয়া আমি ওপি সম্পর্কে জানিনা, তবে আমি এটিকে কেবল পূর্ণসংখ্যা / দশমিক সংখ্যা ইনপুট হিসাবে বিবেচনা করেছি এবং ইনপুটটির কখনই (0,0) পয়েন্ট থাকবে না।
গ্যামার কর্পস

2
ইঙ্গিত: মধ্যবর্তী কোণ AOএবং BOসাধারণত কোণ বলে অভিহিত করা হবে AOB
ইটিএইচ প্রডাকশনগুলি 26:55

উত্তর:


12

পাইথ, 11 বাইট

.t-FPM.jMQ6

প্রদর্শন

ইনপুটটি ফর্ম্যাটে দেওয়া হয়েছে:

[[Bx, By], [Ax, Ay]]

যদি এটি পছন্দ হয় যে এ প্রথম আসে, তবে এটি 1 বাইটের জন্য পরিবর্তন করা যেতে পারে।

ব্যাখ্যা:

.t-FPM.jMQ6
               Implicit: Q = eval(input())
      .jMQ     Convert input pairs to complex numbers.
    PM         Take their phases (angles in the complex plane).
  -F           Take the difference.
.t        6    Convert to degrees

22

টিআই-বেসিক, 13 বাইট

TI-83 + / 84 + সিরিজের ক্যালকুলেটরগুলির জন্য।

Degree
Input Y
min(ΔList(R►Pθ(Ans,∟Y

এই প্রোগ্রামটি ব্যবহার করতে, {x1,x2}আনস ভেরিয়েবলের মাধ্যমে এবং {y1,y2}প্রম্পটে তালিকাটি প্রবেশ করান ।


টিআই-বেসিক কমান্ডটি কি একটি একক বাইট?
কর্সিকা

সকল কমান্ড এখানে ছাড়া ΔList(হয় বাইট এক প্রতিটি। এর মধ্যে রয়েছে R►Pθ(
lirtosiast

কেবল ক্যালকুলেটর প্রোগ্রামিং ব্যবহারের জন্য +1। আমার হাই স্কুলের দিনগুলিতে আমাকে ট্রিগ এবং ক্যালকুলাসে ফিরিয়ে নিয়ে যায়।
ᴎᴅᴏƞaᴎᴅᴏƞ вєнᴎєƞ

চমৎকার রেফারেন্স! দুর্দান্ত শীতল।
কর্সিকা

10

সিজেম, 14 বাইট

q~::ma:-P/180*

এটি একটি সম্পূর্ণ প্রোগ্রাম যা [[Ax Ay] [Bx By]]এসটিডিআইএন থেকে ইনপুটটি পড়ে।

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

কিভাবে এটা কাজ করে

q~             e# Read and evaluate all input.
  ::ma         e# Replace each point (x, y) with atan2(x, y).
               e# This returns its angle with the positive y axis, measured clockwise.
      :-       e# Compute the difference of the two resulting angles.
               e# This returns the angle between the points, measured counter-clockwise.
        P/180* e# Divide by Pi and multiply by 180 to convert to degrees.

5
এই অনুষ্ঠানের প্রায় অর্ধেকটি রেডিয়ানদের কেবলমাত্র ডিগ্রিতে রূপান্তর করছে ...
ড্যারেল হফম্যান

@ ড্যারেলহফম্যান আমার কাছে এটি আরও মজাদার মনে হয়েছে যে পাইথের রূপান্তরটি 6 এর পরিবর্তে 3 বাইট, তাই যদি রেডিয়ানে ভাষাগুলির প্রতিবেদনের অনুমতি দেওয়া চ্যালেঞ্জটি বন্ধ করে দেওয়া হত
ফ্রাইআম দ্য এজম্যান

5

মিনকোলাং 0.9 , 112 বাইট

আমি সত্যিই এখন বিল্ট-ইন হিসেবে ত্রিকোণমিতি ফাংশন বাস্তবায়ন করতে চান ... কিন্তু এই মজার ছিল! (ক্যাভেট: এটি স্বাক্ষরিত কোণ পার্থক্যের চেয়ে ধনাত্মক কোণ পার্থক্যকে ছাড়িয়ে যায় my আমার সীমাবদ্ধতাগুলি দেখলে আমি মনে করি এটি ন্যায়সঙ্গত)

4[n]0c2c*1c3c*+r4[2;1R]r+1R+0g*12$:;$:8[0ci2*3+d1R;0g$:1i1+[i2*1+d1+$:*]*]$+'3.141592654'25*9;$:$:12$:r-66*5**N.

এখানে চেষ্টা করুন।

ব্যাখ্যা

যদি কেউ এটি চায় তবে আমি একটি পূর্ণ বিবরণ পোস্ট করব, তবে এর সংক্ষিপ্তসারটি হ'ল:

4[n]                                    Take in 4 integers from input
0c2c*1c3c*+                             dot product
r4[2;1R]r+1R+0g*12$:;                   magnitudes of vectors
$:                                      dot product divided by magnitudes (z)
8[0ci2*3+d1R;0g$:1i1+             *]    Taylor series for arccos
                     [i2*1+d1+$:*]      In particular, the coefficient (1/2 * 3/4 * ...)
$+                                      Add them all up!
'3.141592654'25*9;$:$:                  Divide by pi for converting to degrees
12$:r-                                  Subtract from 1/2 - I now have arccos(z)
66*5**                                  Convert to degrees
N.                                      Output as number and stop.

মিনকোলাং মন্তব্যগুলি সমর্থন করে? আমি এটি রিডমে খুঁজে পাইনি।
কনর ও'ব্রায়েন

1
@ কেওবি: এটি অন্য 2 ডি ভাষার মতো - মন্তব্যগুলি যা কিছু নেই প্রোগ্রামের কাউন্টারে পৌঁছায়।
এল'েন্দিয়া স্টারম্যান

ঠিক আছে তাহলে. এই বোধগম্য হয়, আমি কি ভাবছিলাম ডুনো।
কনর ও'ব্রায়েন

@ কেওবি: আপনার উত্তরের একটিতে মন্তব্যে আপনার স্পষ্ট ব্যবহার আমাকে তবুও অনুরূপ কার্যকারিতা বাস্তবায়নের বিষয়ে বিবেচনা করে। এটি একটি ঝরঝরে ধারণা এবং বাস্তবায়ন করা আমার পক্ষে মারাত্মক কঠিন হবে না।
এল'ইনিয়া স্টারম্যান

ধন্যবাদ! :Dএটাই কি হ্যালো ওয়ার্ল্ড চ্যালেঞ্জ যে আপনি মন্তব্যগুলিতে লক্ষ্য করেছেন (এফওয়াইআই ইন্টারপ্রেটার আমি সিম্প্লেক্সের জন্য বিভিন্ন "মোডে: স্ট্রিং মোড এবং কমেন্ট মোডে রান করি It এটি পার্স করা সত্যিই সহজ করে তোলে এবং আপনাকে একটিতে সিগন্যাল অক্ষর উপেক্ষা করতে দেয়) অন্যটিতে মোড করুন))
কনর ও'ব্রায়েন

4

গণিত, 22 বাইট

{-1,1.}.ArcTan@@@#/°&

উদাহরণ:

In[1]:= {-1,1.}.ArcTan@@@#/°&[{{5,5},{5,-5}}]

Out[1]= -90.

In[2]:= {-1,1.}.ArcTan@@@#/°&[{{5,-5},{5,5}}]

Out[2]= 90.

এটি কি ইনপুটগুলির মতো কাজ করবে{{0,1},{1,0}}
1815 এ lirtosiast

@ থমাসকওয়া অবশ্যই তা করবে।
আলেফালফ

4

জাভাস্ক্রিপ্ট, 66 বাইট

let f=(a,b)=>(Math.atan2(b.y,b.x)-Math.atan2(a.y,a.x))*180/Math.PI;

ডেমো


আমার 23 সেকেন্ড আগে = পি ভাল গল্ফ যদিও! বিটিডব্লিউ, আপনি বাদ দিতে পারেন let f=এবং এটি এখনও একটি বেনাম ফাংশন হিসাবে বৈধ হিসাবে বিবেচিত হয়।
Mwr247

3

জুলিয়া, 18 25 বাইট

f(A,B)=angle(B/A)/pi*180

এটি ধরে নিয়েছে যে "যে কোনও সুবিধাজনক ফর্ম" এরই মধ্যে জটিল সংখ্যা হিসাবে দেওয়া Aএবং Bদেওয়ার অনুমতি দেয় । তারপরে, জটিল সংখ্যা গাণিতিক সমস্ত ভারী উত্তোলন করে।

সম্পাদনা করুন: স্নিপেট ফাংশনে রূপান্তরিত। 18 বাইট সংস্করণটি কেবল জুলিয়া আরপিএলে কাজ করে।


3

পাইথন 2.7, 73 বাইট

from math import*
f=lambda A,B:degrees(atan2(B[1],B[0])-atan2(A[1],A[0]))

টেস্ট:

f((5,5),(5,-5)) #-90.0
f((5,-5),(5,5)) #90.0

পিপিসিজিতে আপনাকে স্বাগতম! এটি কোড-গল্ফ, সুতরাং আপনার যতখানি সম্ভব স্থান সরিয়ে আপনার কোডটি ছোট করার চেষ্টা করা উচিত।
mbomb007

1
আপনি বেপরোয়াভাবে যোগ কিছু দ্বারা আপনার কোড খাটো করতে পারেন *গুলি সব জায়গায় বেশি
FryAmTheEggman

3

অক্টাভা, 43 বাইট

f=@(a,b)(cart2pol(b)-cart2pol(a))(1)*180/pi

ইনপুট আউটপুট:

octave:40> f([5,5],[5,-5])
ans = -90

octave:41> f([1,0],[0,1])
ans = 90

3

সিজেম, 15 বাইট

l~ma@@ma-P/180*

ভেবেছিলাম সিজেএম গেমটিতেও আসব। এটি অনলাইনে চেষ্টা করুন । ইনপুট আকারে হয় bx by ax ay। দুর্ভাগ্যক্রমে, ডেনিসের উত্তরটি অনুলিপি না করেই এই চ্যালেঞ্জটি সম্পাদনের সবচেয়ে ছোট পদ্ধতি।


3

টিস্ক্রিপ্ট, 28 বাইট

আমার বাস্তবায়িত ট্রিগ ফাংশন করা উচিত ...

$.atan2(_[3]-y,z-x)*180/$.PI

অনলাইন ইনপুট এটি চেষ্টা করুনa.x a.y b.x b.y

ব্যাখ্যা

$.atan2(       // Arc Tangent of...
    _[3] - y,  // 4th input - 2nd input
       z - x,  // 3rd input - 1st input
) * 180 / $.PI // Converts rad -> deg

2

রুবি, 64 , 58 বাইট

a=->(b){b.map{|c|Math.atan2(*c)}.reduce(:-)*180/Math::PI}

ব্যবহার

a.call [[5, 5], [5, -5]] # => -90.0
a.call [[5, -5], [5, 5]] # => 90.0

2

জাভাস্ক্রিপ্ট, 49 বাইট

(a,b)=>((c=Math.atan2)(...b)-c(...a))/Math.PI*180

ইনপুট আকারে নেওয়া হয়: [aY, aX], [bY, bX](বিপরীত এক্স / ওয়াই লক্ষ্য করুন)


1

সিম্প্লেক্স v.0.7 , 13 বাইট

আমি আনন্দিত যে আমি যুক্ত করেছি mathrelations: ডি দুর্ভাগ্যক্রমে, আমি পয়েন্টওয়াইজ ইনপুট নিতে পারি না। সুতরাং, আমি প্রতিটি পয়েন্টকে পৃথক নম্বর (অক্ষ, আয়, বিএক্স, বাই) হিসাবে ইনপুট করি। (আমি ব্যবহার এই একটি সম্পদ হিসেবে।)

(iRi~^fR)2LSo
(       )2    ~~ repeat inner twice
 iRi          ~~ take two chars of input (x,y)
    ~         ~~ switch top 2 on stack
     ^f       ~~ apply atan2 on (y,x)
       R      ~~ go right
          L   ~~ go left
           S  ~~ subtract result
            o ~~ output as number

আমি যদি (আই, এক্স, বাই, বিএক্স) হিসাবে ইনপুট নিতে পারি তবে আমি একটি চর সংরক্ষণ করতে পারি:

(iRi^fR)2LSo

1

সি, 88 বাইট

#include<math.h>
typedef double d;d g(d x,d y,d a,d b){return atan2(b-y,a-x)*180/M_PI;}

জিসিসির অন্তর্নির্মিত গণিতের ধ্রুবকগুলির অংশ হিসাবে M_PIসংজ্ঞায়িত হওয়ার সুবিধা গ্রহণের জন্য জিসিসির সাথে সংকলন প্রয়োজন । অনলাইনে এটি ব্যবহার করে দেখুন - যেহেতু আইডিয়োন জিসিসি ব্যবহার করে না (স্পষ্টতই), তাই সঠিক হওয়ার জন্য পর্যাপ্ত অঙ্কের জন্য অতিরিক্ত কয়েকটি বাইট প্রয়োজন।math.h


অথবা এর 45/atan(1)পরিবর্তে 180/3.14159....(অনলাইন ডেমোতে)।
CompuChip

@ কমপুকশিপ আমি অনলাইন ডেমোকে সর্বাধিক গল্ফ করার চেষ্টা করছিলাম না
মেগো

আপনি বন্ধনগুলি অ্যাটান 2 (বাই, কুড়াল) সরিয়ে ফেলতে পারেন, যদিও আপনাকে ফেরতের পরে কোনও স্থান প্রয়োজন তাই এটি কেবল 1 বাইট সংরক্ষণ করে। আপনি যদি কে ও আর স্টাইলের ফাংশন ব্যবহার করতে পারেন তবে ডাবল জি (x, y, a, খ) ডাবল এক্স, ওয়াই, এ, বি; ছয় বাইটও সাশ্রয় করে।
Alchymist
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.