1974 年に開発されたCode 39は、バーコードの最も一般的に使用される記号またはタイプの1つですが、小売販売で最も頻繁に見られるのはUPC / EANシステムです。Code 39バーコードは、大文字、数字、および一部の記号をエンコードでき、特別なフォントを使用してコンピューターソフトウェアから印刷するのは簡単です。これにより、商業および産業での幅広い利用が可能になりました(会社IDバッジ、資産追跡、ファクトリオートメーションなど)。
512x512ピクセルのグレースケール画像からあらゆる方向のCode 39バーコードを読み取るための最短のプログラムまたは関数を作成します。バーコードが水平または垂直に配置されていない可能性があります。
- プログラムは、標準のイメージファイル形式を受け入れ、バーコードでエンコードされたデータを標準出力または戻り値(開始/停止文字を含まない)として生成する必要があります。
- 有効なCode 39バーコードを複数含む画像はなく、スペース文字(ASCII 32)をエンコードするバーコードはありません。
- 画像に有効なCode 39バーコードが表示されない場合、プログラムは単一の疑問符(
?)を出力する必要があります。
有効なバーコードを使用した場合と使用しない場合の両方で、JavaScriptリファレンス実装と画像のテストスイートをPNG形式で準備しました。最新のWebブラウザーでは46のテストケースのうち3つだけが失敗するリファレンス実装は、上記の仕様に厳密に準拠するのではなく、1つの可能なデコードアルゴリズムを示すことを目的としています。
有効な送信は、これらのテストの少なくとも80%(37/46)に合格し、適度に高速なCPU(例:2.6 GHzクアッドコア)の各イメージで1分以内に完了します。私のリファレンス実装はテストの93%に合格し、各イメージを10秒以内に処理します(Google Chromeを実行しているデスクトップPCで)。