2012-01-01から1年間の記事一覧
2006年来はてなダイアリーを利用してきましたが、Github Pagesにブログを移転することにしました。まだ校正ができていませんが、ここにあった全記事を移転しました。新しいところでもよろしくお願いします。melborne.github.com
LoveLangをリニューアルしましたので、ここにお知らせいたします。 http://lovelang.heroku.com/
任意のテキストに対して複数の置換を実行したい ってときあるよね そんなときRubyでは普通 String#subあるいは#gsubメソッドをチェーンするよ def replace(text) text.gsub(/\w+/) { |m| m.capitalize } .sub(/ruby/i) { |m| "*#{m}*" } .gsub(/a(.)/) { "a-…
この間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 = […
できません.. アルゴリズム的にはできてるんだけど*1 答えを得るのに1時間とかorz.. 5秒で答えなきゃいけないのに あとグローバル変数を使ってしまった どうも高速化は苦手です そこに注力する気がなかなか起きない.. レーベンシュタイン距離が1の語同士をfr…
なんか想像以上に手こずったよ^^; case式内が見苦しい.. もっと簡単なやり方あるんだろうな Integer#dollarizeを定義してみた 数字を英語のドル表記に変換
もっと賢いやり方があると思う 座標系を回転させるとか でもまあ一応パスということで.. EnumeratorでSpiralSequenceを作って 2次元配列の要素をスパイラルな順序で出力
バグ入りで80点^^; 入出力情報少なすぎてバグ特定できない.. まあいっか str.gsub(substr).to_aという技を閃いた 文字列中に繰り返し現れる最長の部分文字列
一応パスしたけど75点^^; Trigramのアルゴリズムが怪しいので 多分そこが問題 まあ良として先に N-gramを使って特定ワードの 次ぎに来るワードの確率リストを出力
次のような名前のリストがあって langs = ["ruby", "python", "lisp", "haskell"] 名前の先頭を大文字にするとしたら 君ならどうする? そう普通Enumerable#mapを使って 次のようにするよね langs = ["ruby", "python", "lisp", "haskell"] langs.map { |lan…
Enumerable#chunkでsetを分けて Array#combinationで 与えられた複数の座標間の最短を求める
Array#productを使って^^; 与えられた7桁の電話番号に対する 各数字に割り当てられたアルファベットでの全組み合わせ
FizzBuzz問題はプログラマーが最初に出会う問題だよ FizzBuzzの解法はプログラマーの数ほどあると言われているよ でもいつまでもFizzBuzz問題に関わってたら 本当に解決しなければならない問題を解決できないよ だから僕がFizzBuzz問題に終止符を打つよ! つ…
ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。第2弾!知って得する12のRubyのトリビアな記法 melborne.github.com - 半年くらい前にちょっとトリビアだけど 知ってい…
まず問題を解読するのが大変orz.. どう見てもエレガントな解法じゃない.. 特にheaderのsequenceを作る方法がヒドイ どなたかスマートな解法を教えて下さい 文字列からなるheaderを使って01からなるmessageを解読する headerの各文字はその位置にマッピングさ…
Array#repeated_permutationで^^; 文字列中の文字の全順列
ってまだ解けてません^^; 下のコードだと一応解答は得られるんだけど 5秒以上掛かるってことで0点です.. 気にせず先に.. 一桁の素数(2,3,5,7)で割れる数をUgly Numberという D桁の数字の桁の間に+か-を挟むと3^D-1個の数字ができる Ugly Numberの個数を求める
Array#permutationを使って力技! 与えられた数の各桁の並び替えの組合せを 昇順に並べたとき与えられた数の次ぎに来る数を答える 但し各数には任意個数の0を挟める
またまたArray#permutationのお世話に.. 与えられた2数を最小値と最大値とする 数字の並びにおける並びの組を考える 回文数が偶数個の組の数を答える
StringScannerを使って再帰的に どこかにバグがあるようで50点^^; 2つのアルファベット列に共通する最長の並び 並びは連続していなくてもいい Hardになって急に難しくなってる..
ほんとは構文解析して解くことが 期待されてるんだろうけど 正規表現で行けたので.. いわゆるポーランド記法の電卓
Array#permutationを使って 単語文字の全順列
正規表現で半ば強引に 文字列に対する部分文字列の一致を見る 但し部分文字列中の*は0以上の文字にマッチ
ワンライナーで:) 先頭行の数だけ後続行から最長文字列を選ぶ
ループを使って 綺麗にかけない.. 文字の並び中の繰り返しを見つける
Array#-を使って 文字列がパングラムか判定する
どうすりゃいいのか スタックを実装する
アルファベットの並びにおける位置
いやいやもっと簡単な方法があるはずだ バイナリーツリーの共通の親を見つける
Enumerable#detectで 文字列中の繰り返さない最初の文字