Ruby

プログラミング言語別コメント記法

コメントアウトするときのやり方が言語ごとに違うのでネットで探して一覧にしてみました。ちゃんと表示できるかな。 Java => // or /* */ or /** */HTML => XML => CSS => /* */bat => rem or ::PHP => // or # or /* */JavaScript => // or /* */VBA => ' o…

コマンドがありません

なぜRubyを2.0以上にしたかというと、HerokuのドキュメントにRubyは2.0以上と書いてあったからなのですが、Rubyを2.1.2にしたら、なんとherokuが使えません。コマンドがありません、というエラーが出ました。 あちこち参考に、gemでuninstallして、toolbelt…

rbenvとruby-buildのインストール

Ubuntuのソフトウェアセンターで入れたRubyが1.9.3で、2.0以上にしたいと思いました。 とりあえず、ソフトウェアセンターでアンインストール。 ネットを見ると、rbenvとruby-buildで入れるのがよろしいらしので、とりあえず、ソフトウェアセンターでそれぞれ…

食玩問題

以前、「ガチャポンの確率論」というのを書いています。 http://d.hatena.ne.jp/niming538/20080403 ここでは、ガチャポンで例えば6個そろえるのに何回かかるか、という問の意味は平均何回かかるか、という場合もあるかもしれませんが、多くの場合はたとえば…

黄金比(黄金率)

Sussman(サスマン)の「計算機プログラムの構造と解釈」Structure and Interpretation of Computer Programの練習問題 1.13. Rubyを片手に計算機として使いながら解きました。 qr5を5の平方根、fi = (1 + qr5)/2 (黄金比)とした場合、フィボナッチ関数Fib(n)…

pascal.rb

パスカルの三角形という、上の段のとなり同士を足して下段を作っていく数字の三角形があります。課題は何行目の何列目という指定をすると数字を答えるものでしたが、それより、一段全部答えた方がきれいな感じがするので下記のプログラムになっています。 # …

change.rb(両替プログラム)

Sussman(サスマン)の「計算機プログラムの構造と解釈」Structure and Interpretation of Computer Programの最初の方にCounting Changeという1ドルをコインにする場合の場合の数を求める話があります。アメリカのコインは多くてhalf-dollars, quarters, dime…

mydircat.rb

workフォルダにいろいろためしがきのプログラムやテキストがあって、typeなりcatでひとつずつ中身をみるのがめんどうなときがあります。正規表現でファイル名がヒットしたものを一度に見たいときのプログラム(スクリプト)です。cat => mycat => mydircatと…

kan2num.rb

