• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Tcl/Tk+ハッシュリスト
 

Tcl/Tk+ハッシュリスト

on

  • 2,882 views

 

Statistics

Views

Total Views
2,882
Views on SlideShare
2,867
Embed Views
15

Actions

Likes
0
Downloads
2
Comments
0

2 Embeds 15

http://www.slideshare.net 8
http://tobe-tobe.kwappa.net 7

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tcl/Tk+ハッシュリスト Tcl/Tk+ハッシュリスト Presentation Transcript

    • Tcl/Tk+ハッシュリスト id:arihh
    • 自己紹介 • ID : arihh (ありひ~) • 第1回tobe-tobeで徳川綱吉をやった人 • 普段はWeb系プログラマ • 得意言語:PHP, Java, Ruby
    • アジェンダ • ハッシュって? • TCLって? • 実演 • 開発いろいろ • まとめ • おまけ
    • ハッシュって? • キーと値の組で持つデータ構造 キーを元にハッシュ値を取得し 配列のハッシュ値の位置に値を格納する。 • 実行時間はO(1) maxでO(n)。 ただし、衝突(後述)が発生する場合は
    • ハッシュの登録 Value:りんご Value:りんご Key:apple Key:apple ハッシュ関数 ハッシュ関数 ハッシュ値:4 ハッシュ値:4 1 2 3 4 5 apple りんご
    • ハッシュの検索 Key:apple Key:apple ハッシュ関数 ハッシュ関数 ハッシュ値:4 ハッシュ値:4 1 2 3 4 5 egg milk orange apple たまご ミルク みかん りんご りんご りんご
    • ハッシュの衝突 Value:iPod Value:iPod ハッシュ関数 ハッシュ関数 Key:mac Key:mac ハッシュ値:4 ハッシュ値:4 iPod 衝突 1 2 3 衝突 4 5 egg milk orange apple たまご ミルク みかん りんご
    • オープンアドレス法 Value:iPod Value:iPod ハッシュ関数 ハッシュ関数 Key:mac Key:mac ハッシュ値:4 ハッシュ値:4 iPod 1 2 3 4 5 egg milk orange apple mac 空いているアドレスへ 空いているアドレスへ たまご ミルク みかん りんご iPod
    • 直接連鎖法(チェイン法) Value:iPod Value:iPod ハッシュ関数 ハッシュ関数 Key:mac Key:mac ハッシュ値:4 ハッシュ値:4 iPod 1 2 3 4 5 egg milk orange apple たまご ミルク みかん 配列で持たせる。 りんご 配列で持たせる。 mac iPod
    • TCLって? GUIを簡単に使えるように作られた言語 普通はTk(GUIツールキット)とセット。 歴史 – 登場は1988年 – TCL/Tkは1998年 – 最近ではTkがPerl, Ruby, Python(Tkinter) などにも利用されている。
    • TCLの特徴 すべて文字列 • リストも文字列 • 配列といわれているものはすべて連想配列 • if文の句の部分も文字列として認識される 例) if {$a > 1 } { puts $a }
    • リストも文字列? TCLのリスト {a b c d e} 他の言語なら 文字列:“a b c d e” 同じもの 同じもの 配列:array(a, b, c, d, e)
    • とりあえずTCLを試したい • tclsh と叩けばtclのシェルが動き出すよ • wishで”Hello World”もできるよ #!/usr/bin/wish #!/usr/bin/wish pack[text .t] pack[text .t] .t insert end “Hello World” .t insert end “Hello World”
    • とりあえずインタプリタ。
    • 基本はこんなところで、 やっとメインの話。
    • 開発環境 • ActiveTcl (ActiveState で落とせる) • Eclipse – DLTK(Dynamic Languages Toolkit) – dbgp_tcldebug.exe • BLT
    • 実演その2
    • まとめ • Tkとセットということなので見せ方には拘るこ とができた • GUIの配置で一苦労 • ハッシュとの相性の悪さ そもそも配列=連想配列なのでリストを使うし かなかった。 $array(1) ではなく [lindex $array 1]と書く
    • 参考 • Tcl 8.4.1 Manual Command Reference http://www.freesoftnet.co.jp/tclkits/doc/TclCmdR ef/tcl_contents_jp.htm • Tcl/TkでWindowsプログラミング http://homepage3.nifty.com/kaku- chan/tcl_tk/index.html • もっと もっとTcl/Tk http://www.interq.or.jp/japan/s-imai/tcltk/
    • ご清聴ありがとうございました。
    • おまけ
    • 粗末な実装で申し訳ないので
    • ケブンリッジ関数作ってみた。
    • ケブンリッジ • 単語の最初と最後が合っていれば、中身の 順番がめちゃくちゃでも意味が通じる。
    • こんちには みさなん おんげき ですか? わしたは げんき です。 この ぶんょしう は いりぎす の ケブンッリジ だがいく の けゅきんう の けっか にんんげ は もじ を にしんき する とき その さしいょ と さいご の もさじえ あいてっれば じばんゅん は めくちちゃゃ でも ちんゃと よめる という けゅきんう に もづいとて わざと もじの じんばゅん を いかれえて あまりす。 どでうす? ちんゃと よゃちめう でしょ? ちんゃと よためら はのんう よしろく
    • TCLだとこんなコード proc cmabrigde {str} { proc p {z x} {expr int(rand()*2)} set y {} foreach s [string map {{ } { }} $str] { if {[regexp {^(¥S)(¥S{2,})(¥S)$} $s a f c e]} { lappend y $f[join [lsort -command p [split $c {}]] {}]$e } else { lappend y $s} } puts $y }
    • ワンライナー?で動かしてみた
    • 以上で終了! 長い時間お付き合い ありがとうございました。