atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
0141029 @wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
0141029 @wiki
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
0141029 @wiki
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • 0141029 @wiki
  • blog
  • 2006年09月28日
  • Rubyを使ってみる、その2

0141029 @wiki

Rubyを使ってみる、その2

最終更新:2006年09月29日 13:04

0141029

- view
メンバー限定 登録/ログイン
#blognavi
囲碁ROBOT、地の計算についてのトラブル 解決のための、Rubyを使ってみる、その1の続き。

正規表現自体、私全然使えないんですよねぇ。使う時には毎回検索^^; 覚えてしまえば簡単なんでしょうけど。正規表現⇔日本語翻訳ソフトとかないもんかね?プレビュー付きHTMLエディタみたいな感じで。多分VectorのGrep関連ソフトの中にはそういう機能の付いたソフトありそうだけど、ぱっと探したけれどない。気が向いたら作ろうかしらん。

えーと、本題にもどります^^ 正規表現を極める!!を参考に、

  • //の間の正規表現に一致する行を表示(ここでは'1'という文字列)

while line=gets
 if /1/ =~ line
  print line
 end
end

で、問題なし。第一章の最後に、

while gets
 if /1/
  print
 end
end

でもいけると書いてありますが、うちの環境(Ruby1.8.4)では、Syntax Error (文法エラー)はでないものの、プログラム終了後

warning: regex literal in condition

と注意が。ということで、正規表現をのぞく完成形は、以下のとおり。

for i in 0..2 do
 filename=ARGV[i]
 file=open(filename)
 file.each {|line|
  if /1/ =~ line
   p filename # 改行付き表示。
  end
 }
 file.close
end

2006年09月26日/囲碁ROBOT、地の計算についてのトラブル で挙げた例での、"RE[B+74.5]"と最終スコア"final_score: B+42.5"の数値部分を比較したいわけです。「数字 .(小数点) 5」という文字列は、前の二つをのぞけばコミの設定だけで、記録順もコミが最初という規則性があります。ということは、

/...\.5/ =~ line

という条件にマッチする2番目と3番目が一致するかどうかを調べればいいことになります。

注意:小数点(.)は正規表現におけるメタ文字で、これ自体を正規表現の中に使う場合には、エスケープシーケンス「\」を使います。「.」は任意の一文字。

で、n番目の要素は $~[n] と表すらしいので、正規表現部分は、

/...\.5/ =~ line
 if $~[1] != $~[2]
  p filename
 end

でいいのではないかしらん?と思ったら、

undefined method `[]' for nil:NilClass (NoMethodError)

というエラー。if が抜けてました^^; 時間的にかなりはまってしまった。。。

ということで、完成形は次の通り。for文の繰り返しを10000にしておきました(大丈夫かな?^^;)

for i in 0..10000 do
 filename=ARGV[i]
 file=open(filename)
 value = [0, 0, 0]
 file.each {|line|
  if /...\.5/ =~ line
   if $~[0] != nil # 正規表現がマッチすれば
    if value[0] == 0
     value[0]=$~[0]
     elsif  value[1] == 0
     value[1]=$~[0]
     else
     value[2]=$~[0]
    end
   end
  end
 }
  # 中断対局を省く (value[2] != 0)
  # 結果とスコアが一致しない (value[1] != value[2])
  if value[2] != 0 && value[1] != value[2]
   p filename
  end
 file.close
end

うまく動けばいいけど。とりあえずエラーを出してみる。

  • ファイルがないとき、

$ ruby test.rb *.sgf > test.txt
test.rb:3:in `initialize': Invalid argument - *.sgf (Errno::EINVAL)
        from test.rb:3
        from test.rb:1

  • for文の繰り返し回数が実際のファイル数以上のとき、

