文字列を圧縮

解決


ば。  URL  2003-02-19 17:25:22  No: 51083

現在、棋譜を蓄積して、成長していくリバーシゲームを作ろうとしています。

具体的には、
http://www.nurs.or.jp/~cosmos/reversi.zip
↑のものが作成中なのですが、
その棋譜の残し方とは、
勝った方の棋譜を、一手一手盤面ごとに蓄積して、
次回から、その盤面を示す棋譜ファイルがあれば、
そちらの手を優先するというものです。

そこまではうまくいったのですが、
その棋譜ファイル名が、盤面の状態を
0:ブランク
1:黒石
2:白石
で64個並べたものです。
しかしこれではあまりにHDDを圧迫するので、
文字列をうまく可逆圧縮出来るをご存知ないですか?


silver fox  2003-02-19 20:04:11  No: 51084

http://www.nurs.or.jp/~cosmos/reversi.zip
・・・

  リンク先のダウンロードファイル葉落とす気がないので確認はしていませんが、
一手一手を別々のファイルに保存しているのでしょうか?

> その棋譜ファイル名が、盤面の状態を
> 0:ブランク
・・・
> で64個並べたものです。

3ステートの情報なら
2ビット×64個/8ビット=16バイト  が一盤面で一つのファイルにどんどん
書き込んでいけばいいのでは?手数としては、いっても64手ですよね?

だとすれば
16バイト×64手=1024バイト  にしかならないと思いますけど。


ば。  URL  2003-02-19 23:46:17  No: 51085

はい、今のところ、局面が変化する毎に、
その局面を示すファイル名のファイルに書き込んでいます。

1つのファイルに保存するのは、
プログラムの実行時に、その棋譜を一時記憶用として用いてるのですが、
そのまま1つのファイルに蓄積させると、
読み込みの時や、データ上書きの時に、
巧く呼び出す方法が分からないのですが・・・

でもsilver foxさんの仰る方法の方が、
実行速度は速くなりそうなので、
もうちょっと効率的な文字列検索方法の勉強をしてみます。


silver fox  2003-02-20 00:00:52  No: 51086

> でもsilver foxさんの仰る方法の方が、
・・・
> もうちょっと効率的な文字列検索方法の勉強をしてみます。

ちなみに説明ではビットデータでの扱いでしたので文字列検索では駄目なような・・・


ば。  URL  2003-02-20 00:23:25  No: 51087

すいません、勘違いしてました。

この場合は、どのような検索方法が有効なのでしょうか?

手数は、最大でも60手で、(実際ありえないけど)
交互に打ち合うわけだから、
ファイルサイズは一局あたり500バイト弱ぐらいだと予想されます。


ば。  URL  2003-02-20 02:34:48  No: 51088

http://www.geocities.co.jp/SiliconValley-PaloAlto/6407/program/sample/3.html


圧縮プログラムを解説しているページを見つけました。
お騒がせしてすいませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加