轨道
/
Arturo
Arturo
/
练习
/
太空时代
太空时代

太空时代

中等

简介

2525 年,你刚刚踏上旅程,准备造访太阳系里的所有行星(水星、金星、地球、火星、木星、土星、天王星和海王星)。 第一站是水星,那里的海关要求你填写一张表格(看来官僚作风_并非_地球独有)。 你把表格递给海关官员,对方仔细查看后皱起了眉。 “你_真的_觉得我会相信你只有 50 岁吗? 你肯定快 200 岁了!”

你觉得好笑,等着海关官员笑出声,可对方一脸严肃,完全不像在开玩笑。 你这才意识到,自己填的年龄是按_地球年_算的,而官员期待的却是_水星年_! 水星绕太阳的公转周期比地球短得多,所以换算成水星年,你的年龄其实大得多。 快速计算一番之后,你报出了自己的水星年龄。 海关官员满意地笑了笑,挥手示意你通过。 你暗暗记下,以后过海关检查前要_提前_算好自己的各行星年龄,免得再出这种岔子。

Note

如果你想知道冥王星为什么没有入选,可以看看这个 YouTube 视频。

说明

给定一个以秒为单位的年龄,计算这个人在太阳系中某颗行星上的年龄。

一个地球年等于 365.25 个地球日,即 31,557,600 秒。 如果有人告诉你某人已经 1,000,000,000 秒大了,那么他的年龄就是 31.69 地球年。

对于其他行星,你需要考虑它们以地球年为单位的公转周期:

Planet Orbital period in Earth Years
Mercury 0.2408467
Venus 0.61519726
Earth 1.0
Mars 1.8808158
Jupiter 11.862615
Saturn 29.447498
Uranus 84.016846
Neptune 164.79132
Note

地球绕太阳完整公转一周的实际时长更接近 365.256 天(1 个恒星年)。 公历平均一年有 365.2425 天。 虽然不完全准确,但本练习采用的就是 365.25 这个值。 衡量一年的方法还有很多,参见维基百科上的“年”。

关于 Arturo 的特定信息

在这个练习中,你需要使用带有自定义单位的物理量来返回年龄,该单位表示那颗行星上一年的长度。 在 Arturo 中,一个量由数值和关联的计量单位组成。

length: 10`m
units length ; `m
scalar length ; 10

10`m * 10`m ; 100 m²
Caution

Arturo 内置的`yr unit 会转换为 31556952 秒。 因此,你需要根据前面说明中提到的秒数,定义并使用你自己的“年”单位。

量可以被转换为另一个兼容的单位。

convert 1`m `ft ; 1250/381 ft
convert 100`m2 `ft2 ; 156250000/145161 ft²

property `m  ; length
property `m2 ; area

convert 1`m `m2 ; conversion error results
Note

由于浮点数的精度限制,Arturo 有时会把标量存储为有理数。 可以使用 to 函数 改为获取近似的浮点数形式的数值。

length: convert 1`m `ft ; 1250/381 ft
to :floating length ; 3.280839895013123

Arturo 还允许我们为量指定自己的单位。

specify 'nauMile 1.151`mi
property `nauMile length
specify 'lea 3.00579`nauMile
property `lea ; length
depth: 20000`lea
convert depth `km ; 111355.7993425152 km
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Arturo Exercism

准备好开始 太空时代 了吗?

注册 Exercism,借助 79 个练习 和真人导师指导,学习并掌握 Arturo,全部免费。