विशेष कोणों के प्रिंट पाप, कॉस, और टैन


9

त्रिकोणमिति में, कुछ कोण होते हैं जिन्हें "विशेष कोण" के रूप में जाना जाता है। ऐसा इसलिए है क्योंकि जब आप इनमें से किसी एक कोण पर पाप, कॉस या टैन लेते हैं, तो आपको एक ऐसा परिणाम मिलता है, जिसे याद रखना आसान है क्योंकि यह एक परिमेय संख्या का वर्गमूल है। ये विशेष कोण हमेशा pi/6या तो कई गुना होते हैं , या pi/4। यहाँ सभी विशेष कोणों, और उनके संगत ट्रिगर मूल्यों का एक दृश्य है।

मूल्यों को ट्रिगर

जैसा कि आप देख सकते हैं, प्रत्येक कोण के लिए उनकी संख्याओं की एक समान जोड़ी है। पहला नंबर उस कोण का कोसाइन है, और दूसरा उस कोण का साइन है। इन कोणों में से एक को स्पर्श करने के लिए, बस पाप को कॉस से विभाजित करें। उदाहरण के लिए, tan(pi/6)के बराबर है

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

चुनौती

आपको एक पूरा प्रोग्राम लिखना होगा जिसमें 3 इनपुट हों।

  1. ट्रिगर फ़ंक्शन का प्रतिनिधित्व करने वाला एक एकल चार्ट जिसकी गणना आप करने वाले हैं यह या तो 's' (पाप), 'c' (cos), या 't' (tan) होगा।

  2. इनपुट कोण का अंश। यह कोई भी सकारात्मक पूर्णांक हो सकता है। ध्यान दें कि 5 का इनपुट मतलब अंश 5 * pi है।

  3. इनपुट कोण का हर। यह हमेशा निम्नलिखित में से एक होगा:1, 2, 3, 4, 6

फिर उस कोण के ट्रिगर फ़ंक्शन का सटीक मान प्रिंट करें। यहाँ 2 * pi तक के सभी कोणों के पाप, कोस और तन की सूची दी गई है:

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 से बड़ी लगती है, तो उस समय तक 2pi घटाएं जब तक कि आपको एक संख्या न मिल जाए जो सीमा में है। उदाहरण के लिए, sin(17pi/6)के रूप में ही है sin(5pi/6)== 1/2। आपके प्रोग्राम से मूल सरलीकरण करने की उम्मीद की जाती है, उदाहरण के लिए, यदि आपका इनपुट cos(2pi/4)यह है cos(pi/2)= = 0. तो वही है । बेसिन ट्रिगोनोमेट्री फ़ंक्शन को रोक दिया गया है।

बाइट्स जीत में सबसे छोटा जवाब!


क्या आउटपुट स्वरूप बिल्कुल निर्दिष्ट होना चाहिए?
lirtosiast

@ThomasKwa हाँ
जेम्स


@DigitalTrauma Haha, यही होगी अगली चुनौती! Jk ...
जेम्स

जवाबों:


2

पायथ, 125 122 बाइट्स

सूत्र का उपयोग करता है n = 4 - |floor(4.5-9k)|, जहां पर kπ = θ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])

ऑनलाइन टेस्ट करें

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