บทนำ
TL; DR
ส่งออกอย่างต่อเนื่องระยะทางปัจจุบันจากโลกไปยังดวงอาทิตย์
อย่างง่ายวงโคจรของโลกรอบดวงอาทิตย์เป็นวงรี ดังนั้นระยะทางที่แท้จริงระหว่างทั้งสองจึงเปลี่ยนแปลงตลอดเวลา ระยะทางนี้สามารถคำนวณได้ทุกวันโดยใช้สูตรนี้ :
สมการสามารถแบ่งออกเป็นส่วนต่าง ๆ ดังต่อไปนี้2 :
1
แสดงถึง1 AU (หน่วยดาราศาสตร์) เท่ากับ149,597,870.691 km
0.01672
คือความ เยื้องศูนย์กลางของวงโคจรระหว่างโลกกับดวงอาทิตย์cos
แน่นอนว่าเป็นฟังก์ชันโคไซน์แต่มีอาร์กิวเมนต์เป็นองศาแทนที่จะเป็นเรเดียน0.9856
คือ360 ° / 365.256363 วันหมุนเต็มรูปแบบในหนึ่งปีโดยที่365.256363
ความยาวของปี sidereal ในวันสุริยคติเฉลี่ย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 น
1.50
- 1 มกราคม 06:00 น
1.25
อินพุต
ความท้าทายนี้ไม่มีการป้อนข้อมูล
หากภาษาของคุณไม่สามารถรับเวลาปัจจุบันคุณสามารถรับมันเป็นข้อมูลเข้าสู่โปรแกรมของคุณ อินพุตที่ถูกต้องคือการประทับเวลาหรือสตริงวันที่และเวลาที่เหมาะสมกับภาษาที่ดีที่สุด ไม่อนุญาตให้ผ่านวันปัจจุบันเพียงอย่างเดียว (เช่น5
วันที่ 5 มกราคมหรือ5.25
วันเดียวกันเวลา 6 โมงเช้า)
เอาท์พุต
ส่งออกระยะทางปัจจุบันจากโลกถึงดวงอาทิตย์:
km
เอาท์พุทค่าใน- อัพเดทค่าอย่างน้อยทุกวินาที
ตัวอย่างผลลัพธ์:
152098342
หากไม่เพิ่มจำนวนไบต์คุณสามารถพิมพ์ผลลัพธ์:
152,098,342
152,098,342 km
ความต้องการ
- คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น หากเป็นฟังก์ชันที่ไม่ระบุตัวตนโปรดระบุตัวอย่างของวิธีการเรียกใช้
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ
- ช่องโหว่มาตรฐานไม่ได้รับอนุญาต
ตัวอย่างการนำไปใช้
ฉันได้เตรียมตัวอย่างการใช้งานใน JavaScript มันไม่สามารถแข่งขันหรือเล่นกอล์ฟได้
// 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 หากคุณใช้ UTC โปรดเพิ่มบันทึกย่อในคำตอบของคุณ
2สำหรับรายละเอียดเพิ่มเติมโปรดดูที่ " ระยะทางโลก - ดวงอาทิตย์ในวันที่กำหนด " ในฟิสิกส์
Math.cos
ใช้เรเดียน และเนื่องจากสูตรนี้ดูเหมือนมากประมาณคุณจะต้องมีความชัดเจนเกี่ยวกับวิธีการคำตอบที่ได้รับการยืนยัน