ruby

久しぶりにruby

前に作った辞書検索用のものをまとめてみました。 昔よりキレイに書けるようになった気がする。 その時に気づいたこと*1 evalを使えばdispatchが簡単に書ける 継承は結構便利 (他にもまだあったかもしれない) 使い方 こんな感じです #weblioで検索 $ dic_sea…

物語の体操にでてくるプロット作成法をruby+emacsで手軽に

物語の体操という本の中にプロット*1を作成する練習の仕方が書いてあるそうです。 (実際に読んだことはないです。><) タロットっぽいカードをシャッフルしてから並び替えて行うみたいです。 順番にそれぞれ意味があってその意味とカードの内容とを対応づけ…

ひとりしりとりをすると語彙力が上がるかもしれない。

はじめに こんなエントリを発見したので、語彙力を強化したいと思いました>< http://gitanez.seesaa.net/article/73526071.html http://gitanez.seesaa.net/article/73630167.html 語彙には使用語彙と理解語彙があるそうです。 使用語彙 自分が話す時に使…

ruby stem + Linguistics

http://d.hatena.ne.jp/n_shuyo/20071128/vocabulary#c の内容を理解しようと奮闘中。 (というより、同じようなコードを何も見ないで書けるようになるための方法を模索中? 何かしらに応用できそうな気がする。) 以下の2つのライブラリが使われている ling…

rubyでaccumulate-nを作ってみた

module Enumerable def accumulate_n(init) (0..self.first.size-1).inject([]) do |result, i| x = self.map{ |e| e[i]} result << x.inject(init){ |re,e| yield(re,e)} end end end a = (0..3).map{ |e| e * 3}.map{ |e| [e,e+1,e+2]} a # => [[0, 1, 2],…

ちょっとしたdirectoryの整理をemacs上で簡単に。