そもそも、たのしいRubyに七千八百二十三とかを7823とかに変換するプログラムを作れというのが練習問題にあって、回答がネット上にありました。 def kan2num(string) digit4 = digit3 = digit2 = digit1 = "0" nstring = string.dup nstring.gsub!(/一/, "1"…

tab2spc.rb

ようやくできたかな。まずテスト。 # test_tab2spc.rb require 'test/unit' require 'tab2spc' class Tests < Test::Unit::TestCase def test_fill_ary assert_equal([], fill_ary([])) assert_equal([["a",1,0]], fill_ary([["a",1,0]])) assert_equal([["a…

tab2space.rb

とあるperlのテキストの最初の方にtab2spaceというタブをスペースに変換するルーチンが載っていました。これをRubyに書き直してみて、とりあえずちゃんと動いているのですが、なんか気持ちよくないので考え中です。 # tab2space.rb tabwidth = 8 while line …

正規表現による日本語の送り仮名の揺れの統一

先日の記事http://d.hatena.ne.jp/niming538/20080921が自分でたいへん気に入っています。 制作会社で働く人向け「はじめての正規表現」(http://d.hatena.ne.jp/jdg/20080921/1222002244)という記事に感化されて書いたものです。 まず通常の正規表現に関する…

正規表現

制作会社で働く人向け「はじめての正規表現」(http://d.hatena.ne.jp/jdg/20080921/1222002244)という面白い記事があって、その中で「見積もり」とか「見積」を統一的に「見積り」に正規表現で変換しようとする話がありました。 こういうのはなかなかむずか…

ゆめじきねんかん

前回のぶたさんのしりとりをやってみたら、夢二記念館というのがでてきましたた。 ゆめじきねんかん かくもん もんじゆぼさつ つうぼう うすごおり りありずむ「うすごおり」=>「りありずむ」もわるくないですね。 つぎのはなんだかわからない ひつしよく く…

Passengerで作ったしりとり

DreamhostがPassenger(mod_rails)を標準にしました、というので以前作ったぶたさんのしりとりを作ってみました。http://shiri.bp7e.com/shiri/toriプログラムは以下の2つだけ。こんな簡単にアイデアをホームページにできることに感動。Rails万歳! #shiri_co…

Passenger

Dreamhostというサイトで、railsをいじり始めました。サポートwikiにていねいにRailsサイトの作り方を書いてあります。 fcgiでの作り方みたいのを書いてあるのですが、最初の一行目に「現在はPassengerを標準にしています」とあってしたがって読み替えて読ま…

erbでエラー

rubyのerbで、private method `gsub!' called for nil:NilClassというエラーが解決せずに困っています。研究中。 Script Error private method `gsub!' called for nil:NilClass Backtrace (erb):33:in `komojifree' (erb):48:in `checkword' (erb):84 erb.c…

36進数のランダム乱数

サイト(ドメイン)名や、ユーザ名、パスワードなどを考えるのに適当な言葉を考えるのがたいへんなので、4桁の36進法、36進数の乱数を発生させて考える種にしています。Rubyで作っているので、これをerbで書いてサイトに載せたいと思い、作ってみました。htt…

rubyで空白行の重複を削除する(訂正)

以前、ワンライナーに関する記事(http://d.hatena.ne.jp/niming538/20080329)で、rubyで空白行の重複を削除するというのを紹介しましたが、その例では空白だけでなく同じ行の重複も削除されてしまっていたので、考え中です。ruby -e'text = [];last=""; whil…

入れ子配列

前回の記事を書いてて{2 => 3, 3 = 1}を[ [2, 3], [3, 1] ]と変換したり、逆変換したりしたいと思いました。入れ子の配列をフラットな配列にする方法はflattenというメソッドがあって、[ [2, 3], [3, 1] ].flattenとすると[ 2, 3, 3, 1 ]になったと思う。こ…

テストを思いついたら9割り完成

数字の24は2x2x2x3です。2の3乗掛ける3です。これを書き表すのに2,2,2,3と書いてもいいし、[2,3], [3,1]と書いてもいいし、2^3x3と書いてもいい。過去の自分の記事をみると、[2, 2, 2, 3]というように配列に入れている場合と、{2 => 3, 3 = 1}の二通りがあり…

プログラムの勉強

日経ソフトゥエア2008.09号が「例題を解きながら、実戦力を身につけよう! 楽しく学ぶプログラミング」という特集で、1題目が「3の倍数と3の付く数字だけ全角の漢数字(例:30なら三〇)で出力し、それ以外は半角数字で出力する」というもの。2題目が「二…

Dir.globコメコメをつかったワンライナー

Rubyで、Dir.glob('**/*')と書くと、ディレクトリ(フォルダー)の中身を再帰的にたどって配列に格納してくれてたいへん便利です。これを使って、ファイル名の一部を正規表現(Regular Expression)で指定して、深いところにあるファイルを探し出すワンライ…

erbとeruby

erbとerubyについて、若干勘違いをしていました。過去の記事は忘れてください。 ここにあるやりかただと、比較的簡単に埋め込みrubyの環境設定ができます。できました。UTF-8も問題なし。 Ruby入門:ERBによるHTML内でのRuby実行 http://hogeo.jp/blog/memo/…

erubyでutf-8

備忘:utf-8" %> というのをrhtmlのファイルの先頭か、のなかのどこかに入れる。これにより、デフォルトで西欧(ISO-8859-1)で開いてしまうことを回避できる。 解説: RubyでCGIを書くとき、erubyを使うと埋め込みで書けてとても便利です。スピードも問題あり…

willcom d4が欲しい

iPhoneよりなによりWillcom D4が欲しいのですが、高いと思います。Willcomはいりませんので、D4だけ下さい、と言っても128,600円ですと、かえって高くなる。べつに高くなるわけでもないけれど、安くならない。待っていれば安くなるのなら待ちますが、EeePCが…

テキストに行番号を振る

\>ruby addlinenumber.rb addlinenumber.rb 01 : # AddLineNumber.rb 02 : 03 : File.open(ARGV[0]) { |f| 04 : f.read.each_with_index{ |line, index| 05 : printf("%02d : %s", index + 1, line) 06 : } 07 : } each_with_indexというメソッドが使いたく…

ガシャポンの確率論(その3)

前回まででわたしの長年の疑問であったガシャポンは何回で揃うか、という課題に解答が得られました。 考え方の順序としては、次のようになります。 1.すべての場合を数え挙げる方法で、たとえばn回で揃う確率とかをシミュレートするプログラムを作る。これ…

ガシャポンの確率論(つづき)

前回、ガシャポンのセットを全部そろえるのに何回かかるか、というのを算出するのに、仮に70%と置きました。たとえば4種類のセットの場合、9回ガチャガチャすれば70%の確率で4種類がそろう。5種類のセットの場合、11回やっても70%にならない。いまのところわ…

ガシャポンの確率論

ガシャポン(ガチャポン)でセットをそろえる(フルコンプリートする)のにいくらかかるか(たとえば90%の確率で)、確率(たとえば10回で揃う確率)は? 平均何回で揃うか? という種類の質問は、「たとえば」ということばが象徴するように、個人的な思いが…

空白行の重複を削除する

Rubyでワンライナーone-linerを書く方法のまとめhttp://blog.lilyx.net/2007/11/29/writing-one-liner-in-ruby/という記事があって、いろいろ参考になります。 わたしが一番よく使うのは、計算機がわりで、3の10乗は? とか、F000から3A20を引いたらどう?と…

ぶたさん辞書でしりとり.rb

辞書に興味のあるかたは知っていると思うのですが、ネットで「ぶたさん、辞書」とかで検索すると、ぶたさんが作った、クロスワードやナンクロ用のデータ集「豚辞書」がフリーに使える形で入手できます。ひらがなばかりでなんと20万語! 日本語は豊富だなぁ。…

SCITEのUnicode化

Rubyのインストールはいろいろあるけれどついてくるエディター(開発環境)のうち、Sciteが気に入っています。グーグルで"Scite 日本語化"で検索すると日本語が使えるようにする方法が書いてありますが、それだけだと中国語がつかえないのでメモ。中国語化と…

アドエスWS011SH:Ruby on Windows

アドエスWS011SHで、WIN32OLE、は動きますか? 動きません。やってみました。DOS窓Open上で、ngエディタで、> ng win32ole.rbとして、require 'win32ole'とだけ書いたプログラムを作り、> ruby win32ole.rbとすると、なにも起きずにプロンプトが返ってきます…

mydir.rb

Windowsのdirは再帰でない(フォルダーに行かないと探せない)し、正規表現がDOSで展開されてしまうので不便です。一方Unixではfindという万能コマンドがありますが、これがまた使い方を思い出すのに苦労する。 テキストを読んでいたら、Dir.glob('**/*')と…

random4.rb

適当なランダムな数字が欲しいときがあります。で、適当に考えると自分の誕生日だったり、3で割り切れたり、ちっともランダムでないので、4つほど候補を挙げてくれるプログラム。せっかくだから素数にしました。 \> ruby random4.rb とすると、 [53, 479, 45…

for i =

1から10までの足し算をするのに、下記のように書く。 sum = 0 for i in 1..10 do sum = sum + i end p sumこれをベーシックだったら、と考えると、こうなる。 sum = 0 for i = 1 to 10 do sum = sum + i end print sumどこが違うかと見ると、for 〜 do は同…

ARGV

DOS窓Openを調べているところで、今思いついてやったことの記録。\>ng pargv.rb #ngエディタを起動し、下記の1行プログラムを書く p ARGV C-x s C-x C-c #saveして終了\>ruby pargv.rb [] #=> 空のarray\>ruby pargv.rb this is a pen ["this", "is", "a", "…

Rubyはアドミン権限のないパソコンで使えるという話を以前書きました。

http://d.hatena.ne.jp/niming538/20070422 これはすばらしいことで、日々の生活の幅を非常に広げることになります。暇とお金をもてあましていない身としては、考えるのには頭ひとつしかないわけで、あと紙と鉛筆、そこに使い慣れた自分のパソコンが常にあれ…

ruby-mswince

前のマシンWS007SHでルビーを使えるようにするために、ruby-mswinceをインストールした話を書きました。 (http://d.hatena.ne.jp/niming538/20070214) アドエスでは現在はPocketPuTTYでサーバーにつないでからrubyを使う方針ですが、手元にもあっていいと思…

電卓がわりのRuby

[書きかけ] キーワード:「電卓 Ruby」で検索、電卓代わり、irb、cmd、コマンドプロンプト、excel、HP電卓、関数電卓、ソルバー c:\ ruby -e 'puts 2 ** 1000' 107150860718626732094842504906000181056140481170553360744375038837035105112\ 4936122493198…

フィボナッチ

「JavaからRubyへ」という本を読んでいます。生産性についてのところで、フィボナッチ数列を数える話が出てきて、 x, y = 0, 1 10.times do puts y x, y = y, x + y endとあって、なかなか簡潔で、考え方も読めばわかるので感心しました。 その証拠に、とい…

redoとretryの違い

why's poignant guide to rubyを読んでいて、 class LotteryTicket def self.new_random new( rand( 25 ) + 1, rand( 25 ) + 1, rand( 25 ) + 1 ) rescue ArgumentError redo end endをやってみたらLocalJumpErrorになったので、redoをretryに直したらエラー…

ドットで始まるファイルだけをリストする

備忘:ZaurusのLinux上で隠しファイル(ドットで始まるファイル、各種プログラムの環境設定など)だけをリストしたいときのrubyスクリプト #! /usr/bin/env ruby # usage : dot_files.rb [directory] # shows only hidden files whose filenames begin with …

w-zero3でruby

http://uema2.s8.xrea.com/ruby-mswince/ よりダウンロード