Ruby 向け multiset ライブラリの ご紹介 H.Hiro(Maraigue) Twitter: @h_hiro_
<ul><li>Rails 入門 day と </li></ul><ul><li>いうことで、 </li></ul><ul><li>私の製作した </li></ul><ul><li>汎用 Ruby ライブラリを </li></ul><ul><l...
<ul><li>Rails 入門 day と </li></ul><ul><li>いうことで、 </li></ul><ul><li>私の製作した </li></ul><ul><li>汎用 Ruby ライブラリを </li></ul><ul><l...
<ul><li>自己紹介 </li></ul>Page:
<ul><li>H.Hiro </li></ul><ul><li>( 別名 :Maraigue  まれーぐ ) </li></ul><ul><li>Twitter: @h_hiro_ </li></ul><ul><li>この近くにある大学の大学...
<ul><li>今回のテーマ </li></ul>Page:
<ul><li>multiset </li></ul>Page:
<ul><li>日本語では </li></ul><ul><li>「多重集合」 </li></ul>Page:
<ul><li>何それ? </li></ul>Page:
<ul><li>簡単に言えば </li></ul>Page:
<ul><li>「どんなアイテムが」 </li></ul><ul><li>「何個含まれてるか」 </li></ul><ul><li>を表現するもの </li></ul>Page:
<ul><li>集計とかに </li></ul><ul><li>役立つ </li></ul>Page:
<ul><li>インストール </li></ul>Page:  gem install multiset
<ul><li>インストール </li></ul>Page:  gem install multiset (since 2011.3.25)
<ul><li>利用例 </li></ul><ul><li>require &quot;rubygems&quot; </li></ul><ul><li>require &quot;multiset&quot; </li></ul><ul><l...
<ul><li>結果 </li></ul><ul><li>【入力】 </li></ul><ul><li>Apple </li></ul><ul><li>Orange </li></ul><ul><li>Apple </li></ul><ul><...
<ul><li>でも </li></ul><ul><li>その程度なら </li></ul>Page:
<ul><li>result = {} #  空のハッシュ </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result[li...
<ul><li>そんなこと </li></ul><ul><li>ないよ! </li></ul>Page:
<ul><li>【 multiset を使った場合】 </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result << li...
<ul><li>【 multiset を使った場合】 </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result << li...
<ul><li>それだけ </li></ul><ul><li>じゃない </li></ul>Page:
<ul><li>最初から </li></ul><ul><li>multiset で </li></ul><ul><li>やっていれば </li></ul>Page:
<ul><li>require &quot;rubygems&quot; </li></ul><ul><li>require &quot;multiset&quot; </li></ul><ul><li>result = Multiset.ne...
<ul><li>require &quot;rubygems&quot; </li></ul><ul><li>require &quot;multiset&quot; </li></ul><ul><li>result = Multiset.ne...
<ul><li>普通の配列と </li></ul><ul><li>同じようにも扱える </li></ul><ul><li>( ハッシュで集計して </li></ul><ul><li>るとそうはいかない ) </li></ul>Page:
<ul><li>熱い思いは </li></ul><ul><li>この辺にしておいて </li></ul><ul><li>実用的な話を。 </li></ul>Page:
<ul><li>(1)multiset の生成方法 </li></ul><ul><li>result = Multiset.new </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) d...
<ul><li>(2)multimap:1 つのキーに対して </li></ul><ul><li>複数の値を持てる連想配列 </li></ul><ul><li>mm = Multimap.new </li></ul><ul><li>mm[&qu...
<ul><li>(2)multimap:1 つのキーに対して </li></ul><ul><li>複数の値を持てる連想配列 </li></ul><ul><li>mm = Multimap.new </li></ul><ul><li>mm[&qu...
<ul><li>おさらい </li></ul>Page:
<ul><li>multiset: 「アイテムとその個数」の組を 格納することに特化した データ構造 </li></ul><ul><li>multiset ライブラリを 使うメリット ■直感的に書ける ■配列のごとく扱える </li></ul>...
<ul><li>インストール: gem install multiset </li></ul><ul><li>使う前のおまじない: require &quot;rubygems&quot; require &quot;multiset&quot...
<ul><li>ありがとう </li></ul><ul><li>ございました </li></ul>Page:
Prochain SlideShare
Chargement dans…5
×

CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」

2 186 vues

Publié le

CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」資料
参考URL: http://maraigue.hhiro.net/multiset/

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 186
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」

  1. 1. Ruby 向け multiset ライブラリの ご紹介 H.Hiro(Maraigue) Twitter: @h_hiro_
  2. 2. <ul><li>Rails 入門 day と </li></ul><ul><li>いうことで、 </li></ul><ul><li>私の製作した </li></ul><ul><li>汎用 Ruby ライブラリを </li></ul><ul><li>ゆるく紹介 </li></ul>Page:
  3. 3. <ul><li>Rails 入門 day と </li></ul><ul><li>いうことで、 </li></ul><ul><li>私の製作した </li></ul><ul><li>汎用 Ruby ライブラリを </li></ul><ul><li>ゆるく紹介 </li></ul>Page:
  4. 4. <ul><li>自己紹介 </li></ul>Page:
  5. 5. <ul><li>H.Hiro </li></ul><ul><li>( 別名 :Maraigue まれーぐ ) </li></ul><ul><li>Twitter: @h_hiro_ </li></ul><ul><li>この近くにある大学の大学院生 </li></ul><ul><li>Ruby 大好き </li></ul><ul><li>C# とか C++ とかもよく書きます (Windows/WindowsMobile) </li></ul>Page:
  6. 6. <ul><li>今回のテーマ </li></ul>Page:
  7. 7. <ul><li>multiset </li></ul>Page:
  8. 8. <ul><li>日本語では </li></ul><ul><li>「多重集合」 </li></ul>Page:
  9. 9. <ul><li>何それ? </li></ul>Page:
  10. 10. <ul><li>簡単に言えば </li></ul>Page:
  11. 11. <ul><li>「どんなアイテムが」 </li></ul><ul><li>「何個含まれてるか」 </li></ul><ul><li>を表現するもの </li></ul>Page:
  12. 12. <ul><li>集計とかに </li></ul><ul><li>役立つ </li></ul>Page:
  13. 13. <ul><li>インストール </li></ul>Page: gem install multiset
  14. 14. <ul><li>インストール </li></ul>Page: gem install multiset (since 2011.3.25)
  15. 15. <ul><li>利用例 </li></ul><ul><li>require &quot;rubygems&quot; </li></ul><ul><li>require &quot;multiset&quot; </li></ul><ul><li>result = Multiset.new </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result << line </li></ul><ul><li>end </li></ul><ul><li>p result </li></ul>Page:
  16. 16. <ul><li>結果 </li></ul><ul><li>【入力】 </li></ul><ul><li>Apple </li></ul><ul><li>Orange </li></ul><ul><li>Apple </li></ul><ul><li>Apple </li></ul><ul><li>Melon </li></ul><ul><li>Orange </li></ul><ul><li>【出力】 </li></ul><ul><li>#<Multiset:#1 &quot;Melonn&quot;, #3 &quot;Applen&quot;, #2 &quot;Orangen&quot;> </li></ul>Page:
  17. 17. <ul><li>でも </li></ul><ul><li>その程度なら </li></ul>Page:
  18. 18. <ul><li>result = {} # 空のハッシュ </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result[line] ||= 0 # 未割当なら初期化 </li></ul><ul><li>result[line] += 1 </li></ul><ul><li>end </li></ul><ul><li>p result </li></ul><ul><li>でいいと言われるかも </li></ul>Page:
  19. 19. <ul><li>そんなこと </li></ul><ul><li>ないよ! </li></ul>Page:
  20. 20. <ul><li>【 multiset を使った場合】 </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result << line </li></ul><ul><li>end </li></ul><ul><li>【 multiset を使わない場合】 </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result[line] ||= 0 # 未割当なら初期化 </li></ul><ul><li>result[line] += 1 </li></ul><ul><li>end </li></ul>Page:
  21. 21. <ul><li>【 multiset を使った場合】 </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result << line </li></ul><ul><li>end </li></ul><ul><li>【 multiset を使わない場合】 </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result[line] ||= 0 # 未割当なら初期化 </li></ul><ul><li>result[line] += 1 </li></ul><ul><li>end </li></ul>Page: こういう「本筋に関係ない」 ロジックは邪魔だと 思いませんか!?
  22. 22. <ul><li>それだけ </li></ul><ul><li>じゃない </li></ul>Page:
  23. 23. <ul><li>最初から </li></ul><ul><li>multiset で </li></ul><ul><li>やっていれば </li></ul>Page:
  24. 24. <ul><li>require &quot;rubygems&quot; </li></ul><ul><li>require &quot;multiset&quot; </li></ul><ul><li>result = Multiset.new </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result << line </li></ul><ul><li>end </li></ul>Page:
  25. 25. <ul><li>require &quot;rubygems&quot; </li></ul><ul><li>require &quot;multiset&quot; </li></ul><ul><li>result = Multiset.new </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result << line </li></ul><ul><li>end </li></ul><ul><li>result.each do |item| </li></ul><ul><li>puts &quot;#{item} is found&quot; </li></ul><ul><li>end </li></ul>Page:
  26. 26. <ul><li>普通の配列と </li></ul><ul><li>同じようにも扱える </li></ul><ul><li>( ハッシュで集計して </li></ul><ul><li>るとそうはいかない ) </li></ul>Page:
  27. 27. <ul><li>熱い思いは </li></ul><ul><li>この辺にしておいて </li></ul><ul><li>実用的な話を。 </li></ul>Page:
  28. 28. <ul><li>(1)multiset の生成方法 </li></ul><ul><li>result = Multiset.new </li></ul><ul><li>File.foreach(&quot;sample.txt&quot;) do |line| </li></ul><ul><li>result << line </li></ul><ul><li>end </li></ul><ul><li>は </li></ul><ul><li>data = File.readlines(&quot;sample.txt&quot;) </li></ul><ul><li>result = Multiset.new(data) </li></ul><ul><li>とも書ける </li></ul>Page:
  29. 29. <ul><li>(2)multimap:1 つのキーに対して </li></ul><ul><li>複数の値を持てる連想配列 </li></ul><ul><li>mm = Multimap.new </li></ul><ul><li>mm[&quot;Hatsune&quot;] << &quot;Miku&quot; </li></ul><ul><li>mm[&quot;Kagamine&quot;] << &quot;Rin&quot; </li></ul><ul><li>mm[&quot;Kagamine&quot;] << &quot;Len&quot; </li></ul><ul><li>p mm </li></ul>Page:
  30. 30. <ul><li>(2)multimap:1 つのキーに対して </li></ul><ul><li>複数の値を持てる連想配列 </li></ul><ul><li>mm = Multimap.new </li></ul><ul><li>mm[&quot;Hatsune&quot;] << &quot;Miku&quot; </li></ul><ul><li>mm[&quot;Kagamine&quot;] << &quot;Rin&quot; </li></ul><ul><li>mm[&quot;Kagamine&quot;] << &quot;Len&quot; </li></ul><ul><li>p mm </li></ul><ul><li>#<Multimap:&quot;Hatsune&quot;=>{#1 &quot;Miku&quot;}, </li></ul><ul><li>&quot;Kagamine&quot;=>{#1 &quot;Rin&quot;, #1 &quot;Len&quot;}> </li></ul>Page:
  31. 31. <ul><li>おさらい </li></ul>Page:
  32. 32. <ul><li>multiset: 「アイテムとその個数」の組を 格納することに特化した データ構造 </li></ul><ul><li>multiset ライブラリを 使うメリット ■直感的に書ける ■配列のごとく扱える </li></ul>Page:
  33. 33. <ul><li>インストール: gem install multiset </li></ul><ul><li>使う前のおまじない: require &quot;rubygems&quot; require &quot;multiset&quot; </li></ul><ul><li>初期化 Multiset.new( 配列 ) 配列は省略可能 ( 空の Multiset を生成 ) </li></ul>Page:
  34. 34. <ul><li>ありがとう </li></ul><ul><li>ございました </li></ul>Page:

×