6
RFC 2550タイムスタンプを計算する
RFC 2550は、任意の日付をサポートできるタイムスタンプのスペース効率のよいASCII表現(1999年4月1日公開)の風刺的な提案です(宇宙の始まりより前のものと宇宙の予測された終わりより後のものも含む)。(: -万の手段すべてに0すべての範囲は、開始が含まれるが、最後を除外ノートを次のようにRFC 2550準拠のタイムスタンプを計算するためのアルゴリズムがあります):n0 <= n < 10000 年の形式 0〜10,000年:左にゼロが埋め込まれた4桁の10進数。 年10,000〜100,000:文字Aを前に付けた5桁の10進数。 年100,000〜10 30:年の10 進数。英語のアルファベットのインデックスが10進数の年の桁数から5を引いたものに等しい大文字のASCII文字を先頭に付けます(6桁の年の場合はB、7の場合はC桁の年など)。 年10 30 10 56 10 10,000と同じフォーマット:30、Aとの上に文字を開始し、さらにキャレット(接頭辞^年10ように(文字列に)30で表され^A1000000000000000000000000000000、年が10 31が表されていますによります^B10000000000000000000000000000000)。 年間10 56 10への732:今年は2つのキャレットと文字の大文字2つのASCIIで付けられます。大文字は、年の桁数から57を引いた26を底とする数値を形成します。 年10 732は、以降:10に対して同じフォーマット56 10へ732は、必要な場合、追加のキャレットと大文字を追加して延びる、使用されています。 BCE年(0年より前):年の絶対値の年文字列を計算します。次に、すべての文字を基数26の補数(A <-> Z、B <-> Yなど)に置き換え、すべての数字を基数10の補数(0 <-> 9、1 <-> 8、など)、キャレットを感嘆符(!)に置き換えます。年の文字列が4桁以下(つまり、-1〜-10,000)の場合は、スラッシュ(/)を先頭に追加します。年の文字列の前にスラッシュまたは感嘆符が付いていない場合は、アスタリスク(*)を付加します。 月、日、時間、分、秒:これらの値は最大でも2桁であるため、年の文字列の右側に、重要度の高い順に単純に追加され、必要に応じてゼロで左詰めされます2桁の文字列。 追加の精度:追加の精度(ミリ秒、マイクロ秒、ナノ秒などの形式)が必要な場合、これらの値はゼロで左詰めされ、3桁になります(各値は1/1000前の値であり、最大でであるため999)タイムスタンプの最後に、重要度の高い順に追加されます。 この形式には、対応するタイムスタンプの数値ソートと同等の字句ソートの利点があります-時刻Aが時刻Bの前に来ると、字句ソートが適用されるときにAのタイムスタンプがBのタイムスタンプの前になります。 チャレンジ 任意の長さの数値のリスト(重要度の降順の時間値に対応するなど[year, month, day, hour, minute, second, millisecond])を指定すると、対応するRFC 2550タイムスタンプを出力します。 ルール ソリューションは、任意の入力に対して機能する必要があります。唯一の制限は、時間と使用可能なメモリです。 …