ブログ · 11 ページ目
開発とデザイン、あとは雑記。
URL 符号化:空白・プラス・二重符号化の罠
クエリでは + が空白、パスでは + はプラスです。同じ文字でも位置によって規則が異なり、二度符号化すると一致しない値が静かに生まれます。
中国将棋のルールで間違えやすい四箇所
馬の足止め、象の目塞ぎ、砲の台越し、両王対面。着手生成を幾何層と合法層に分けることで、間違いの大半は消えました。
cron パーサを書く:5 フィールド、和集合の規則、そして 2 月 30 日
構文は 30 分で書けます。難しいのは意味論です。日と曜日を両方指定したときは積ではなく和、存在しない日時には終了条件が要り、7 も 0 も日曜です。
CSV はカンマで切るものではない:RFC 4180 の引用符と改行
引用符付きのフィールドが 1 つ現れた時点で split は破綻します。引用符は区切り文字と改行を包み、内部の引用符は 2 つ重ねて書きます。30 行の状態機械が正規表現より確実です。
リバーシの合法手:8 方向を 1 回の走査で
空きマスが合法なのは、8 方向のうち少なくとも 1 方向で相手を挟める場合です。判定と反転は同じ走査で済み、置いて戻すシミュレーションは要りません。
数独ジェネレーター:穴を掘り、唯一解を保つ、そしてページを固めたバグ
完成した解を先に作り、一マスずつ掘りながら唯一解を検証します。求解器で 0 を「無制限」と解釈していたため、空盤では全解を列挙し、新規ゲームが固まりました。
