Ruby

8 Queens Problem

再帰処理を利用してエイトクイーン問題を解きます。エイトクイーン問題とは チェスの盤上に、8個のクイーンを配置する。 このとき、どの駒も他の駒に取られるような位置においてはいけない。 クイーンの動きは、上下左右斜めの8方向に、 遮る物がない限り進…

組み合わせの列挙~再帰~

再帰処理を利用して組み合わせ(3桁の3進数の取りうる値)の列挙をします。 $SIZE = 3 $pos = [] def print_pos print "#{$pos}\n" end def set(i) (0..$SIZE).each { |x| $pos[i] = x if i == $SIZE -1 then print_pos() else set(i+1) end } end set(0) 実行…

ダイクストラ法~線形探索~

Rubyでダイクストラ法の実装を行います。 探索済みとなる要素は線形探索しています。 (こちらのコードをrubyコードに変換することで実装させてもらいました。) $MAX_V = 6 $INF = 100000 def dijkstra(s) cost = [ [$INF, 2, 5, $INF, $INF, $INF, $INF], …

配列におけるマイナスの添え字

Rubyで配列においてマイナスの添え字を与えた場合の結果です。サンプルコード array = [1,2,3,4,5] puts array[4] puts array[3] puts array[2] puts array[1] puts array[0] puts array[-1] puts array[-2] puts array[-3] puts array[-4] puts array[-5] …

要素数を数える3つの手段(size, length, count)

Rubyで配列などの要素数を数えるメソッドであるsize, length, countの違いです。 サンプルコード array= [0,1,2,3,4,5,6,7,8,9] print "size = #{array.size}\n" print "length = #{array.length}\n" print "count = #{array.count}\n" print "count(2) = #{…

EvernoteAPIを利用したEvernoteのノート検索

evernote_oauthパッケージを用いたEvernoteAPIの初歩的な利用について紹介します。EvernoteAPIではNoteStoreを取得し、 そのNoteStoreに実装されているメソッドを利用することで 対象とするEverenoteアカウントの情報(ノートブック、ノート、ノート本文など…

Heapの実装~逆順~

RubyでHeapのデータ構造を実装します。 通常大きい値から取り出しますが、 今回は小さい値から取り出すHeapです。 変更点は比較演算子の向きだけです。 class Heap def push(array,elem) n = array.size array << elem while n != 0 i = (n-1) / 2 if (array…

添え字付き優先度付き待ち行列の実装

Rubyで添え字付き優先度付き待ち行列を実装します。 これは一般的にあるものではないかもしれませんが、 あれば便利なのではないかと思います。任意の要素とその優先度の二つを要素として 優先度順に任意の要素を取り出すという待ち行列です。 これもHeapを…

優先度付き待ち行列の実装

Rubyで優先度付き待ち行列を実装します。 Heapを利用することで容易にできます。 class PriorityQueue def initialize @pqueue = [] @heap = Heap.new() end def push(elem) @heap.push(@pqueue,elem) end def pop return @heap.pop(@pqueue) end end 実行し…

Heapの実装

RubyでHeapのデータ構造を実装します。 class Heap def push(array,elem) n = array.size array << elem while n != 0 i = (n-1) / 2 if (array[n] - array[i]) > 0 tmp = array[n] array[n] = array[i] array[i] = tmp end n = i end end def pop(array) n …

EvernoteAPI試験用開発環境の構築

RubyでEvernoteAPI試験用開発環境の構築をします。■構築環境 Ubuntu 13.04■用意するパッケージ(利用したバージョン) Ruby (1.9.3) gem (2.0.3) sinatra (1.4.3) evernote_oauth (0.2.1)■用意するデータ Evernote API Key :取得はこちらです Evernoteサンド…