せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【Ruby】【アルゴリズム】Listクラスの自作

師匠にね、

検索だとか、いわゆるアルゴリズムが分からない人間は
エンジニアとしてどこにも居場所はないんやない?

みたいなことを言われたので、
改めて1からアルゴリズムの勉強を始めています。

泣く暇もない


分からないわけじゃないんだ!
知らないだけなんだ!
頑張れ自分!


 
この本で勉強中↓

プログラミングの宝箱 アルゴリズムとデータ構造 第2版

プログラミングの宝箱 アルゴリズムとデータ構造 第2版


「データ構造」という章を読んで、
Rubyってリスト構造のクラスが存在しないんだ!
ということに今さら気がつきました。

ということで自作しました。

class List
  include Enumerable
  attr_accessor :car, :cdr
  def initialize (car, cdr = nil)
    @car = car
    @cdr = cdr
  end
  def add (obj)
    a = self
    a = a.cdr until a.cdr.nil?
    tmp = List.new(obj)
    a.cdr = tmp
  end
  def insert(idx, obj)
    i = 0
    a = self
    while i < idx - 1
      a = a.cdr
      i += 1
    end
    a.cdr = List.new(obj, a.cdr)
  end
  def length
    inject(0){|int, _| int + 1}
  end
  def each
    a = self
    begin
      yield a.car
    end while a = a.cdr
  end
end

list = List.new("a")
list.add("b")
list.add("c")
list.add("d")
list.insert(1,"x")
p list.length
list.each{|obj| p obj }

■実行結果

5
"a"
"x"
"b"
"c"
"d"


だんだんプログラミング書くスピードが速くなってきた。




ううう(泣いてる)