পাপ, কোস এবং বিশেষ কোণগুলির ট্যান মুদ্রণ করুন


9

ত্রিকোণমিতিতে কিছু নির্দিষ্ট কোণ রয়েছে যা "বিশেষ কোণ" নামে পরিচিত। এর কারণ এটি যখন আপনি এই কোণগুলির কোনওটির পাপ, কোস বা ট্যান গ্রহণ করেন, আপনি একটি ফলাফল পেয়ে যা সহজেই মনে রাখা যায় কারণ এটি একটি যুক্তিযুক্ত সংখ্যার বর্গমূল। এই বিশেষ কোণগুলি সর্বদা হয় উভয়ই এর গুণক pi/6, বা pi/4। এখানে সমস্ত বিশেষ কোণ এবং তাদের সম্পর্কিত ট্রিগের মানগুলির দৃশ্যায়ন রয়েছে।

ট্রিগার মান

যেমন আপনি দেখতে পাচ্ছেন, প্রতিটি কোণের জন্য এগুলি সংখ্যার সাথে সম্পর্কিত জুড়ি। প্রথম সংখ্যাটি সেই কোণটির কোসাইন এবং দ্বিতীয়টি angle কোণের সাইন। এর মধ্যে একটির স্পর্শকাতর সন্ধান করতে পাপকে কেবল ভাগ করুন। উদাহরণস্বরূপ, tan(pi/6)সমান

sin(pi/6) / cos(pi/6) == 
(1/2) / (√3/2) ==
1/√3 ==
√3/3

চ্যালেঞ্জ

আপনাকে অবশ্যই একটি সম্পূর্ণ প্রোগ্রাম লিখতে হবে যা 3 ইনপুট নেয়।

  1. আপনার গণনা করার কথা এমন ট্রিগ ফাংশন উপস্থাপন করে এমন একক চর। এটি হয় 's' (পাপ), 'সি' (কোস), বা 'টি' (ট্যান)।

  2. ইনপুট কোণের অঙ্ক। এটি কোনও ধনাত্মক পূর্ণসংখ্যার হতে পারে। নোট করুন যে 5 এর ইনপুট মানে সংখ্যার 5 * পাই হয়।

  3. ইনপুট কোণের ডিনোমিনেটর। এটি সর্বদা নিম্নলিখিতগুলির মধ্যে একটি হবে:1, 2, 3, 4, 6

তারপরে সেই কোণটির ট্রিগ ফাংশনটির সঠিক মানটি মুদ্রণ করুন। এখানে 2 * পিআই পর্যন্ত সমস্ত কোণগুলির পাপ, কোস এবং ট্যানের তালিকা রয়েছে:

sin(0pi):    0
sin(pi/6):   1/2
sin(pi/4):   root(2)/2
sin(pi/3):   root(3)/2
sin(pi/2):   1
sin(2pi/3):  root(3)/2
sin(3pi/4):  root(2)/2
sin(5pi/6):  1/2
sin(1pi):    0
sin(7pi/6):  -1/2
sin(5pi/4):  -root(2)/2
sin(4pi/3):  -root(3)/2
sin(3pi/2):  -1
sin(5pi/3):  -root(3)/2
sin(7pi/4):  -root(2)/2
sin(11pi/6): -1/2
sin(2pi):    0

cos(0pi):    1
cos(pi/6):   root(3)/2
cos(pi/4):   root(2)/2
cos(pi/3):   1/2
cos(pi/2):   0
cos(2pi/3):  -1/2
cos(3pi/4):  -root(2)/2
cos(5pi/6):  -root(3)/2
cos(1pi):    -1
cos(7pi/6):  -root(3)/2
cos(5pi/4):  -root(2)/2
cos(4pi/3):  -1/2
cos(3pi/2):  0
cos(5pi/3):  1/2
cos(7pi/4):  root(2)/2
cos(11pi/6): root(3)/2
cos(2pi):    1

tan(0pi):    0
tan(pi/6):   root(3)/3
tan(pi/4):   1
tan(pi/3):   root(3)
tan(pi/2):   nan
tan(2pi/3):  -root(3)
tan(3pi/4):  -1
tan(5pi/6):  -root(3)/3
tan(1pi):    0
tan(7pi/6):  root(3)/3
tan(5pi/4):  1
tan(4pi/3):  root(3)
tan(3pi/2):  nan
tan(5pi/3):  -root(3)
tan(7pi/4):  -1
tan(11pi/6): -root(3)/3
tan(2pi):    0

