simanのブログ

ゆるふわプログラマー。競技プログラミングやってます。Ruby好き

マラソン練習会( TCO2010 FILNAL )

今週土曜日、診断人さん主催で12時間マラソン練習会が行われました。今回使用した問題は「TCP2010 CollapsingMaze」 http://community.topcoder.com/longcontest/?module=ViewProblemStatement&rd=14411&pm=11140内容はざっくり説明すると 「コインがばらま…

「git勉強会 in Okinawa」参加録

こちらの方に行ってきました。「git勉強会 in Okinawa」 http://atnd.org/event/E0019796/0自分はGithubは使っていたのですが、「Githubを使った開発フロー」というワードに惹かれて参加してみました。 ・午前の部 午前の部はGit Handson その 1を進めながら…

Rubyでハッシュのデフォルト値を配列にする

RubyではHashのデフォルト値をHash.newの引数として渡すことで実現できますが、配列を渡すと同じ参照になってしまうのでうまくいきません。 list = Hash.new([]) list[:even] << 2 p list[:even] #=> [2] list[:odd] << 3 p list[:odd] #=> [2,3] [2] [2, 3]…

rubyで数値を日本語表記に変換するgem「yen」を作った

「Rubyで数値を日本語表記に変換」 http://simanman.hatenablog.com/entry/2013/03/15/224727半年前ぐらいに作ったメソッドにちょっと変更を加えてgemにしました。 使い方 gem install yenrequire 'yen' puts 10000.to_j #=> 1万 puts 10000.to_j(:all) #=> …

Rubyのオブジェクトの継承関係をtreeコマンドっぽく表示するgem「object_tree」を作った

gem「object_tree」作りました。 https://github.com/siman-man/object_treeRubyでクラス継承やら、モジュールのincludeなどをしたときに、ancestorsメソッドなどで継承関係を調べることができるのですが、これをtreeコマンドっぽくして視覚的に見やすくしま…

Rubyで文字列を1文字ずつ分割する。

Rubyでは文字列に対してcharsメソッドを使用すると1文字ずつ分割してくれてます。 p "hello".chars ["h", "e", "l", "l", "o"] 文字列が数字だと、他のメソッドと組み合わせることで「各位を足しあわせた合計値」なんて操作もできるようになります。 list = …

Rubyで複数行のコメントアウト

Rubyでは=begin, =endで囲むことで複数行のコメントアウトが出来ます。通常ver # puts "Ruby" # puts "Java" # puts "JavaScript" 複数コメントアウトver =begin puts "Ruby" puts "Java" puts "JavaScript" =end 覚えておくと便利です。

RubyのOpenStructソース読み

Rubyの標準ライブラリを読んでみようってことで今回は「OpenStruct」を読むことにしました。 OpenStructとは OpenStructを使えばJavaScriptみたいにオブジェクトへの要素の追加や削除が簡単に出来るようになります。 require 'ostruct' pos = OpenStruct.new…

ハッカーズチャンプルー前夜祭・カンファレンス

今週末はハッカーズチャンプルーに参加していました。http://hackers-champloo.org/ 前夜祭 前夜祭のほうはLT発表者として参加して、ゲストの方々の前で喋らせてもらいました。発表前にディスプレイテストしたにもかかわらず本番で「何も映らない!」ってな…

Rails + RSpec + Capybaraでbasic認証をパスする

コントローラ内でbefore_filterを使って実装されたBasic認証をパスするのにやたら時間をかけてしまったので、自分用にメモを残しておく。 page.driver.browser.authorize('username','password') これをvisitとかの前に宣言しておくと、Basic認証をパスする…

Rubyで状態遷移を管理するgemを作った(state_transition)

https://github.com/jakesgordon/javascript-state-machineこのjavascript-state-machineが便利だったので、Rubyでも使いたいと思い、Ruby versionを作ってみました。 https://github.com/siman-man/state_transitiongemのインストール gem install state_tr…

勘違い

Herokuにpushしようとした時のこと「そういえばHerokuはpostgresql」だったなと思い、Gemfileの設定を下のように変更していざpushしてみたら全く変更が反映される気配がない。 group :development do gem 'sqlite3', '1.3.7' end group :production do gem '…

xhago4参加録

8/10(土)に開催されたxhago4にスピーカーとして参加してきましたーhttp://hago.doorkeeper.jp/events/4396自分は「僕らの開発日記 24」というタイトルでクックパッド主催の「第4回 開発コンテスト24」に参加したときの様子を発表したのですが、技術的な話は…

CODE VS2.1予選終了

CODE VS2.1の予選が終了しました。前回のCODE VS2.0では学生ランク28位だったのですが、今回はなんとGOLDランクに入ることが出来ました。わーhttp://codevswc.jp/jpn/ranking-total.htmlここまで来たからには優勝目指して頑張ります。

Rubyで二次元配列の初期化

Rubyで二次元配列を初期化するときは注意が必要です。 ・3x3の2次元配列を作るときのよくある間違い a = Array.new(3, Array.new(3, 0)) これで配列の初期化が出来たと思うのですが、実は出来ていません。実際に配列の状態を変更してみると明らかになります…

