小ワザ
ラボ †
HSPで作るデータ構造に関する内容を扱いたいと思います。
データ構造に関するソースをお願いします。
ソースで語りましょう^^; -- kz3
- オープンアドレス法(クローズドハッシュ法)?
- チェイン法(連鎖法)?
- 連想配列
- 項目は予定です。誰が書いてもOKですし、追加もOKです。
立ち上げた本当の企みは公式wikiの将棋プログラムでαβ法などの実装にデータ構造が必須でちょっと興味があって考えていたり^^; -- kz3
- αβ法の説明にはある時点(局面というのかな?)での次の手が2つとか3つだけど実際は片方の駒の数×移動できる場所だけあるんだよね・・・?汗。
ということは・・・B木・・・ぇ、配列でB木?汗。ブツブツ。
となると実際は自分の駒に自分の駒に次の手で掛かってくる駒の手筋(?)だけ検索?(以上、妄想でした) -- kz3
- でも忘れてない!?将棋は一度取った持ち駒をどこにでも置けるんだよね?!
盤面だけじゃなくて、相手の持ち駒に関しても調べないとダメ・・・難しい・・・将棋作れる人は天才だ;; -- kz3
- むかし人間のチャンプに勝ったコンピュータチェス職人さんが、”金さえ出してもらえるなら将棋のも作りまっせ、ルールしらないけど”と言っていたのを思い出します。日本独特の持ち駒の問題やらでそら無理だろとまわりに止められてたみたいだけど。~そのくらい難しいらしい…といってもまともに強いコンピュータを作った場合の話だと思うんですが。 -- GENKI?
- うーん…それにしてもここの目次は知らない名詞ばかりが並んでいる どうしたものか -- GENKI?
- チェス→拡張→将棋というのも1つの手なのかも・・・? -- kz3
- リンクリストのイメージ図ですが現状、配列のイメージを書いていますが、本来ならデータ構造は言語に依存しない抽象的なモデル図で表されるのがいいのですが、絵が下手なのでナイスな絵が書けません・・・。データ構造を理解している方でそういったモデル図をかける方いましたら添付お願いします^^; -- kz3
- ガベージコレクト、正規表現といったデータ構造というよりはデータ構造を用いてガベージコレクトや正規表現を表現する、といった感じ。だけど現時点ではまだ実装の見通しはたっていませんが^^; -- kz3
- 面白いですねー
ガベージコレクト・・・動的メモリー割り当ての回収ですから、すべての変数がスタテックでパブリックなHSPでは無理?
実装は難しく簡単にしか知りませんが、各メモリーが自分の参照数を先頭アドレスに管理していて、0になるとGCコレクションに登録
だった気がします。
チェス、将棋・・・この辺のグラフ理論のアルゴリズムじゃなかったでしたっけ?
javaで重み付きグラフ理論のデータ構造を実装する時、何かで読んだような?読まなかったような?
連想配列(ハッシュ)・・・個人的には、データ型の基本?これ実装できたらかなり便利ですねー。
速度を求めないでも便利になる気がしますが、ハッシュ関数による実装とか、二分木による実装とかがオーソドックス?
あとの実装方法はわかりませんw-- araran
- perlが確か、参照カウンタを用いたガベージコレクトだった気がします。 -- kz3
- 僕もだった気がします。確か再帰とかすると問題なる厄介な奴?本当に忘れたw
HSPって動的に変数の確保とか開放って出来ましたっけ?
出来たとしてもgarbage(ゴミ)=プログラムから利用(参照)されない。の判断はコンパイル側でないとむずかしい気がします。
一個変数をデリートするとそいつから利用されている変数が芋吊る式に消えるとかなら出来るのかなー?
思いつくまま、調べもせずのカキコですみません。そのうち僕もデータ構造作ってみようかなw -- araran
- 再帰=自己参照のことかな・・・そう、自己参照するといつまで経ってもカウンタが0にならなくて回収されない^^; -- kz3
- HSPは動的確保できないんです・・・APIを使えばポインタの自己管理で出来なくはない予想ですが・・・
だからここのリンクリストも動的確保が出来れば延々と伸ばしていけるのですが、BASIC同様静的に確保した配列サイズに制限されてしまう。標準機能ではこれが精一杯だと思います・・・。
プラグイン側でデータ構造を管理すればHSPは1つのオブジェクトとして扱えたりなかったり・・・(妄想) -- kz3
- なるほど。DLL(プラグイン)としてコレクションフレームワーク的なものをHSPに提供するのも面白いかもです。D言語は生成したexeにもDLLにもGC内蔵になります。
ん?newしたオブジェクトは取得メソッドが呼ばれた時のために参照を保持しないと駄目ですなー。って事は、やっぱり一回は削除命令読んで貰わないと駄目ですねー。まぁ、その他のオブジェクトは自動的にGCされますが・・・ -- araran
- D言語の日本語リファレンスに、D言語のメモリ管理は全面的にGC(ガベージコレクト)を利用しているって書かれていましたね^^ -- kz3
- はい。全面的にGCです。DLLコンパイルしてもGC乗ります。自分達でGC作らないと面白くない? -- araran
- HSPでどこまでのデータ構造が作れるか冒険です! -- kz3
- それといつのまに、「もずかしい」直したんですね^^;残していてもよかったのに・・・笑。 -- kz3
- あぃ。(>Д<)ゝ”了解! そうするとGCは難しい気がします。HSPでハッシュ関数でも作って連想配列でも冒険してみようかな?<すでに誰か作ってたりしないですよね? 「もずかしい」恥ずかしいノ(´д`*) -- araran
- HSPだけによる連想配列は聞いたことないですね〜(単に情報を仕入れてないだけかも。
DLLで実装されていれば探せばみつかるかな。
WSHを触っていたときにDictionaryオブジェクトがあったのでCOM操作で出来ないかやってみてますが・・・プロパティに引数がつくものはどう書けばいいのかわかんない;; -- kz3
- ソースを連想配列ページに移動。ところで、ページ名占拠してしまった・・・汗。「COM/Dictionary」にしようかな・・・。 -- kz3
- http://www.nurs.or.jp/~sug/soft/super/hash.htmをベースHSPに起こして見ます。そのうちw -- araran