SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
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
}
ワンライナー?で動かしてみた
以上で終了!

 長い時間お付き合い
ありがとうございました。

Weitere ähnliche Inhalte

Was ist angesagt?

網路、設計、使用者經驗
網路、設計、使用者經驗網路、設計、使用者經驗
網路、設計、使用者經驗Charles (XXC) Chen
 
Dynamic Language による Silverlight2 アプリケーション開発
Dynamic Language による Silverlight2 アプリケーション開発Dynamic Language による Silverlight2 アプリケーション開発
Dynamic Language による Silverlight2 アプリケーション開発terurou
 
20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説mochiko AsTech
 
Bynet2.3 Microsoft. Mediacontent delivery using IIS7 and Silverlight3
Bynet2.3 Microsoft. Mediacontent delivery using IIS7 and Silverlight3Bynet2.3 Microsoft. Mediacontent delivery using IIS7 and Silverlight3
Bynet2.3 Microsoft. Mediacontent delivery using IIS7 and Silverlight3Транслируем.бел
 
Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)Yusuke Kawasaki
 
Ubuntu Firefox オススメ・アドオン
Ubuntu Firefox オススメ・アドオンUbuntu Firefox オススメ・アドオン
Ubuntu Firefox オススメ・アドオンubon
 
20090410 Gree Opentech Presentation (opening)
20090410 Gree Opentech Presentation (opening)20090410 Gree Opentech Presentation (opening)
20090410 Gree Opentech Presentation (opening)Hideki Yamane
 
Что такое ASP.NET MVC?
Что такое ASP.NET MVC?Что такое ASP.NET MVC?
Что такое ASP.NET MVC?Dima Pasko
 
20090410 Gree Opentech Main
20090410 Gree Opentech Main20090410 Gree Opentech Main
20090410 Gree Opentech MainHideki Yamane
 
Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证Chui-Wen Chiu
 
Delivery of media content of IIS Media Services
Delivery of media content of  IIS Media ServicesDelivery of media content of  IIS Media Services
Delivery of media content of IIS Media ServicesSQALab
 
Lerna 的套件管理術 - 2020 JSDC Taiwan
Lerna 的套件管理術 - 2020 JSDC TaiwanLerna 的套件管理術 - 2020 JSDC Taiwan
Lerna 的套件管理術 - 2020 JSDC TaiwanFong Liou
 
Kintone 導入サービス キャンペーン_20140903-1
Kintone 導入サービス キャンペーン_20140903-1Kintone 導入サービス キャンペーン_20140903-1
Kintone 導入サービス キャンペーン_20140903-1denet_tech_tokyo
 
20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編mochiko AsTech
 
Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5opportunity service
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2681
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2681俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2681
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2681Turkmenistan Laws
 
Sciencecafe Niigata(20090913)
Sciencecafe Niigata(20090913)Sciencecafe Niigata(20090913)
Sciencecafe Niigata(20090913)真 岡本
 

Was ist angesagt? (20)

網路、設計、使用者經驗
網路、設計、使用者經驗網路、設計、使用者經驗
網路、設計、使用者經驗
 
Dynamic Language による Silverlight2 アプリケーション開発
Dynamic Language による Silverlight2 アプリケーション開発Dynamic Language による Silverlight2 アプリケーション開発
Dynamic Language による Silverlight2 アプリケーション開発
 
20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説
 
Bynet2.3 Microsoft. Mediacontent delivery using IIS7 and Silverlight3
Bynet2.3 Microsoft. Mediacontent delivery using IIS7 and Silverlight3Bynet2.3 Microsoft. Mediacontent delivery using IIS7 and Silverlight3
Bynet2.3 Microsoft. Mediacontent delivery using IIS7 and Silverlight3
 
Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)
 
Ubuntu Firefox オススメ・アドオン
Ubuntu Firefox オススメ・アドオンUbuntu Firefox オススメ・アドオン
Ubuntu Firefox オススメ・アドオン
 
20090410 Gree Opentech Presentation (opening)
20090410 Gree Opentech Presentation (opening)20090410 Gree Opentech Presentation (opening)
20090410 Gree Opentech Presentation (opening)
 
It Flyer Page08
It Flyer Page08It Flyer Page08
It Flyer Page08
 
Что такое ASP.NET MVC?
Что такое ASP.NET MVC?Что такое ASP.NET MVC?
Что такое ASP.NET MVC?
 
20090410 Gree Opentech Main
20090410 Gree Opentech Main20090410 Gree Opentech Main
20090410 Gree Opentech Main
 
Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证
 
Bynet2.3 Microsoft Silverlight3 using for business
Bynet2.3 Microsoft Silverlight3 using for businessBynet2.3 Microsoft Silverlight3 using for business
Bynet2.3 Microsoft Silverlight3 using for business
 
Delivery of media content of IIS Media Services
Delivery of media content of  IIS Media ServicesDelivery of media content of  IIS Media Services
Delivery of media content of IIS Media Services
 
