2015-06-01から1ヶ月間の記事一覧

市民公園にて

コールバックによるシステムの疎結合(Ruby)

『Rubyクックブック ―エキスパートのための応用レシピ集』p.67-70 の読解

Ruby で Tree 構造を作る

これは非常に未熟な記事です。特に初心者の方はあまりこの記事を真に受けないで下さい。(2019/5/22)※注意 ここでさらに一般的な Tree の例を与えてあります。そちらをどうぞ。 Rubyクックブック ―エキスパートのための応用レシピ集作者: Lucas Carlson,Leo…

Windows のスペースが入ったフォルダ名について

以下、Windows 7(7 でなくとも通用すると思います)についてです。Windows にはフォルダ名に(半角)スペースが入ったものが、システムにあります。Cドライブ直下の Program Files フォルダなど、まさにそうですね。これは、コマンドプロンプトなどでパスを…

シェイクスピアのソネットで使われた単語の使用頻度を調べる

Ruby で書きました。シェイクスピアの全作品はここにアーカイブされています。ソネットはその中のここを使いました。10回以上使われた単語を出力しています。結果はこちらです。love(160), sweet(55), time(53), beauty(52), eyes & eye(51 & 38), heart(50)…

methods メソッド(Ruby)

オブジェクトの取れるすべてのメソッドを返します。例えば Integer クラスの取れるメソッドなら、 p 1.methods でOK。結果は例えば [:to_s, :inspect, :-@, :+, :-, :*, :/, :div, :%, :modulo, :divmod, :fdiv, :**, :abs, :magnitude, :==, :===, :<=>, :>…

FizzBuzz問題(Ruby)

「FizzBuzz 問題」という有名な問題があることを知りました。 Fizz Buzz - WikipediaWikipedia から引用すると、 プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3…

map の拡張(Ruby)

RubyのEnumerable#mapをもっと便利にしたいよ - hp12c id:keysberry さんが考え出されました。おもしろいですねえ。こんなシンプルな実装だけれど、よくできている。勉強になります。また、実際便利そう。感謝のコピペしておきますね。 module Enumerable de…

段差つき繰り返し(Ruby)

しょうもない実装です。何かに使うかなあ。 class Integer def upto_with_steps(max, step) i = self while i <= max yield(i) i += step end end def downto_with_steps(min, step) i = self while i >= min yield(i) i -= step end end end 1.upto_with_st…

Ruby の繰り返しについて、些細なこと

Ruby では繰り返しを 1.upto(10) {|x| puts x} と書く書き方が好まれますね。また、 (1..10).each {|x| puts x} という書き方もある。まあ、Ruby に慣れていない人には for i in 1..10 puts i end の方がわかりやすいと思うので、僕はこっちで書くこともしま…

フィボナッチ数列を Ruby で

rscの日記さんのところに、カエルのジャンプの問題を解くというのがあったので、僕も Ruby でやってみました。或る回答にもありますが、これは本質的にフィボナッチ数列の問題です。葉っぱが n 枚のときのカエルの渡り方を num(n) とすると、直前の葉っぱか…

Rubyは参照の値渡し

Ruby は基本的にすべてがオブジェクトで、またすべてが「参照の値渡し」です。ただし数値とシンボルは immutable なので、「値渡し」のように振舞います。注意すべきは文字列です。 a = "Hello" p a.object_id #=>23440680 b = a p b.object_id #=>23440680 …

Ruby のインスタンス変数についてのメモ

Ruby のインスタンス変数は、オブジェクトの内部状態でもあるし、オブジェクトに特定されたクラス内のグローバル変数みたいなものでもあるのだな(言い方に問題あり?)。オブジェクトに関係ないクラス内のグローバル変数がクラス変数ということか。

Ruby での破壊的メソッドの作り方

自分で作ったクラスに破壊的メソッドを実装するには、インスタンス変数を直接変更するか、それの応用で replaceメソッドを(Stringクラスみたいに)作ってやればいいのだった。例えば点を表す Pointクラスでは、こんな感じ。o_point_symmetry!メソッドは、点…