संदर्भ कोण ज्ञात कीजिए


17

यह काफी सरल प्रश्न है। इस यादृच्छिक वेबसाइट के अनुसार मैंने पाया - वेब आर्काइव , एक संदर्भ कोण है the acute angle formed by the terminal side of the given angle and the x-axis.आपको इन्हें खोजने के लिए एक कार्यक्रम लिखना होगा।

मुझे बीजगणित 2 से कुछ भी याद नहीं है, इसका क्या मतलब है?

कोण आमतौर पर मानक रूप में दिए जाते हैं , जिसे कोण के एक तरफ रखकर और दूसरी तरफ, वामावर्त से मापा जाता है, जैसे कि:

मानक प्रपत्र

यह आपका इनपुट होगा। आपका आउटपुट इसका संदर्भ कोण होगा। आप इसके बारे में सोच सकते हैं कि मूल रूप से टर्मिनल की तरफ से एक्स-एक्सिस की सबसे छोटी दूरी है। सिवाय इसके कि यह एक कोण है, दूरी नहीं। यहाँ कुछ उदाहरण हैं:

क्वाड 2 रेफ क्वाड 1 रेफ

क्वाड 3 रेफ क्वाड 4 रेफ

स्पष्टीकरण

  • इनपुट और सबमिशन पर सभी चूक।
  • कोण डिग्री में हैं
  • नकारात्मक कोण, गैर पूर्णांक कोण और कोण> 360 डिग्री की अनुमति है।
  • उत्पादन के रूप में 60 deg
  • यह , इसलिए बाइट्स जीत में सबसे छोटा कोड है!

एक और उपयोगी लिंक

परीक्षण के मामलों

70      ->  70 deg
135     ->  45 deg
210     ->  30 deg
-60     ->  60 deg
91      ->  89 deg
610     ->  70 deg
-1000   ->  80 deg

1
हम 90 के इनपुट पर क्या करते हैं?
lirtosiast

2
@ThomasKwa यह किसी भी दिशा से 90 होगा।
माल्टीसेन

1
एक संक्षिप्त समाधान है abs(arcsin(sin(input)))+" deg", हालांकि मुझे नहीं पता कि कौन सी भाषा जीत जाएगी (इसे डिग्री और स्ट्रिंग संचालन का समर्थन करने की आवश्यकता होगी)।
lirtosiast

क्या इनपुट हमेशा एक पूर्णांक होता है?
lirtosiast

6
चूंकि गैर-पूर्णांक कोणों की अनुमति है, इसलिए आपको परीक्षण मामलों में एक को शामिल करना चाहिए।
डेनिस

जवाबों:



6

पायथ, 18 बाइट्स

+.a-%+QK90yKK" deg

इसे ऑनलाइन आज़माएं।


अपने एल्गो का उपयोग करके इसे 19 तक नीचे ले आया, लेकिन इनलाइन असाइनमेंट के
Maltysen

@ माल्टीसेन: धन्यवाद, एक और सुधार के रूप में अच्छी तरह से पाया
grovesNL

5

पायथन 2, 34 बाइट्स

lambda x:`90-abs(x%180-90)`+' deg'

"%d deg"स्ट्रिंग स्वरूपण का उपयोग आवश्यक कोष्ठक के कारण अधिक लंबा होगा।



4

डीसी, २५

90?90+d*v180%-d*vn[ deg]p

नोट इसके बजाय -ve चिन्ह के रूप में dcउपयोग करता _है -

परीक्षण उत्पादन:

$ for test in 70 135 210 _60 91 610 _1000; do dc -e'90?90+d*v180%-d*vn[ deg]p' <<< $test ; done
70 deg
45 deg
30 deg
60 deg
89 deg
70 deg
80 deg
$

3

गणितज्ञ, २२ ३१