Lerna 的套件管理術 - 2020 JSDC Taiwan
Lerna 的套件管理術 - 2020 JSDC TaiwanLerna 的套件管理術 - 2020 JSDC Taiwan
Lerna 的套件管理術 - 2020 JSDC Taiwan
 
Kintone 導入サービス キャンペーン_20140903-1
Kintone 導入サービス キャンペーン_20140903-1Kintone 導入サービス キャンペーン_20140903-1
Kintone 導入サービス キャンペーン_20140903-1
 
20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編
 
Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5
 
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2681
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2681俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2681
俄罗斯进出口标准,技术规格,法律,法规,中英文,目录编号RG 2681
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Sciencecafe Niigata(20090913)
Sciencecafe Niigata(20090913)Sciencecafe Niigata(20090913)
Sciencecafe Niigata(20090913)
 

Ähnlich wie Tcl/Tk+ハッシュリスト

Sc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaSc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaToshihiro Nakamura
 
CSS Nite In Ginza, Vol.36
CSS Nite In Ginza, Vol.36CSS Nite In Ginza, Vol.36
CSS Nite In Ginza, Vol.36Nobuya Sato
 
081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh PeopleserviceHiroki Itoh
 
Search Engines Chapter 1 Summary
Search Engines Chapter 1 SummarySearch Engines Chapter 1 Summary
Search Engines Chapter 1 Summarysleepy_yoshi
 
スケールするiPhone/Smart Phoneビジネス
スケールするiPhone/Smart PhoneビジネススケールするiPhone/Smart Phoneビジネス
スケールするiPhone/Smart PhoneビジネスShinichi Takamiya
 
Webken 03: Project Design for Optimaizing User Experience
Webken 03: Project Design for Optimaizing User ExperienceWebken 03: Project Design for Optimaizing User Experience
Webken 03: Project Design for Optimaizing User ExperienceNobuya Sato
 
當時間的座標落在格林威治的左邊
當時間的座標落在格林威治的左邊當時間的座標落在格林威治的左邊
當時間的座標落在格林威治的左邊Vincent
 
Where20 2009report
Where20 2009reportWhere20 2009report
Where20 2009reportToru Mori
 
テーブルトピックススピーチの枠組み
テーブルトピックススピーチの枠組みテーブルトピックススピーチの枠組み
テーブルトピックススピーチの枠組みfantasistaVppr
 
テンプレート管理ツール r3
テンプレート管理ツール r3テンプレート管理ツール r3
テンプレート管理ツール r3Ippei Ogiwara
 
英語ブログのスヽメ - 1000スピーカープロジェクト#5
英語ブログのスヽメ - 1000スピーカープロジェクト#5英語ブログのスヽメ - 1000スピーカープロジェクト#5
英語ブログのスヽメ - 1000スピーカープロジェクト#5Yusuke Kawasaki
 
Gorm @ gopher china
Gorm @ gopher chinaGorm @ gopher china
Gorm @ gopher chinaJinzhu
 
Practical Bug Reporting
Practical Bug ReportingPractical Bug Reporting
Practical Bug Reportingcharsbar
 
Development toolsforteamdevelopment
Development toolsforteamdevelopmentDevelopment toolsforteamdevelopment
Development toolsforteamdevelopmentTakao Tetsuro
 
095722121-期中報告-UGC
095722121-期中報告-UGC095722121-期中報告-UGC
095722121-期中報告-UGCcherish0906
 

Ähnlich wie Tcl/Tk+ハッシュリスト (20)

Reloaded
ReloadedReloaded
Reloaded
 
Sc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaSc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク Doma
 
CSS Nite In Ginza, Vol.36
CSS Nite In Ginza, Vol.36CSS Nite In Ginza, Vol.36
CSS Nite In Ginza, Vol.36
 
Green IT
Green ITGreen IT
Green IT
 
081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice
 
Search Engines Chapter 1 Summary
Search Engines Chapter 1 SummarySearch Engines Chapter 1 Summary
Search Engines Chapter 1 Summary
 
スケールするiPhone/Smart Phoneビジネス
スケールするiPhone/Smart PhoneビジネススケールするiPhone/Smart Phoneビジネス
スケールするiPhone/Smart Phoneビジネス
 
Webken 03: Project Design for Optimaizing User Experience
Webken 03: Project Design for Optimaizing User ExperienceWebken 03: Project Design for Optimaizing User Experience
Webken 03: Project Design for Optimaizing User Experience
 
當時間的座標落在格林威治的左邊
當時間的座標落在格林威治的左邊當時間的座標落在格林威治的左邊
當時間的座標落在格林威治的左邊
 
Where20 2009report
Where20 2009reportWhere20 2009report
Where20 2009report
 