$ ruby test.rb *.sgf > test.txt
test.rb:3:in `open': can't convert nil into String (TypeError)
       from test.rb:3
       from test.rb:1

まぁ、こっちのエラーは出ても、test.txtに結果が出力されてるので、問題なし。で、実験。。。予想外のエラー出ました。

$ ruby test.rb *.sgf > test.txt
sh: /c/Ruby184/bin/ruby: Invalid argument

なんで、shシェルのエラーが出るの?ファイル数が多すぎるということか?ということで今日はここまで。ちなみにRubyにはインクリメント演算子はないらしい。

リンク


  • 囲碁ROBOT、地の計算についてのトラブル
  • Rubyを使ってみる、その1
  • Rubyを使ってみる、その3
  • 結果

  • サルにもわかる正規表現入門
  • 正規表現を極める!!

  • Ruby入門
  • 続Ruby入門
  • 続々Ruby入門
  • 続々々Ruby入門
2003年の段階で、
サーチエンジンで探してみると案外Rubyの初心者向けサイトが少ない(ように思う。)
とサイトオーナーはおっしゃってますが、確かにいまだにそうかも。(私がかじった)JavaやC++のサイトに比べりゃという話ですが。比較対象が悪いかな^^

  • 逆引きRuby
  • Ruby Reference
  • Ruby Reference (ローカルスコープ)
  • 配列操作の比較表: Ruby, Python, JavaScript, Perl, C++
  • Ruby入門


カテゴリ: [ruby] - &trackback() - 2006年09月28日 21:28:03

#blognavi
「Rubyを使ってみる、その2」をウィキ内検索
LINE
シェア
Tweet
0141029 @wiki
記事メニュー

menu

  1. top
  2. go (EN)
  3. profile (WAYN)

  1. log (JP)
  2. topics_of_log (JP)

memo

  1. news / rss
  2. link / stb
  3. link / tmp

  1. css
  2. bike

counter: -


atwiki
記事メニュー2

agreements


Utilize these contents at your own risk. If you get any trouble, I am not responsible.

当サイト内のコンテンツ利用によりいかなる損害を被ろうとも、当方は一切関知いたしません。自己責任でお願いします。

recent updates


取得中です。
人気記事ランキング
  1. StoneLeaf
  2. go
  3. blog/2007年02月06日/ネコにGPS
もっと見る
最近更新されたページ
  • 5448日前

    blog/2006年08月23日/備忘録
  • 5932日前

    ROBOTs_trouble
  • 6746日前

    blog/2007年02月07日
  • 6746日前

    blog/2007年02月07日/ソフ開
  • 6748日前

    blog/2007年02月06日/ネコにGPS
  • 6748日前

    blog/2007年02月06日
  • 6748日前

    blog/2007年02月05日
  • 6748日前

    blog/2007年02月05日/早起き
  • 6748日前

    トップページ
  • 6748日前

    news_rss
もっと見る
人気記事ランキング
  1. StoneLeaf
  2. go
  3. blog/2007年02月06日/ネコにGPS
もっと見る
最近更新されたページ
  • 5448日前

    blog/2006年08月23日/備忘録
  • 5932日前

    ROBOTs_trouble
  • 6746日前

    blog/2007年02月07日
  • 6746日前

    blog/2007年02月07日/ソフ開
  • 6748日前

    blog/2007年02月06日/ネコにGPS
  • 6748日前

    blog/2007年02月06日
  • 6748日前

    blog/2007年02月05日
  • 6748日前

    blog/2007年02月05日/早起き
  • 6748日前

    トップページ
  • 6748日前

    news_rss
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  2. MadTown GTA (Beta) まとめウィキ
  3. R.E.P.O. 日本語解説Wiki
  4. シュガードール情報まとめウィキ
  5. ソードランページ @ 非公式wiki
  6. AviUtl2のWiki
  7. Dark War Survival攻略
  8. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  9. 星飼いの詩@ ウィキ
  10. ヒカマーWiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  4. ゲームカタログ@Wiki ~名作からクソゲーまで~
  5. 初音ミク Wiki
  6. 発車メロディーwiki
  7. 検索してはいけない言葉 @ ウィキ
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  10. モンスター烈伝オレカバトル2@wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  3. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
  4. 機体一覧 - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  5. ドンキーコング バナンザ - アニヲタWiki(仮)
  6. チンポ画像収集場 - 検索してはいけない言葉 @ ウィキ
  7. 仕込みマシンガン/仕込み爆弾(遊戯王OCG) - アニヲタWiki(仮)
  8. ヤマダ電機の唄 - アニヲタWiki(仮)
  9. 危険度7 - 検索してはいけない言葉 @ ウィキ
  10. 千鳥の鬼レンチャン 挑戦者一覧 - 千鳥の鬼レンチャン サビだけカラオケデータベース
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.