本文へ移動

Tane種

シードで同じ数列を再現し、項目を並べ替えたり選んだり、日替わりの問題を共有したり、保存した位置から再開したりできます。

「種」は英語の seed に当たる日本語です。 名前について(英語)

目次

やり方

日替わりの問題を作る

UTCまたは指定したタイムゾーンの暦の日から日替わりの問題を作り、シードを日付へ戻します。

カレンダーを明示する

UTCなら全員が同じ日付の境界を使います。特定の場所の午前0時に変える場合はIANAのタイムゾーン名を使います。dayKey、dailySeed、nextDayStartは、1日を常に24時間とせず、そのカレンダーを使います。

import { dailySeed, dayKey, dayOfSeed, daySeed, nextDayStart } from "@johnmorrisdotca/tane";

const at = new Date("2026-10-11T03:00:00Z");
console.log(dayKey(at, "UTC"), dayKey(at, "America/Toronto"));
console.log(dailySeed(at, "UTC"));
console.log(nextDayStart(at, "America/Toronto").toISOString());
const block = { from: 1000000000, size: 100000000 };
console.log(dayOfSeed(daySeed("2026-10-11", block), block));
2026-10-11 2026-10-10
20261011
2026-10-11T04:00:00.000Z
2026-10-11

日替わり用の範囲を取る

daySeedはYYYYMMDDの数値をSeedBlockの中に置きます。その十進数の位置が入るだけの長さが必要です。dayOfSeedは日付へ戻し、実在する日付でなければnullです。ランダムなシードを引くときも同じブロックを予約して、範囲を分けます。

ページを開いたままにする

Reactの日替わりフックは選んだ場所の午前0時に更新します。基本エンジンだけを使う場合はnextDayStartで境界を調べ、更新は表示先が管理します。フックとシードの範囲に説明があります。

ソースを見るGitHub で編集@johnmorrisdotca/tane 1.3.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。