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

ブログを移転します

2006年来はてなダイアリーを利用してきましたが、Github Pagesにブログを移転することにしました。まだ校正ができていませんが、ここにあった全記事を移転しました。新しいところでもよろしくお願いします。melborne.github.com

LoveLangリニューアルのお知らせ

LoveLangをリニューアルしましたので、ここにお知らせいたします。 http://lovelang.heroku.com/

RubyのGsubチェーンはイケてない? ~ GsubFilterの紹介

任意のテキストに対して複数の置換を実行したい ってときあるよね そんなときRubyでは普通 String#subあるいは#gsubメソッドをチェーンするよ def replace(text) text.gsub(/\w+/) { |m| m.capitalize } .sub(/ruby/i) { |m| "*#{m}*" } .gsub(/a(.)/) { "a-…

Rubyの四則演算をもっと便利にしたいよ!

この間RubyのEnumerable#mapを便利にした Enumerable#mappを紹介したよ RubyのEnumerable#mapをもっと便利にしたいよ - hp12c module Enumerable def mapp(op=nil, *args, &blk) op ? map { |e| op.intern.to_proc[e, *args]} : map(&blk) end end langs = […

RubyでLevenshtein Distanceを解く-CodeEval

できません.. アルゴリズム的にはできてるんだけど*1 答えを得るのに1時間とかorz.. 5秒で答えなきゃいけないのに あとグローバル変数を使ってしまった どうも高速化は苦手です そこに注力する気がなかなか起きない.. レーベンシュタイン距離が1の語同士をfr…

RubyでText Dollarを解く-CodeEval

なんか想像以上に手こずったよ^^; case式内が見苦しい.. もっと簡単なやり方あるんだろうな Integer#dollarizeを定義してみた 数字を英語のドル表記に変換

RubyでSpiral Printingを解く-CodeEval

もっと賢いやり方があると思う 座標系を回転させるとか でもまあ一応パスということで.. EnumeratorでSpiralSequenceを作って 2次元配列の要素をスパイラルな順序で出力

RubyでRepeated Substringを解く-CodeEval

バグ入りで80点^^; 入出力情報少なすぎてバグ特定できない.. まあいっか str.gsub(substr).to_aという技を閃いた 文字列中に繰り返し現れる最長の部分文字列

RubyでType Aheadを解く-CodeEval

一応パスしたけど75点^^; Trigramのアルゴリズムが怪しいので 多分そこが問題 まあ良として先に N-gramを使って特定ワードの 次ぎに来るワードの確率リストを出力

RubyのEnumerable#mapをもっと便利にしたいよ

次のような名前のリストがあって langs = ["ruby", "python", "lisp", "haskell"] 名前の先頭を大文字にするとしたら 君ならどうする? そう普通Enumerable#mapを使って 次のようにするよね langs = ["ruby", "python", "lisp", "haskell"] langs.map { |lan…

RubyでClosest Pairを解く-CodeEval

Enumerable#chunkでsetを分けて Array#combinationで 与えられた複数の座標間の最短を求める

RubyでTelephone Wordsを解く-CodeEval

Array#productを使って^^; 与えられた7桁の電話番号に対する 各数字に割り当てられたアルファベットでの全組み合わせ

RubyでFizzBuzz問題に終止符を打つ!

FizzBuzz問題はプログラマーが最初に出会う問題だよ FizzBuzzの解法はプログラマーの数ほどあると言われているよ でもいつまでもFizzBuzz問題に関わってたら 本当に解決しなければならない問題を解決できないよ だから僕がFizzBuzz問題に終止符を打つよ! つ…

第2弾!知って得する12のRubyのトリビアな記法 ~ 12 Trivia Notations you should know in Ruby

ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。第2弾!知って得する12のRubyのトリビアな記法 melborne.github.com - 半年くらい前にちょっとトリビアだけど 知ってい…

RubyでMessage Decodingを解く-CodeEval

まず問題を解読するのが大変orz.. どう見てもエレガントな解法じゃない.. 特にheaderのsequenceを作る方法がヒドイ どなたかスマートな解法を教えて下さい 文字列からなるheaderを使って01からなるmessageを解読する headerの各文字はその位置にマッピングさ…

RubyでString Listを解く-CodeEval

Array#repeated_permutationで^^; 文字列中の文字の全順列

RubyでUgly Numbersを解く-CodeEval

ってまだ解けてません^^; 下のコードだと一応解答は得られるんだけど 5秒以上掛かるってことで0点です.. 気にせず先に.. 一桁の素数(2,3,5,7)で割れる数をUgly Numberという D桁の数字の桁の間に+か-を挟むと3^D-1個の数字ができる Ugly Numberの個数を求める

RubyでFollowing Integerを解く-CodeEval

Array#permutationを使って力技! 与えられた数の各桁の並び替えの組合せを 昇順に並べたとき与えられた数の次ぎに来る数を答える 但し各数には任意個数の0を挟める

RubyでPalindromic Rangesを解く-CodeEval

またまたArray#permutationのお世話に.. 与えられた2数を最小値と最大値とする 数字の並びにおける並びの組を考える 回文数が偶数個の組の数を答える

RubyでLongest Common Subsequenceを解く-CodeEval

StringScannerを使って再帰的に どこかにバグがあるようで50点^^; 2つのアルファベット列に共通する最長の並び 並びは連続していなくてもいい Hardになって急に難しくなってる..

RubyでPrefix expressionsを解く-CodeEval

ほんとは構文解析して解くことが 期待されてるんだろうけど 正規表現で行けたので.. いわゆるポーランド記法の電卓

RubyでString Permutationsを解く-CodeEval

Array#permutationを使って 単語文字の全順列

RubyでString Searchingを解く-CodeEval

正規表現で半ば強引に 文字列に対する部分文字列の一致を見る 但し部分文字列中の*は0以上の文字にマッチ

RubyでLongest Linesを解く-CodeEval

ワンライナーで:) 先頭行の数だけ後続行から最長文字列を選ぶ

RubyでDetecting Cyclesを解く-CodeEval

ループを使って 綺麗にかけない.. 文字の並び中の繰り返しを見つける

RubyでPangramsを解く-CodeEval

Array#-を使って 文字列がパングラムか判定する

RubyでStack Implementationを解く-CodeEval

どうすりゃいいのか スタックを実装する

RubyでMth to last elementを解く-CodeEval

アルファベットの並びにおける位置

RubyでLowest Common Ancestorを解く-CodeEval

いやいやもっと簡単な方法があるはずだ バイナリーツリーの共通の親を見つける

RubyでFirst Non-Repeated Characterを解く-CodeEval

Enumerable#detectで 文字列中の繰り返さない最初の文字