32nd Diary

トップ | 最新 | 過去の日記 | もっと過去の日記

2005年
5月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
めーるあどれす
ruby -rbase64 -e'puts Base64.decode64 %q(dGFrYW5vMzJAZ21haWwuY29t)'



2005-05-07 (Saturday) [長年日記]

[Game][Java] 遺伝的に進化する弾幕

アプレットで動くのでちょっといじってみました.

最初のうちの世代は「ぬるいのぉ」って感じなのですが, だんだんやばくなってきます.

世代をある程度進めると避けれるわけがない弾幕が出てきて笑えました.(ぶ

[WEB] 席を譲らなかった若者

読んでみました. この状況は人が集まった結果としては至極当然とも思える.

このケースでは,若者は席を譲るべきだったし, 老人も素直に譲ってくれと言うべきだった.

と,ボクは考えるけど, この意見を他人にも主張する気にはならないな.

場合によっては若者だって(体調の不良とか)疲れるときがあるし, 老人でも年寄り扱いされたくない気分のときがあるだろうしね. 居合わせず,状況もわからないのにどちらかの立場で 意見することは難しい.

関係ないですけど,すごいTrackBack数だねぇ...

[Hack][Ruby] プログラミングのなぞなぞ

実際にやってみたよーん.

ん?Pythonできるのかって?

Rubyで挑戦したに決まっとろうが!!(喝

一応,どんな風に解いたのか簡単にソースあげときます.

ネタバレになるので,見たくない人は目を閉じてから ブラウザの閉じるボタンを押してください.

Level 0

ruby -e 'puts 2**38'

楽勝.っつーか,こんなのbcでいい.

Level 1

ruby -e "puts 'map'.scan(/./).map{|c|c.next.next}.join"

まぁ,楽勝.

Level 2

#! /usr/bin/env ruby
freq = Hash.new(1)
data = DATA.readlines.join
data.scan(/./).each{|c|
  freq[c] = freq[c] + 1
}

freq.each{|key, value|
  puts "key: " << key << ", value: " << value.to_s
}
__END__
(ごにょごにょ)

その後,出力される文字のアナグラムがぜんぜんわからなかったので,辞書検索.

grep '^[layeqtiu]\{8\}$' /etc/dictionaries-common/words

Level 3

#! /usr/bin/env ruby
lines = DATA.readlines
re = Regexp.new("[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]")
for line in lines
  match = re.match(line)
  print match[1] if match
end
puts ''
__END__
(ごにょごにょ)

ちょっと不完全な仕様のような気がするが,答えが出たので,まぁよしとしよう.

たぶん,sedを使っていじったほうが楽.

Level 4

#! /usr/bin/env ruby
require 'net/http'
Net::HTTP.version_1_2
Net::HTTP.start('www.pythonchallenge.com', 80) {|http|
  #nothing = "12345"
  nothing = "46059"
  while
    url = "/pc/def/linkedlist.php?nothing=#{nothing}"
    response = http.get(url)
         nothing =
           response.body[/and the next nothing is ([0-9]+)/, 1]
         puts nothing
    puts response.body
  end
}

こんなことやって大丈夫なのかな...サーバの負荷とか.

これで答えが出てきたんだから,たぶん,正しい方法なんだろう. 手段としてはwget -O - と sedを使ってshで組むのが楽だったかもね.

Level 5

一応,ページを見てフォーラムとPythonのドキュメントを探り, キーワードとしてpickleというのを把握した. シリアライズのライブラリらしい.

どうやらここからPythonが必須なのかもしれない.

シリアライズという概念自体は自分の専門なのでわかる. しかし,慣れないPythonプログラミングで デシリアライズしてみるも, 意味不明な配列が得られただけ...

よくわからんので,ここで足止め. 何したらいいのかよくわかりません.マジレス求む.

[Ruby]拡張モジュール内でのインスタンス生成

てっきり,rb_obj_allocのような関数が 各クラスについて用意されているんだろう, と考えていたのですが,違うらしい.

きっとまつもとさんが言うのだから間違いない.(ぉ

[Ruby] 拡張モジュールとYAML

(YAMLの仕組みがよくわかってないヤツが言う戯言ですが,) 拡張モジュールを使っていて,YAMLで困った.

どうやら, インスタンス変数が見えるオブジェクトでないと, to_yamlできないらしい. attr_accessorで定義されるようなsetter, getterを用意し, instance_variablesをオーバーライドしてもだめだった.

あれ?でも,Rubyの標準的なオブジェクトたちは 内部変数とか見えてないけど,to_yamlできるよね,なぜ? と思い,ソースを見に行ったら, String#to_yamlとかが定義されていた...orz 読み込みの手順についてもYAML.add_ruby_typeで ブロックを登録するみたいだった.

拡張モジュールで作成したクラスについても 同様の手順でto_yaml可能になるのかな, と思ったが,add_ruby_typeという 深みにはまりそうな関数名だったのでやめました.

今回は別の方法で対処.なんだか不便だなぁ...

本日のPingbacks(全0件)