テーブルトピックススピーチの枠組み
テーブルトピックススピーチの枠組みテーブルトピックススピーチの枠組み
テーブルトピックススピーチの枠組み
 
テンプレート管理ツール r3
テンプレート管理ツール r3テンプレート管理ツール r3
テンプレート管理ツール r3
 
PHP超入門@LL温泉
PHP超入門@LL温泉PHP超入門@LL温泉
PHP超入門@LL温泉
 
英語ブログのスヽメ - 1000スピーカープロジェクト#5
英語ブログのスヽメ - 1000スピーカープロジェクト#5英語ブログのスヽメ - 1000スピーカープロジェクト#5
英語ブログのスヽメ - 1000スピーカープロジェクト#5
 
sigfpai73-kaji
sigfpai73-kajisigfpai73-kaji
sigfpai73-kaji
 
Gorm @ gopher china
Gorm @ gopher chinaGorm @ gopher china
Gorm @ gopher china
 
Practical Bug Reporting
Practical Bug ReportingPractical Bug Reporting
Practical Bug Reporting
 
Iir 08 ver.1.0
Iir 08 ver.1.0Iir 08 ver.1.0
Iir 08 ver.1.0
 
Development toolsforteamdevelopment
Development toolsforteamdevelopmentDevelopment toolsforteamdevelopment
Development toolsforteamdevelopment
 
095722121-期中報告-UGC
095722121-期中報告-UGC095722121-期中報告-UGC
095722121-期中報告-UGC
 

Mehr von Hiromu Shioya

不惑の生存戦略
不惑の生存戦略不惑の生存戦略
不惑の生存戦略Hiromu Shioya
 
珍獣 素人 そして くのいち
珍獣 素人 そして くのいち珍獣 素人 そして くのいち
珍獣 素人 そして くのいちHiromu Shioya
 
Rubyistが歩むべき道への道
Rubyistが歩むべき道への道Rubyistが歩むべき道への道
Rubyistが歩むべき道への道Hiromu Shioya
 
自宅で本気を出さされた
自宅で本気を出さされた自宅で本気を出さされた
自宅で本気を出さされたHiromu Shioya
 
クマとデバッグを
クマとデバッグをクマとデバッグを
クマとデバッグをHiromu Shioya
 
クマとジャーニーマンとステマ
クマとジャーニーマンとステマクマとジャーニーマンとステマ
クマとジャーニーマンとステマHiromu Shioya
 
お前の本気を見せてみろ!
お前の本気を見せてみろ!お前の本気を見せてみろ!
お前の本気を見せてみろ!Hiromu Shioya
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきたHiromu Shioya
 
三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイルHiromu Shioya
 
俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平Hiromu Shioya
 
ベジェ曲線を書いてみた
ベジェ曲線を書いてみたベジェ曲線を書いてみた
ベジェ曲線を書いてみたHiromu Shioya
 
オススメの技術書
オススメの技術書オススメの技術書
オススメの技術書Hiromu Shioya
 
はじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGitはじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGitHiromu Shioya
 
肉とRubyとわたし
肉とRubyとわたし肉とRubyとわたし
肉とRubyとわたしHiromu Shioya
 

Mehr von Hiromu Shioya (20)

不惑の生存戦略
不惑の生存戦略不惑の生存戦略
不惑の生存戦略
 
勉強会なう
勉強会なう勉強会なう
勉強会なう
 
LTの技術
LTの技術LTの技術
LTの技術
 
珍獣 素人 そして くのいち
珍獣 素人 そして くのいち珍獣 素人 そして くのいち
珍獣 素人 そして くのいち
 
夏夏
 
Tupperware
TupperwareTupperware
Tupperware
 
Rubyistが歩むべき道への道
Rubyistが歩むべき道への道Rubyistが歩むべき道への道
Rubyistが歩むべき道への道
 
自宅で本気を出さされた
自宅で本気を出さされた自宅で本気を出さされた
自宅で本気を出さされた
 
クマとデバッグを
クマとデバッグをクマとデバッグを
クマとデバッグを
 
クマとジャーニーマンとステマ
クマとジャーニーマンとステマクマとジャーニーマンとステマ
クマとジャーニーマンとステマ
 
お前の本気を見せてみろ!
お前の本気を見せてみろ!お前の本気を見せてみろ!
お前の本気を見せてみろ!
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきた
 
三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル
 
俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平
 
2011年の漢字
2011年の漢字2011年の漢字
2011年の漢字
 
ベジェ曲線を書いてみた
ベジェ曲線を書いてみたベジェ曲線を書いてみた
ベジェ曲線を書いてみた
 
オススメの技術書
オススメの技術書オススメの技術書
オススメの技術書
 
はじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGitはじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGit
 
肉とRubyとわたし
肉とRubyとわたし肉とRubyとわたし
肉とRubyとわたし
 
祝辞
祝辞祝辞
祝辞
 

Tcl/Tk+ハッシュリスト