ToString@Abs@Mod[#,180,-90]deg&

1
@ LegionMammal978 अगर मैं इसे सिर्फ गुणा करूंगा deg, तो 0 degयह बन जाएगा 0
एलेफाल्फा

1
जब से आप आउटपुट प्रकार के बारे में परवाह नहीं करते हैं, तो आप इस तरह से 2 बाइट्स बचा सकते हैं:Row@{Abs@Mod[#,180,-90],deg}&
LegionMammal978

3

अजगर 2, 35

lambda x:`min(x%180,-x%180)`+' deg'

कोण का छोटा और इसका ऋणात्मक मोडुलो 180। प्रभावी रूप से कोण को 0 से 180 तक सीमा में परिवर्तित करता है और दूरी को समापन बिंदु के करीब ले जाता है। ध्यान दें कि -x%180समूहों के रूप में (-x)%180

पायथन 3 के लिए स्ट्रिंग प्रारूपण के साथ समान लंबाई:

lambda x:'%d deg'%min(x%180,-x%180)

3

Pyth 25 30 बाइट्स

ट्रिक फ़ंक्शंस का उपयोग करते हुए दर्द रहित समाधान। Permalink

+.R.t.a.t.t.tQ7Z3 6?%Q1Q0" deg

किसी भी सुझाव का स्वागत करते हैं।


1
28 को .tकॉल करके और उन्हें एक तह में रखकर नीचे ले +.R.t.a.tF[Q7Z3)6?%Q1Q0" deg
आया

साफ। मैंने देखा कि यह एक फ्लोटिंग पॉइंट इनपुट के साथ काम नहीं करता है: 90.5 => 90.0 degहालाँकि।
विनी जूल

ऐसा इसलिए है क्योंकि आपका या तो नहीं है: pyth.herokuapp.com/…
माल्टीसेन

दिलचस्प कैच। इनपुट के साथ -60.5 => 60.5 degलेकिन साथ 60.5 => 60.0 deg। Pyth के साथ एक समस्या की तरह दिखता है - उदाहरण pyth / macros.py
Winny

1

जावास्क्रिप्ट (ईएस 6), 43 बाइट्स

Sp3000 के जवाब के समान , हालांकि जावास्क्रिप्ट में व्यवहार के कारण काफी लंबा है ।

f=x=>90-Math.abs((x%180+180)%180-90)+' deg'

डेमो

ब्राउज़र संगतता के लिए ES5 में कोड फिर से लिखा गया है:

function f(x){return 90-Math.abs((x%180+180)%180-90)+' deg'}

// Snippet stuff
console.log = function(x){document.body.innerHTML += x + '<br>'};
[70,135,210,-60,91,610,-1000].map(function(v){console.log(f(v))});

कॉफ़ीस्क्रिप्ट, 45 बाइट्स

f=(x)->90-Math.abs((x%180+180)%180-90)+' deg'

5
मुझे लगता है कि यह एक पीडीपी हार्डवेयर इंजीनियर द्वारा डिजाइन निर्णय था जो इस तथ्य के लिए जिम्मेदार है कि कई दशक बाद भी हमारे पास अभी भी बहुत कम भाषाएँ हैं जो %समझदारी से हैं।
पीटर टेलर

पहले 180 को (t=180)फिर से बदलने के साथ निम्नलिखित 180 को t के साथ बदलने से संभवत: कुछ बाइट
बच जाएंगी

@ vihan1086 यह वही है
rink.attenders.6


1

मतलूब, ४४

एक अनाम फ़ंक्शन का उपयोग करना:

f=@(x)[num2str(min(mod([x -x],180))) ' deg']

उदाहरण:

>> f=@(x)[num2str(min(mod([x -x],180))) ' deg']
f = 
    @(x)[num2str(min(mod([x,-x],180))),' deg']

>> f(70)
ans =
70 deg

>> f(210)
ans =
30 deg

>> f(-1000)
ans =
80 deg

4
यह हालांकि अंत में 'गिरावट' को शामिल नहीं करता है। (डाउनवोट नहीं किया।)
लीजेंड्रे

@ लेगेंड्रे ऊप्स। धन्यवाद! ठीक किया
लुइस मेंडो



-1

PHP, 44 बाइट्स

एक कमांड लाइन पैरामीटर लेता है। फिर से PHP जावास्क्रिप्ट के रूप में एक ही मुद्दे से ग्रस्त है

<?=90-abs(($argv[1]%180+180)%180-90)+' deg';

विहित समाधान का उपयोग करने के लिए 53 बाइट्स की आवश्यकता होती है (डिग्री और रेडियन रूपांतरण में बहुत सारे अक्षर होते हैं):

<?=rad2deg(abs(asin(sin(deg2rad($argv[1])))))+' deg';

1
क्या PHP .संघनन के लिए उपयोग नहीं करता है ?
डाउनगेट

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