書路は漢字の最適な書き順を探索するサイトです。
「最適な書き順」とは、"漢字を完成させるために動かす筆の経路"を最適化した書き方のことです。要するに効率的な漢字の書き方です。
コンピュータが見つけ出した突飛な書き方は眺めていてとても楽しいです。是非今後の書き方の参考にしてください。…嘘です!参考にしないほうがいいです!
入力された漢字のUnicodeコードポイントを使い、KanjiVGというオープンソースデータベースからSVGファイルを取得します。このSVGには各画が 要素として収録されています。
SVGの全 を読み込み、それぞれについて以下を計算します。
-
画の総ピクセル長
-
書き始めの座標(始点)
-
書き終わりの座標(終点)
-
逆方向に書いた場合のパスデータ
ここが核心です。「ある画を書き終えた後、次にどの画を書き始めるか」のペン移動距離の合計を最小化します。
各画を「順方向」「逆方向」どちらで書いてもよいとして、全画を出発点として試みます(計 画数×2 通り)。
各出発点から貪欲法(最近傍法)で「今いる位置から最も近い次の画の始点」を繰り返し選んでいきます。
全パターンの中で総移動距離が最小だったものを「最短書き順」として採用します。
最近傍法は厳密な最適解を保証しない近似アルゴリズムです(厳密解を求める巡回セールスマン問題はNP困難)。
ただし画数が多くても高速に動作し、実用上十分に短い書き順を導き出します。
-
index.html:このサイトのメインページです。
-
script.js:JavaScriptファイルです。
PCとスマホに対応!! ※ブラウザについて:Google Chromeで開発をしました。他のブラウザでは動きが異なる可能性があります。
このプロジェクトの文章やコードは、 MITライセンス のもとで公開しています。自由にご利用ください。
詳しくは「LICENSE」ファイルをご覧ください。
漢字データ: KanjiVG © Ulrich Apel, CC BY-SA 3.0
作ったひと:sotomono(19歳)
※「書路」は、以前制作した漢字最短書き順比較サイトの改良版として、claudeで制作しました。