プログラミング/ruby/遠い世界の数学 のバックアップ差分(No.1)
更新- 追加された行はこの色です。
- 削除された行はこの色です。
[[公開メモ]] * 概要 [#ma132a96] こちらで紹介されていた、 http://qiita.com/cielavenir/items/cadbc5e24525b6a86cf8 このお題について。 http://nabetani.sakura.ne.jp/kanagawa.rb/evalex/ * まず思いついた普通のやり方 [#t102675d] LANG:ruby def calc(expr) expr.split('*', -1).inject(1) do |result, expr| result * expr.split('+', -1).inject(0) do |result, expr| result + expr.split('&', -1).inject(0xffffffff) do |result, expr| result & expr.split('|', -1).inject(0) do |result, expr| result | expr.to_i end end end end end * 正規表現で手抜きをする [#qb461a1a] LANG:ruby def calc2(expr) eval expr.gsub(/[^\*\(\)]+/,'(\\0)') .gsub(/[^\*\+\(\)]+/,'(\\0)') .gsub(/[^\*\+\&\(\)]+/,'(\\0)') end * コードゴルフ的な何か [#ecb8c47b] LANG:ruby def calc3(s) eval s.gsub(/[^*]+/){"(#{$&.gsub(/[^+]+/){"(#{$&.gsub(/[^&]+/,'(\\0)')})"}})"} end * 質問・コメント [#m332a2d2] #article_kcaptcha
Counter: 5321 (from 2010/06/03),
today: 1,
yesterday: 0