2013-01-01から1年間の記事一覧

RParsec インストール

ParsecをRubyに移植したおのがRParsecである。Parsecはコンパイラコンビネータであり、lex.yaccなどとは異なり、ライブラリ形式でコンパイラ作成をサポートしてくれる。解析方法は再帰下降型。左再帰が解析できないとのこと。■インストール方法 https://ruby…

再帰的ファイル一覧表示ツール

再帰的にディレクトリを辿りインデントしつつ、ファイルを表示する。 実行は以下のように入力する。 引数が表示したいパス> dirtree.rb c:\work def print_file_list(fpass, level) Dir.chdir(fpass) Dir.glob('*'){ |f| level.times{ print " " } print f, …

8女王問題 その2

8女王問題の解法その2 1つの列には1つ以上女王を置けず、かつ1つは女王を置かないといけないという事実からのアルゴリズム。 その1よりかなり効率的。 但し、回転や反転対称は重複して解として出力する。 #!/usr/local/bin/ruby # -*- coding: utf-8 -…

8女王問題 その1

8女王問題。 単純な(力技の)実装 セルを順番に試しておければ置いてみて、全て置ければ表示する。 全てのセルを試してみてダメだったら、1つ戻って(1つセルを取り除いて)リトライする。 アルゴリズムはsolveメソッドで実装している。・・・但し重複を検出…

2次元配列のコピー

Rubyのオブジェクトはdupでコピーされるが、参照先のオブジェクトまで辿ってはコピーしてくれない。 一方、Rubyでは配列は1次元配列しかない。多次元配列は配列の配列という形で定義していく必要がある。 これらより2次元配列をコピーするには各行について…

Windows上でのC++ビルド

Windows上でC++のビルドをするためEclipseの Eclipse IDE for C/C++ Developers をhttp://www.eclipse.org/downloads/からダウンロード。 ビルドにはCygwinを使用する。ビルドを実行すると multiple target patterns. Stop. とのエラーが出る。 調べると、ど…