ruby

ハッシュ

ハッシュはHashを使って表現。 p hash = { "key1" => "val1", "key2" => "val2", "key3" => "val3" } p hash["key1"] #=> "val1" p hash.index("val2") #=> "key2"

スタック

スタックはもちろんArray#push, Array#popで。 stack= Array.new p stack.push("first") p stack.push(2) p stack.pop p stack

キュー

キューはArray#push, Array#shiftを使って。 class Array alias enqueue push alias dequeue shift end queue= Array.new p queue.enqueue("first") p queue.enqueue(2) p queue.dequeue p queue

二分挿入ソート

プログラミングの宝箱 アルゴリズムとデータ構造 (C magazine)の二分挿入ソートをRubyで。 class Array private def get_insert_pos(target, left, right) return left if left > right middle = (left + right) / 2 self.at(middle) case target <=> self.a…

Rakefile雛形

よく使うMakefileの雛形をRakefileに移植。Rubyで書けるって素敵。 require "rake/clean" TARGET = "hello" #path setting SRCDIR = "." OBJDIR = "." INCDIR = "." #compile setting CXX = "gcc" CFLAGS = "-g -Wall -I#{INCDIR}" LDFLAGS = "" #object fil…

バイナリサーチ

プログラミングの宝箱 アルゴリズムとデータ構造 (C magazine)のバイナリサーチをRubyで。 class Array def binary_search(target, left, right) return nil if left > right middle = (left + right) / 2 self.at(middle) case target <=> self.at(middle) …

挿入ソート

プログラミングの宝箱 アルゴリズムとデータ構造 (C magazine)の挿入ソートをRubyで。 class Array def insert_sort sorted = 0 until (sorted >= self.size-1) do target = self.delete_at(sorted + 1) i = 0 until (i > sorted) do break if self.at(i) > …

リニアサーチ

プログラミングの宝箱 アルゴリズムとデータ構造 (C magazine)のリニアサーチをRubyで。 class Array def linear_search(target) result = nil self.each_index do |x| if self.at(x) == target result = x break end end return result end end p array = […

選択ソート

選択ソートをRubyで。 class Array def selection_sort sorted = 0 until (sorted > self.size-1) do i = min = sorted until (i > self.size-1) do if self.at(i) < self.at(min) min = i end i += 1 end self.insert(sorted, self.delete_at(min)) sorted …

マージソート

プログラミングの宝箱 アルゴリズムとデータ構造 (C magazine)のマージソートをRubyで。 class Array def merge_sort(n, x, offset) return if n < 2 m = n / 2 merge_sort(m, x, offset) merge_sort(n - m, x, (offset + m)) buf = Array.new(x[offset..(of…

クイックソート

クイックソートはArray#sortで。 p array = [2,6,5,8,9,114,3,6,34,74,24] p array.sort{|a,b| a<=>b }

バブルソート

プログラミングの宝箱 アルゴリズムとデータ構造 (C magazine)のバブルソートをRubyで。 class Array def bubble_sort begin flag = false (self.size - 1).times do |i| if self[i] > self[i+1] flag = true tmp = self[i] self[i] = self[i+1] self[i+1] =…

基本的な追跡アルゴリズム

ゲーム開発者のためのAI入門に載ってた追跡アルゴリズムをRubyで。 class Player attr_accessor :x,:y def initialize(x,y) @x = x @y = y end end X_CONST = 50 Y_CONST = 50 predetor = Player.new(rand(X_CONST),rand(Y_CONST)) prey = Player.new(rand(X…