トラック
/
Arturo
Arturo
/
演習
/
宇宙の年齢
宇宙の年齢

宇宙の年齢

中級

はじめに

西暦2525年。太陽系のすべての惑星(水星、金星、地球、火星、木星、土星、天王星、海王星)を訪れる旅に出たところです。 最初の寄港地は水星で、ここでは税関で書類の記入を求められます(お役所仕事はどうやら地球固有のものではないようです)。 書類を税関職員に手渡すと、職員はそれをじっくりと見て、眉をひそめます。 「まさか、_本当に_50歳だと信じろとおっしゃるのですか? 200歳に近いはずですよ!」

面白くなって、職員が笑い出すのを待ちますが、どうやら大真面目のようです。 そこで気づきます。書いたのは_地球年_での年齢なのに、職員は_水星年_だと思っていたのです! 水星の公転周期は地球よりずっと短いため、水星年で数えると実際の年齢はもっとずっと高くなります。 すばやく計算して、水星年での年齢を伝えると、職員は満足そうに微笑み、先へ進むように手で合図します。 次に税関を通るときにこんな混乱を避けられるよう、惑星ごとの年齢を_あらかじめ_計算しておこうと心に決めます。

Note

冥王星がなぜ仲間に入っていないのか不思議に思った方は、こちらのYouTube動画を見てみてください。

説明

秒単位の年齢が与えられたとき、太陽系の惑星ではその人が何歳になるかを計算します。

地球での1年は365.25日、つまり31,557,600秒です。 もし誰かが1,000,000,000秒の年齢だとしたら、その人の年齢は地球での31.69年になります。

他の惑星については、地球年での公転周期を考慮する必要があります。

惑星 地球年での公転周期
水星 0.2408467
金星 0.61519726
地球 1.0
火星 1.8808158
木星 11.862615
土星 29.447498
天王星 84.016846
海王星 164.79132
Note

地球が太陽の周りを1周する実際の長さは、365.256日(1恒星年)に近い値です。 グレゴリオ暦は、平均すると365.2425日です。 完全に正確ではありませんが、この演習では365.25という値を使います。 1年の測り方については、Wikipediaの「年」の記事を参照してください。

Arturo固有の情報

この演習では、その惑星での1年の長さを表す独自の単位を持つ物理量を使って、年齢を返すことになります。 Arturoでは、量は数値と、それに対応する計量単位から成ります。

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

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

Arturoの組み込みの`yr単位は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を学んでマスターできます。すべて無料です。