Rubyとの出会いを思い出した

irofさんのid:irof:20111203を読んで。 同感ですね〜! 思えば、同じ思い(「ブレイク処理」は正直論外で、分かり易く書くには?)がキッカケでRubyを知って、ハマっていった気がする。 当時、自分の使える言語ではスッキリしなくて、使ったことがない言語を…

FizzBuzzコンバーター

最近FizzBuzz記事が多いですね。 ということで、私も乗っかってネタを一つ ruby # coding: UTF-8 class Converter def initialize @specs = [] end def specs( value , &cond ) @specs << lambda { |e| cond[e] ? value : nil } end def to_proc lambda { |e…

お題:FizzBuzz

お題:FizzBuzz - No Programming, No Life rubyで回答 1.upto(100){|i|puts"#{[:Fizz][i%3]}#{[:Buzz][i%5]}"[/.+/]||i}

お題:ある金額になるコインの組み合わせ

お題:ある金額になるコインの組み合わせ - No Programming, No Life rubyで回答 # coding: CP932 require "rspec" def total_coins_pattern(total, *coins) total = total.to_i coins = [*coins].flatten min_coin = coins.min.to_i size = min_coin.zero? …

お題:文字列を先頭から見て同じところまで除去

お題:文字列を先頭から見て同じところまで除去 - No Programming, No Life rubyで回答 # coding: CP932 require "rspec" def shift_same_str(*args) args.map(&:chars).map(&:to_a).tap do |x| x.min_by(&:count).dup.each {|s| x.each(&:shift) if x.all?{…

メモ:Enumerator

似てるけど大きな違い。メソッドが何を返すか気をつけよう。Enumeratorオブジェクトを返すメソッドは、もっとあっても良いと思う。 id:ku-ma-meさんのmame/enumerabler · GitHubとか採用されるといいな。 # ruby 1.9.2p180 (2011-02-18) [i386-mingw32] num …

RubyとWSHでユーザー環境変数を設定する

チクタク…チクタク… # coding: CP932 module OLE require "win32ole" module Environment MEMBERS = { HTTP_PROXY: [ [ :protocol, :username, :password, :host, :port ], %r{^(.*?)//(.*?):(.*?)@(.*?):(.*?)$}, lambda{ |values| "%s//%s:%s@%s:%s"%value…

StructとYAMLの仲を取り持つHash

StructとYAMLとHashが連携する機会が多いので最も頑張っているHashにヘルパーさんをつけることにした HashHelperとその働き # coding: CP932 require "yaml" require "pp" module HashHelper module ClassMethods def new_each_block new { |hash, key| hash…

YAML.dumpの全角文字バイナリ文字列化ちょい対策

YAMLのエンジンにPsychを利用するという本来の対策ができなかった(libyamlの入れ方がわからない) Windowsでのlibyaml入れ方教えてー!エライ人!! と困ったままというわけにはいかないので取りあえずeval使って全角文字に戻した YOML # coding: CP932 req…

Ruby1.9でexe化 - ocra

ocra情報 github https://github.com/larsch/ocra Documentation http://ocra.rubyforge.org/ exe化 引数あり ocra hoge.rb -- ora

メモ:修正した行は?修正してない行は?