আপনি যদি 2pi এর চেয়ে বড় একটি নম্বর পান তবে সীমাতে থাকা একটি নম্বর না পাওয়া পর্যন্ত এটি থেকে 2 পিআই বিয়োগ করুন। উদাহরণস্বরূপ, == 1/2 এর sin(17pi/6)সমান sin(5pi/6)। আপনার প্রোগ্রামটি বেসিক সরলীকরণ করবে বলে আশা করা যায়, উদাহরণস্বরূপ, যদি আপনার ইনপুটটি এটি == 0 এর cos(2pi/4)সমান হয় তবে cos(pi/2)বিল্টিন ত্রিকোনমিতি ফাংশনগুলি অনুমোদিত নয়।

বাইট জিতে স্বল্পতম উত্তর!


আউটপুট ফর্ম্যাটটি ঠিক যেমন নির্দিষ্ট করা উচিত?
lirtosiast

@ থমাসকওয়া হ্যাঁ
জেমস


@ ডিজিটালট্রামুমা হাহাহা, এটিই পরবর্তী চ্যালেঞ্জ হবে! জে.কে ...
জেমস

উত্তর:


2

পাইথ, 125 122 বাইট

সূত্রটি ব্যবহার করে n = 4 - |floor(4.5-9k)|, যেখানে kπ = θকে দ্বিতীয় এবং তৃতীয় ইনপুটগুলির ভাগফল, কোন বিশেষ কোণটি প্রশ্ন রয়েছে তা নির্ধারণ করতে: কোণগুলি 0, 30, 45, 60 এবং 90 ডিগ্রি যথাক্রমে 0 থেকে 4 এবং 90 ~ 180 দ্বারা চিহ্নিত হয় ডিগ্রি কোণগুলি বিপরীতে যায়; এই সূত্র জন্য কাজ করে θ∈[0,π]। সংশ্লিষ্ট সাইনগুলির মানগুলি হবে sqrt(n)/2এবং অস্তিত্ব থাকবে, শূন্য নয় এমন স্পর্শকাতর হবে 3^(n/2-1)। যাইহোক, আমার বাস্তবায়ন আউটপুট ফর্ম্যাটটির উচ্চতর নিয়ন্ত্রণের জন্য হার্ড-কোডেড সংকুচিত স্ট্রিং সহ তালিকাগুলি ব্যবহার করে এবং কোডটি সেভাবে আরও সংক্ষিপ্ত বলে মনে হয়।

A,c." t8¾Îzp³9ÓÍÕ¬$ ·Íb³°ü"dc." t@a'óè©ê¶oyÑáîwÀ(";J+cEE?qz\c.5ZK-4.as-4.5*3*3%J1?qz\t+?>%J1 .5\-k@GK+?>%J2 1\-k@HK

আসুন একে পাইথোনিক সিউডোকোডে পরিণত করি:

                                   z = input()
                                   k = ""
                                   d = " "
                                   Z = 0
A,c." t8¾Îzp³9ÓÍÕ¬$ ·Íb³°ü"d       G = "0 sqrt(3)/3 1 sqrt(3) nan".split(d)
  c." t@a'óè©ê¶oyÑáîwÀ(";          H = "0 1/2 sqrt(2)/2 sqrt(3)/2 1".split()
J+cEE                              J = eval(input())/eval(input()) +
  ?qz\c.5Z                             0.5 if z == "c" else Z
                                   # the second term converts sin to cos
K-4.as-4.5*3*3%J1                  K = 4 - abs(int(4.5 - 3*3*(J%1)))
                                   # 9* would lose precision so 3*3* instead
?qz\t                              if z == "t"
  +?>%J1 .5\-k                         print(("-" if J%1 > 0.5 else k) +
   @GK                                     G[K])
                                   else:
  +?>%J2 1\-k                          print(("-" if J%2 > 1 else k) +
   @HK                                     H[K])

অনলাইন পরীক্ষা

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