こんな状況のとき あるディレクトリ内にたくさんのファイルとたくさんのディレクトリがある。 ディレクトリ内のすべてのファイルは使用済みなので使わない 消すのももったいないので、ファイルをusedディレクトリに移動したい。 (ブラウザのダウンロードディ…

メモリ消費量を無視したquicksort

ブロック渡しの練習に良いかもしれない。 >準備運動のメニュー class Array def qsort(a=self) return a if a.size<=1 x=a.shift qsort(a.select{ |e| e <= x}).concat([x]).concat(qsort(a.select{ |e| x < e})) end def qsort2(a=self, &b) b = proc{ |e, …

anything-rcodetools.elを使うときに

追記 修正版では直っています。(修正版ではこの下に書いてあることは不要です。) rct-complete-symbol--anythingを使った時に、以下のようなエラーがでてしまいました。 save-current-buffer: Symbol's value as variable is void: anything-current-buffe…

準備運動用のメニューを出力

shellを立ち上げるのも面倒になった。 最近は、PCをつけたらまずはじめにこんなかんじのことをしています。 (shellを立ち上げて、"quiz.rb"を起動。ー>一行程度でお題が出される。それを5分ぐらいでする。) shellを立ち上げるのも面倒になりました。emacs…

putsと関数を呼ぶ位置を変えるだけでカウントアップ/ダウンになる理由

ただ単に再帰を使えばいいと勘違いしていたのでそれの補足。本当は、スタックを深く潜っていくときに引数を出力するか?スタックのそこから上がってくる時に引数を出力するか?によってカウントアップもカウントダウンも実装できるという意味だったみたい。…

emacs上で…

シェルコマンドの実行結果を今開いているバッファに出力 (defun shell-command-output-to-buffer (str) (interactive "scommand: ") (print (shell-command-to-string str) (current-buffer))) この様な関数を作っておくと便利かもしれない。 例えば、emac上…

open-uriにどんなメソッドがあるか調べてみた。

通信関係はどのようになっているかよく分かりません。 なので、open-uriにはどのようなメソッドが存在しているのか調べてみました。 open-uriって? httpをFileオブジェクトのような感じで扱えるライブラリ。 require 'open-uri' uri = "http://www.ruby-lan…

プログラミング準備運動のメニューを決める

トラックバックで準備運動のメニュー案をもらったので、実際にやってみました。 実際にやってみたもの 回文判定 ABCDEFを並べ替えてできる文字列を辞書順で出力する 再帰メソッドでカウントダウン 再帰メソッドでカウントアップ 全ての目が出るまでサイコロ…

プログラミングの準備運動

プログラミングにも準備運動が必要かもしない。 こんな感じのものができればいい。 コマンド一つで手軽に呼び出せる 表示される練習メニューのようなものは予測できない方が良い これからやるメニューが1行程度で表示される。 (5分グライでできるようなもの…

elisp+rubyで文章を変換するコードを書くのが楽になるかもしれない。

ファイルをrubyを使って変換したいと思った時に、 スクリプトを書く 実際に動くか調べる スクリプトの修正 (2,3を満足いくまでループ) のような感じで作ってました。 これだと実行結果を確認するためにいちいちシェルを起動して、作っているスクリプトのデ…

1次元オートマトン?

前に発見してから一度書いてみたいと思ってました。そして、今日時間があったので作ってみました。http://d.hatena.ne.jp/g7umz1cuwvsy/20071202/p1のサイトのコードを真似しました。(一部内容が変更されてたりします><) これから ルール30とかの意味を…

自分が作ったものを自分で添削

ファイル整理をしていたら、昔作ったrubyのコードがあった。*1 中を読んでみたら、何が書いてあるのか分かりませんでした>< 「d{d=数値}t{t=時間(e.g. 週間、ヵ月)}後の自分は他人」*2という話は本当なんだなーと思いました>< 添削方法 同じような振舞い…

番号がふってあるテキストファイルをhtml化して読む。

利点 色々情報を付加できる。 「次へ」、「前へ」のリンクを付けたりとか code とても汚いです><。 ファイルのあるところにおいてください。 $KCODE="utf8" target= ARGV[0] || "rensou" def make_html(txtname, name=nil, &filter) htmlname=txtname.spli…

heapsort

データ構造の説明 ひとつの配列でヒープを表している(classを作って再帰的にとかしてない) a[0..(a.size-1>>1)]までが親 a[i*2+1]が左側の子 a[i*2+2]が右側の子 常に親>子の関係が成り立っている。 a=(0..30).map{rand(100)} def a.heapsort &block n = s…

mergesort

a=[52, 0, 1, 92, 93, 83, 29, 99, 48, 13, 24, 28, 68, 17, 19, 82, 67, 14, 22, 85] def a.merge_sort(&cond) cond = proc{|x,y| x

べき集合を作ってみた

書き方を失敗したかもしれない。*1 たしか、べき集合を作る手間はO(2^n)なのでそんなに速度を求めても仕方がないかも #真偽の組み合わせを作る def make_bools(n) bool=[false,true] bools=Array.new(n,bool) concatter = proc{|xs,ys| xs.map{|x| ys.map{|y…

黒魔術に手を染めてしまったかもしれない。

再帰の技法という本にある問題で、こんな感じの出力を表示する問題があった。F true=>T でした">*1 bo b1 b2 (b0 or (b1 and (not b2))) ---------------------------------------- false false false false false false true false false true false true f…

うまくいかない。

要望 こんな感じのスクリプトが作りたい。 #作ったスクリプトの名前が「rpipe.rb」 $ which refe #=>/var/lib/gems/1.8/bin/refe $ which refe | rpipe.rb cat #cat /var/lib/gems/1.8/bin/refe に置換されて実行される。 問題点 ターゲットを親ディレクトリ…

コマンドの実行コストはrubyより重いかもしれない。

何かのアプリケーションを実行しているときに、そのアプリケーションのプロセス番号を調べるようなことがしたかった。 rubyプロセス番号を抽出するときに、ruby上でした方がいいのかコマンドのgrepでした方がいいのか分からなかった。なので調べてみた。(元…

インストールしているアプリケーションのdiffをとる

そろそろ、環境をきれいにしようかなと思ったので、てきとーに書いた。 使いかた 1回実行 現在インストールしているアプリの名前が入ったファイルが生成される (デフォルトでは「orignal_apls.list」 orignal_apls.listと今回のスクリプトを別の環境に持っ…

エラー出力を標準出力として扱う

エラー出力が長いときに、一度ファイルに保存してから読みたいと思った。 こうすると、エラー出力が標準出力に置き換わるみたい。 コード(名前はstderr_to_stdout.rb) #!/usr/bin/ruby command=ARGV.join(" ") STDERR.reopen($stdout) `#{command}` 使いかた…

ruby-listで…

ruby-listでこんなメールがあった。(ここで見れる。) 2*n 個の集合から、二個づつを取って n 個の組を作る全て の作りかたを、列挙する script が分からなくて少し 困っています。例えばこんなやつです。 [1,2,3,4] => [[[1,2],[3,4]],[1,3][2,4],[1,4],[2,3…

ruby-listで…(3)

結局、最初の方針であってた。 class GameMC def initialize arr set_seed(arr) @game_size = arr.length/2 @count = 0 shuffle end def set_seed a @seed=[] a.each_with_index do |e,i| a[i+1..-1].each {|ele| @seed << [e, ele]} end end def ok? result…

ruby-listで…(2)

間違ってたので、消しました>< さらに追記 1,7と7,1で重複してるww

継承について

継承を使ったコードを書いてみる。 rubyに標準で存在するArrayクラスを継承したクラスMyArrayをつくってみる。 このMyArrayクラスは、Arrayクラスとは異なり、要素のならびをシャッフルするshuffleメソッドを持っている。 class MyArray < Array #MyArrayはA…