ちょっとした確認依頼にちょっとしたコードで対応できるRubyって素敵 依頼内容を聞きつつコードを書くのが当たり前になりつつある(^^ゞ # files before = File.open("before.csv").lines.to_a after = File.open("after.csv").lines.to_a # conditions match…

メモ:遺物

# coding: CP932 require "tapp" require "inifile" # gem install inifile #require "yaml" require "json" require "xmlsimple" # gem install xml-simple def to_json(hash) hash.to_json.encode(__ENCODING__) end def to_xml(hash) XmlSimple.xml_out(h…

メモ:ダメだ(>_<)

# coding: CP932 # 生成パターン PATTERN = { SEQ: -> size, n {1.upto(1.0/0).take(n).map{|i| "%0#{size}d"%i}}.curry, HIRA: -> size, n {('ぁ'..'ん').cycle.take(size * n).each_cons(size).map(&:join)}.curry, KATA: -> size, n {(('ァ'..'ン').to_a+…

メモ:固定長開始位置

DATAファイルオブジェクト ps_data.rb DATA.lines.map(&:chomp).tap{|sizes| puts sizes.inject([1]){|poses, size| poses << poses.last + size.to_i}.zip(sizes) .map{|(pos, size)| "#{pos}\t#{size}"} } __END__ 21 1 6 1 4 1 16 1 20 1 2 1 69 1 26 1 1…

メモ:なるほど〜

Ruby1.8 cache = { 0 => 0, 1 => 1 } fib = lambda {_fib_ = lambda {|n| cache[n] ||= _fib_[n-2] + _fib_[n-1]}}.call puts (1..20).map(&fib).join(", ") Ruby1.9 cache = { 0 => 0, 1 => 1} fib = -> { _fib_ = -> n { cache[n] ||= _fib_[n-2] + _fib_[…

テストがないと何をしているのかわからんよね

id:epsilon_deltaさんの記事 『10分でコーディングをやってみた - ボクは算数以外しか出来なかった』 を読んでRubyで書いてみた。 zipでやってみます。 できてるっぽいけど、何をやってるのかがわかりにくいなー require 'rspec' class Cards def self.deal(…

BOM!BOMB!BON!(意味なし)

module function Kernel.#open エンコーディングの指定 ext_enc(外部エンコーディング)が指定されている場合、読み込まれた文字列にはこのエンコーディングが指定され、出力する文字列はそのエンコーディングに変換されます。 ext_encが'-bom'で終わる場合、…

ASR便利!

artonさんの WIN32OLEの高速化手法 - L'eclat des jours(2011-02-07) Rubyizeのインプロセス/インスレッド化 - L'eclat des jours(2011-02-09) 記事を読んで、スクリプトを文字列で渡しても実行可能とあったのでやってみた。 Windows 7 64bit ASR (Ruby-1.9.…

コマンドラインオプション:-Fregexp

ん?regexp?? -Fregexp 入力フィールドセパレータ($;)に regexp をセットします。 引用:[http://doc.ruby-lang.org/ja/1.9.2/doc/spec=2frubycmd.html#cmd_option:title=コマンドラインオプション]-Fって文字列指定だと思ってた。 ということは…(例が悪い…

Ruby Koans メモ

Ruby Koansが勉強になって面白いですメモ(更新中) object_id共通 false.object_id # => 0 true.object_id # => 2 nil.object_id # => 4 Windows XP ruby 1.9.2p136 (2010-12-25) [i386-mingw32] fixmin = -2**30 # => -1073741824 fixmax = 2**30-1 # => 1…

FizzBuzzはじめました

乗り遅れ気味だけどFizzBuzzやってみました。[Ruby1.9.2p136] 1.upto(100){|i|puts"#{[:Fizz][i%3]}#{[:Buzz][i%5]}"[/.+/]||i} 61B1.8.7で良いみたいなので100を?dにして・・・[Ruby1.8.7p330] 1.upto(?d){|i|puts"#{[:Fizz][i%3]}#{[:Buzz][i%5]}"[/.+/]||…

slice_beforeで

id:seuzoさんの『連続した日付を範囲形式でまとめる』を読んで自分も作ってみた。いつまでも使い方が覚えられないEnumerable#slice_beforeを使ってみる。Ruby1.9.2p136です。 # coding: UTF-8 require 'date' lists = " 2010-12-31 , 2011-01-01 , 2011-01-0…

ちょっとハマった上に無駄骨だった

環境変数http_proxyをURI.parseした時の要素が気になって、調べるコードを書いてみた。最初はこんな感じのコード require 'uri';{}.tap{|h| URI.parse(ENV['http_proxy']||ENV['HTTP_PROXY']||'').tap{|uri| uri.instance_variables.each{|var| h[var]||=uri…

コマ大数学科

1から10000までの番号がついた電灯がある。1の倍数の電灯のスイッチを押し、次に2の倍数のスイッチを押し、次に3の倍数のスイッチを押し…と、これを10000回行った後、点灯している電灯の数はいくつか。初期状態で電球は消灯している。(コマ大数学科第12…

04灘中

A,B,C3種類のコインがあり、A6枚、B1枚、C1枚の重さと、A1枚、B4枚、C1枚の重さと、A1枚、B1枚、C3枚の重さはいずれも61gである。C1枚の重さはいくらか。(04灘中) #arithmetic 140文字に収まらなかった。 (1..59).to_a.repea…

File.readlines - 私が悪かった。

メール投稿前とはコードが違うけどファイルのサイズで落ちたり落ちなかったり したのだけど・・・ #!ruby -Ku # coding: UTF-8 DAT = "1234567890"*100 MB = 1024 # 0:128MB, 1:256MB, 2:512MB, 3:1GB PAT = 3..3 PAT.map{|n| 128 * 2**n }.each do |size| f…

Windowsで複数のRubyバージョンを使うならpik

rvmよりもpikが好き!pik for osxがほしい![2011.03.05 追記:pik 0.2.8] pik情報 github https://github.com/vertiginous/pik usage http://wiki.github.com/vertiginous/pik/usage Rubyがインストールされていない場合 Ruby+pikインストーラー[msi] https…

現在のメソッド名取得とメソッド名 #{ruby}

現在のメソッド名取得:__method__, __callee__ メソッド名での実行:__send__前回、前々回と投稿したメソッドはこんな感じにも実装できる。 class String def centerb(width, padding = ' ') justb(__method__, width, padding) end def rjustb(width, padd…

全半角混在揃え(バイト指定)※center追加 #{ruby1.9}

メール投稿テスト(続き)String#rjustb, String#ljustb に続き、String#centerb の実装です。2回の投稿にわけた理由は特になしw そもそもメール投稿テスト用ネタなので。 class String def centerb(width, padding = ' ') center(width-(bytesize-size), p…

全半角混在揃え(バイト指定)

class String def rjustb(width, padding = ' ') rjust(width-(bytesize-size), padding) end def ljustb(width, padding = ' ') ljust(width-(bytesize-size), padding) end end # 比較出力 def disp(strs, title="") puts (" %s "%title).center(40, '*') …