言語仕様 · Playground

問題

五十日(ごとおび)=毎月 5・10・15・20・25・30 日」の本体式を書け(前提は wkst: Mon の @JP のみ・データ不要)。nth を 6 回並べない形が望ましい。

正答

everyDay |> filter(d => dayNo(d) mod 5 == 0)

判定基準: 評価範囲 2026-09-01..2026-10-01 で 2026-09-05, 2026-09-10, 2026-09-15, 2026-09-20, 2026-09-25, 2026-09-30(別解可——nth(5) | nth(10) | … の 6 本和も同一出力。 31 日を含めたら誤り)。

解説

「5 の倍数日」は暦座標糖衣 dayNo(d)(点の属する月内の日番号)の剰余で一発——列挙の和より 短く、意図(5 で割り切れる日)がそのまま式になる。31 日は 31 mod 5 == 1 なので自然に 落ちる。五十日は決済・集金の商慣習日で、営業日ロールと組む変種(五十日かつ営業日)が実務の 定番形。impl 実走検証済み(2026-08-01・公開 HEAD 9e46dcf)。

検証

# eval: 2026-09-01..2026-10-01
premise JP {
  calendar-system: Gregorian
  tz: "Asia/Tokyo"
  wkst: Mon
}

@JP
everyDay |> filter(d => dayNo(d) mod 5 == 0)
2026-09-05
2026-09-10
2026-09-15
2026-09-20
2026-09-25
2026-09-30