ruby-growlで日本語を使用する

ruby-growlでタイトルやテキストに日本語を使用しようとするとエラーが発生する。 /Users/siman/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/ruby-growl-4.0/lib/ruby-growl/gntp.rb:336:in `join': incompatible character encodings: UTF-8 and …

Rubyで二次元配列のコピー

Rubyで二次元配列のコピーを行おうとするとコピー元を破壊してしまうケースが多々あるので、まとめてみた。・普通にコピー a = [[1,2],[3,4]] b = a b[0][0] = 10 puts "a = #{a}" puts "b = #{b}" a = [[10, 2], [3, 4]] b = [[10, 2], [3, 4]]このようにb…

Code golf tips of Ruby(4)

Rubyでコードゴルフをやるときに覚えておくと便利です。 joinは*に置き換える joinメソッドは配列を連結させるときに使用するのですが、これは「*」で置き換えることができます。 puts [1,2,3].join('+') puts [1,2,3]*'+' 1+2+3 1+2+3これだけで6文字も短く…

「第4回 開発コンテスト24」参加録(1)

今週末は「第4回 開発コンテスト24」に参加していました。 http://info.cookpad.com/24contest424時間コンテストでは24時間以内にお題に沿ったアプリケーションを開発するコンテストなのですが、今回のお題は。「年をとった自分が使うサービス」でした。 そ…

Rubyでボゴソート

なんとなくボゴソートを書いてみました。 ボゴソート ボゴソートは配列の要素がソートされるまで、配列の要素のシャッフルを繰り返すアルゴリズムです。計算量がかなり膨大。( O(n*n!) ) def sort_checker(array) for i in 0..(array.size-2) return false i…

RubyでGrowlを操作 ( ruby-growl )

「RubyでGrowlを操作したい!」 と思って軽い気持ちで始めたのですが、まず環境構築にかなり手こずりました。 Growl2.0.1の導入 AppStoreで有料(350円)で販売されていたのですが、調べてみると自分でbuildすれば無料で手に入るみたいなのでやってみました。…

Rubyで日本の祝日を表示してくれるgem「holiday_jp」

Rubyで日本の休日を表示してくれるものを探していたら「holiday_jp」を見つけました。http://docs.komagata.org/tags/holiday_jp/使い方はこんな感じです(githubのUSAGE参照) holidays = HolidayJp.between(Date.new(2010, 9, 14), Date.new(2010, 9, 21)) h…

CODEVS2.1開催

CODEVS2.1が始まりました。前回は学生ランキング28位だったので、今回は頑張ってGOLD目指します。http://codevswc.jp/

sshの公開鍵認証rsaでコケる

ちょこちょこ設定するくせによく忘れる。今回は 「.sshディレクトリの権限を700にしていない」で30分ぐらい悩んでました。かしこ。

rubyで掛け算九九の表示

rubyで掛け算九九を書いてみました。 puts "+--+--+--+--+--+--+--+--+--+--+" puts "| | 1| 2| 3| 4| 5| 6| 7| 8| 9|" puts "+--+--+--+--+--+--+--+--+--+--+" puts "| 1| 1| 2| 3| 4| 5| 6| 7| 8| 9|" puts "+--+--+--+--+--+--+--+--+--+--+" puts "| 2|…

RubyでHello World!

大学にも新しい1年生が入って来て、自分たちのryudai.rbに参加する人が出てきたので、1年生向けにRubyで簡単なプログラムが書けるようなメモを残していこうかなと。 Hello World! プログラミングの入門はまず「Hello World!」から始まる。むしろHello World…

rubyで2次元配列を使用しての行列表現&行列の回転

rubyで行列を扱いたい場合には標準クラスでMatrixクラスが用意されていますが、そこまで複雑な操作をしないのであれば、二次元配列で簡単に行列を表現することが可能です。 require 'pp' mat = [[1,2,3],[4,5,6],[7,8,9]] pp mat [[1, 2, 3], [4, 5, 6], [7,…

rubyで複数の値の最小公倍数と最大公約数を求める

Project EularをRubyを使用して解いているのですが、その5番目の問題が最小公倍数に関する問題でした。 http://projecteuler.net/problem=5そこで複数の値の最小公倍数を求めるメソッドを作ってみました。 require 'prime' class Integer # 素数指数表現 def…

Rubyで配列の挿入

Rubyの配列挿入には色々種類があるので、必要に応じて使い分けましょう。 push pushメソッドを使用すると配列の末尾に要素の追加を行います。 array = [1,2,3] p array array.push(4) #=> [1,2,3,4] array.push(5) #=> [1,2,3,4,5] p array [1, 2, 3] [1, 2,…

lispでfizzbuzz

プログラミング言語を学ぶときは「Hello World」と「FizzBuzz」ができればOKなので、FizzBuzz書いてみた。 (setq i 1) ; setqで変数の初期化 (loop ; lispでは剰余の計算は%ではなくremで行う (if (= (rem i 15) 0) (print "FizzBuzz") (if (= (rem i 5) 0) …