परिचय
tl; डॉ
पृथ्वी से सूर्य की वर्तमान दूरी का लगातार उत्पादन।
सरलीकृत, सूर्य के चारों ओर पृथ्वी की कक्षा एक दीर्घवृत्त है। इसलिए दोनों के बीच वास्तविक दूरी लगातार बदल रही है। इस सूत्र का उपयोग करके किसी भी दिन इस दूरी की गणना की जा सकती है :
समीकरण को निम्न भागों 2 में विभाजित किया जा सकता है :
1
1 एयू (खगोलीय इकाई) का प्रतिनिधित्व करता है , बराबर है149,597,870.691 km
0.01672
है कक्षीय सनक पृथ्वी और सूर्य के बीचcos
निश्चित रूप से कोसाइन फ़ंक्शन है, लेकिन रेडियन की बजाय डिग्री में तर्क के साथ0.9856
है 360 ° / 365.256363 दिन , एक वर्ष में एक पूर्ण रोटेशन, जहां365.256363
एक नाक्षत्र वर्ष की लंबाई है, मतलब सौर दिनों मेंday
वर्ष का दिन है[1-365]
4
4 से 6 जनवरी के बीच, पेरिहेलियन को ऑफसेट का प्रतिनिधित्व करता है
सूत्र को पूरा दिन लगता है लेकिन इस चुनौती के उद्देश्य से - एक सतत आउटपुट - आपको अधिक सटीक होना होगा; या अगले दिन तक ज्यादा कुछ नहीं होगा। वर्तमान समय में पिछले समय का प्रतिशत जोड़ें, जैसे 1 :
day + (h * 3600 + m * 60 + s) / 864 / 100
कुछ उदाहरण:
- 1 जनवरी, 23:59:59
1.99998842592593
- 1 जनवरी, 18:00:00
1.75
- 1 जनवरी, 12:00:00 बजे
1.50
- 1 जनवरी, 06:00:00 बजे
1.25
इनपुट
इस चुनौती का कोई इनपुट नहीं है।
यदि आपकी भाषा को वर्तमान समय नहीं मिल सकता है, तो आप इसे अपने प्रोग्राम के इनपुट के रूप में प्राप्त कर सकते हैं। मान्य इनपुट टाइमस्टैम्प या पूर्ण तिथि-समय के तार हैं जो भाषा को सबसे अच्छी तरह सूट करते हैं। अकेले वर्तमान दिन (जैसे 5
5 जनवरी को या 5.25
उसी दिन शाम 6 बजे) को पास करने की अनुमति नहीं है।
उत्पादन
पृथ्वी से सूर्य की वर्तमान दूरी का उत्पादन करें:
- में मूल्य का उत्पादन
km
। - मूल्य को कम से कम हर सेकंड अपडेट करें ।
उदाहरण आउटपुट:
152098342
यदि यह आपकी बाइट गिनती नहीं बढ़ाता है, तो आप परिणाम को बहुत सुंदर प्रिंट कर सकते हैं:
152,098,342
152,098,342 km
आवश्यकताएँ
- आप एक कार्यक्रम या एक समारोह लिख सकते हैं। यदि यह एक अनाम फ़ंक्शन है, तो कृपया इसे कैसे लागू करें, इसका एक उदाहरण शामिल करें।
- यह कोड-गोल्फ है इसलिए बाइट्स में सबसे कम जवाब जीतता है।
- मानक खामियों को अस्वीकार कर दिया जाता है।
उदाहरण कार्यान्वयन
मैंने जावास्क्रिप्ट में एक उदाहरण कार्यान्वयन तैयार किया है। यह न तो प्रतिस्पर्धी है और न ही गोल्फ।
// dayOfYear from http://stackoverflow.com/a/8620357/1456376
Date.prototype.dayOfYear = function() {
var j1= new Date(this);
j1.setMonth(0, 0);
return Math.round((this-j1)/8.64e7);
}
// vars
var e = document.getElementById('view'),
au = 149597870.691,
deg2rad = Math.PI/180,
date = now = value = null;
// actual logic
function calculate() {
date = new Date();
now = date.dayOfYear() + (date.getHours() * 3600 + date.getMinutes() * 60 + date.getSeconds()) / 864 / 100;
value = 1 - 0.01672 * Math.cos(deg2rad * 0.9856 * (now - 4));
// supported in Firefox and Chrome, unfortunately not in Safari
e.innerHTML = Math.round(value * au).toLocaleString('en-US') + ' km';
setTimeout(calculate, 1000);
}
// let's do this
calculate();
<div id="view"></div>
1 अनुचित रूप से जटिलता को बढ़ाने के लिए, आपको अपने स्थानीय समय को यूटीसी में परिवर्तित करने की आवश्यकता नहीं है। यदि आप UTC का उपयोग करते हैं तो कृपया अपने उत्तर में एक नोट जोड़ें।
2 अधिक जानकारी के लिए भौतिकी में " वर्ष के एक निश्चित दिन पर पृथ्वी-सूर्य की दूरी " देखें
Math.cos
रेडियंस का उपयोग करने के बाद से आपका उदाहरण गलत है । और चूंकि यह सूत्र बहुत अनुमानित है, इसलिए आपको इस बात पर स्पष्ट होना होगा कि उत्तर कैसे सत्यापित किए जाने हैं।