この課題を克服するために必要なことは、特定のUnixタイムスタンプとスクリプトが実行される時間との間の数十年、年、週、日、時間、分、秒の数を出力する最短の「timeago」スクリプトを記述することです。
あなたは、例えば、「最低条件」の時間差を与えなければなら1 week
ない7 days
、9 years
ではありません0 decades 9 years
。また、1 day
notなど、複数形も正しく使用する必要があります1 days
。
スクリプトは、±1秒以内で正確でなければなりません(そのため、正確な2番目の丸め方法は重要ではありません)。
Time Equivalency Table
1 decade = 10 years
1 year = 31536000 seconds (not technically correct but close enough)
1 week = 7 days
1 day = 24 hours
1 hour = 60 minutes
1 minute = 60 seconds
出力は次の形式である必要があります
A decade(s) B year(s) C week(s) D day(s) E hour(s) F minute(s) G second(s)
ここでA...G
、すべて負でない整数でs
あり、複数形の場合のみ存在します。
ノート
- タイムスタンプは常に過去からの時間になります。ネガティブかもしれません。
- 入力と出力は、合理的なものであれば何でもかまいません。stdin/ stdout、関数の入力と戻り値など。
- 既にこれを行っているツールを使用することはできません。つまり、言語に
timesince(timestamp)
関数が組み込まれている場合は、その関数を使用できません。
私はこれを大幅に編集して、明確でない質問を持つ新しいユーザーと完璧を必要とする古いユーザーとの間のいくぶんばかげた戦いを和らげることを期待してより明確にするようにしています。(今はとあまりにも似ているかもしれませんが、それはひどい問題ではありませんでした。この)。
最後の回答から十分な時間が経過していることを考慮して、177バイトの Ruby実装を持つThree If By Whiskyがこのコンテキストの勝者であると宣言します!