« 2006年04月 | メイン | 2006年06月 »

2006年05月31日

『たのしいRuby』

ちょっと前に読んだ。それ以来、おれ的にはちょっとRubyブーム。本書はRubyの入門書として評価が定着している(らしい)。プログラミング自体の入門書としてもいいかも。
結構気の利いた練習問題が収録されているので別解など考えて遊びたい

例1

"七千百二十三"といった、漢数字による数の表現を、「7123」のような数値に変換するメソッドkan2numを定義してください。

本書付属の答え

def kan2num(string)
  digit4 = '0'
  digit3 = '0'
  digit2 = '0'
  digit1 = '0'

  nstring = string.dup
  nstring.gsub!(/一/,'1')
  nstring.gsub!(/二/,'2')
  nstring.gsub!(/三/,'3')
  nstring.gsub!(/四/,'4')
  nstring.gsub!(/五/,'5')
  nstring.gsub!(/六/,'6')
  nstring.gsub!(/七/,'7')
  nstring.gsub!(/八/,'8')
  nstring.gsub!(/九/,'9')

  if nstring =~ /((\d)?千)?((\d)?百)?((\d)?十)?(\d)?$/
    if $1
      digit4 = $2 || '1'
    end
    if $3
      digit3 = $4 || '1'
    end
    if $5
      digit2 = $6 || '1'
    end
    digit1 = $7 || '0'
  end
  return (digit4+digit3+digit2+digit1).to_i
end

if __FILE__ == $0
  print kan2num('七千百二十三'),"\n"
end

別解

折角なので万や億まで対応させたい(そうするとアルゴリズムが少し複雑になる)
def kan2num(kan)
	bignum = 0
	num = 0
	n = 0

	kan_array = kan.split(//)
	kan_array.each{|k|
		case k
		when '一'
			return nil if n != 0
			n = 1
		when '二'
			return nil if n != 0
			n = 2
		when '三'
			return nil if n != 0
			n = 3
		when '四'
			return nil if n != 0
			n = 4
		when '五'
			return nil if n != 0
			n = 5
		when '六'
			return nil if n != 0
			n = 6
		when '七'
			return nil if n != 0
			n = 7
		when '八'
			return nil if n != 0
			n = 8
		when '九'
			return nil if n != 0
			n = 9
		when '十'
			if n == 0
				num += 10
			else
				num += 10*n
				n = 0
			end
		when '百'
			if n == 0
				num += 100
			else
				num += 100*n
				n = 0
			end
		when '千'
			if n == 0
				num += 1000
			else
				num += 1000*n
				n = 0
			end
		when '万'
			bignum += 10000*(num + n)
			num = 0
			n = 0
		when '億'
			bignum += 100000000*(num + n)
			num = 0
			n = 0
		else
			return nil
		end
	}
	
	bignum + num + n
end

kan = "三億千二十五万二千五百十二"
p kan2num(kan)

例2はまたこんど^^

2006年05月30日

『電波男』

「おまえ1年以上遅いYO!」と言われそうだけど、この前、本田透『電波男』を読んだ。ふらりと入った古本屋で300円で買ったんだけど。

この本については、あちこちで散々語られてるみたいで、何言ってもガイシュツかもだが、思ったことを2点ほど。

ひとつは本田氏の議論はマルクス主義と似てるという点。歴史とか現状分析についてはおもしろいし鋭いと思う点がいくつもあるけど、未来予測とか解決策みたいな点においてはどーかなーと感じてしまう。本田氏とか同類の人たちがまかり間違って何かのはずみで権力を握ったらたぶんポルポト派とか毛沢東みたいになるんだろうなー、みたいなね。

それから、この人多分嗅覚の弱いまたは未開発な人なんじゃないかと思った。嗅覚てのは比喩的な意味じゃなくて文字通りな意味で。今後の二次元テクノロジーの進化を語る中で「嗅覚は余計」みたいなこと書いてるし。あと、グルメ的なものを恋愛資本主義とからめて切り捨ててるし。

これはおれの仮説に過ぎないんだけど、恋愛において嗅覚の果たす役割は実はとても大きいんじゃないかと思う。嗅覚てのは脳の古い皮質に直結だし、言語化されずに無意識に働く場合が多いし、人間の中の自然かなと。ふわーっと飛んで行っちゃったり、ドーッと突っ走って行きそうになる人間を制御するのは嗅覚かなと思うんだよ。恋愛において嗅覚は良きパートナーを文字通り嗅ぎ分ける役割を果たしていて、逆に嗅覚の弱い人って異性関係においてスペック的なもので突っ走っていったり(つまり本田氏言うところの恋愛資本主義ドップリ女もこの手合い。つまり同類)、アイドルの追っかけになったりし易いんじゃないかなと。ハロヲタとかをスペシメンに普通の人と嗅覚テストの比較とかやったら面白いんじゃないかと思うんだけど。

2006年05月26日

たけしのコマネチ大学数学科

これ先週から見始めた。結構おもしろい。 昨夜の問題は「ヨセフスの問題」

問題が出たところで、再生をポーズして自力で考えてみた。カードがn枚の時、1からnを時計の文字盤よろしく輪に並べて、2から初めてひとつおきにカードを捨てて行き、それをグルグルと続ければ良いことはわかった。で、一周ごとにカード枚数は約半分になって行くので、答えはnを超えない最大の2のベキ乗をnから減じた残りのホニャララだろうな、と予想。で、いくつかの2のベキ乗を含む数通りのnについて実験した結果、答えは2*(n - (nを超えない最大の2のベキ乗))+1に違いない!とguess。n=200のときは2*(200 - 2^128) +1 = 2*(200 - 128)+1 = 145

…というあまり数学的とはいえないアプローチで取りあえず答えを出して、番組の続きを見た。ふむふむ、こういうふうに再帰的に解く訳ね。

この問題の解法をコーディングしてみた。子飼さんのブログの真似ですけど^^

言語は最近覚えたばかりrubyで。

まずは、エレファントな、すなわち力任せなやりかた。なにしろ覚えたてなのでダサいコーディングしてるかもだけど…

def josephus(n)

  arr = Array.new
  (1..n).each {|i| arr.push(i) }

  loop {
    t = arr.shift
    arr.push(t)
    t = arr.shift
    return t unless arr.size > 0
  }
end

josephus(n)を再帰的に定義するやり方もrubyでそのまま定義できるはずだけど、省略。で、解の公式的なコードとしては、

def josephus3(n)

  s = sprintf("%b", n)
  Integer("0b" + s[1, s.length - 1] + "1")
end

2進数に変換して文字列操作だけでやってみた。

【追記】 やっぱりダサいコーディングしてたよ;;

エレファント版で、配列を生成するのは、

arr = (1..n).to_a

でいいんだね。

ということで、エレファント改訂版↓

def josephus(n)

  arr =  (1..n).to_a

  loop {
    t = arr.shift
    arr.push(t)
    t = arr.shift
    return t unless arr.size > 0
  }
end

2006年05月22日

Buffalo HS-D300GL

GW前のことになるけど、BuffaloのHS-D300GL(以降、HS-DGLと略)を買って来て使っている。これ基本的にはNASなんだけど、同社製のTVキャプチャー・ユニットをUSBで接続してTV番組を録画できる他、ネットワークに接続されたPCやdlna対応機器に生あるいは録画済みのTV番組を配信する機能がついている。

この機械、買って来た翌日にファームウェアをバージョンアップしようとしたら、どういうわけか白目を剥いてお倒れに、もとい、インジケーターをチカチカ点滅させて意識不明になってしまわれたので、いきなり宅急便で名古屋にドナドナ。GW明けて旅行から帰って来たら別個体に交換されて家に帰って来ていた。お、GW挟んでるのに、対応早いじゃん^^

使い始めたら、ファンの音が少し気になった。NASの分際でMac miniよりうるさい。というかMac miniが静かすぎるのかな。Mac miniも負荷がかかるとシュォーンと音をたて始めるのだが、これは「ボク、マケナイゾー!ガンバルゾー!」と言ってるようでむしろ愛おしくなる。しかし、負荷もかかってないのにうるさいHS-DGLは結構ウザい。

TV録画機能は普通に便利に活用中。

ちょっと問題あるのはNAS機能の方だ。Windows XPからだと問題ないのだが、Mac OS XでHS-DGLのボリュームをsmbでマウントすると日本語のファイル名が文字化けしてしまうのだ(ちなみに、Windows XPのファイル・システムをsmbでOSXにマウントしても文字化けは起こらない)。afpでマウントすると、ファイル名は化けないのだが、今度はファイル名の長さに制限ができて、それを超える名前のファイルは表示されなくなる。

で、なんとかならないかなといろいろググって初めて知ったのだが、HS-DGLと、同じくバッファローのHDシリーズと、玄人志向の玄BOXはハード的にはほとんど同じモノで、PPCが入っててLINUXで動いているらしい。ファイル・システムはext3で、分解してHDDを取り出してPCに取り付けると、LINUXでマウントできるらしい。それでもってtelnetを入れると、リモート・ログインできるようになって、いじり放題に。そうしてsambaのバージョンを上げると文字化け問題も解決かも…なるほど〜今度やってみよう。

2006年05月18日

FF12プレイ・メモ4

一応続けてるんだけど、さらに亀ペース…ていうか、ギルヴェガン終了したところで、旅行やなんかあったことだし、しばらく放置してたんだけど。

プレイ再開して、とりあえずモブをやっつけて行くことに。まずはアルケイディスに依頼人がいる案件を3つまとめて処理開始。ソーヘン地下宮殿にいる2匹をやっつけて、次はツィッタ大草原にいる竜…なんだけど、クリスタルにセーブして続きはまた明日以降にしよう。

2006年05月09日

東京に帰還


写真はヨーロッパに向かう途中、飛行機の窓越しに撮ったシベリア。一見文明の痕跡も見当たらないし、地球と思えない。

2006年05月08日

オランダにて その3

centrlst.jpg
(写真はアムステルダム中央駅)

アムステルダムではThe Gresham Menphisというホテルに泊まっている。箱としてはなかなか良いホテルなのだが、2つばかり問題があった。どういうわけかエアコン(三菱重工製)が全然効かないのと、バスルーム備え付けのヘア・ドライヤーのホースがノズルから取れてしまったことだ。昨日、フロントに電話して苦情を伝えたら、ポーターのおじさんがやって来て、エアコンは適当に操作盤をいじって、ヘア・ドライヤーのホースはこれまた適当にノズルに差込んで帰って行った。しかし、エアコンはやはりただ風が出てくるだけで一向に冷えてこないし、ヘア・ドライヤーのホースも危なっかしい感じだ。

で、今朝シャワー後にヘア・ドライヤーを使っていたら、ホースがノズルからポロっと抜けて、洗面台の上に置いてあったグラスを床に叩き落としてしまった。バスルームの床はガラスの破片が散乱する状態になった。効かないエアコンのせいでいい加減イラついてたおれはとうとうブチ切れて、フロントに電話して「おまいらやる気あんのか、ゴルァ!!」とがなり立てた。それで結局部屋を替えてもらうことになった。

その後、出かけて、夕方一度ホテルに戻ってきたときに、有線LANでネットに繋ごうとしたら繋がらない。ネット接続は有料で24時間20ユーロもする。それを今朝買ったばかりなのに。しかも出かける前に、ネット接続を新しい部屋のほうで有効にしといてね、と念を押しておいたのだが。で、またフロントに電話したら、システムを提供しているquadrigaという会社に電話してくれという。quadrigaの人と話をした結果、部屋のネットワークが有効になってないということがわかった。quadrigaの担当者がホテルのフロントの人と電話で話してくれて、結局別系統の無線LANのキーをもらってそれで繋ぐことになった。

以上のような経緯で、ホテルの設備関係でおもいっきり疲れる一日だった。

昼間はアンティーク市とヴァン・ゴッホ美術館(感動します。泣けます)に行った。

夜はPasta e Bastaという名前の、店員が順番に歌うという、面白いレストランに行った。実は店員は皆プロのミュージシャンで、レストランで働いているということだった。ウェイトレスの一人(実はオペラ歌手の卵で、後にSweeter than Rosesという曲をマイクなしで歌ってた)に、トイレの場所を尋ねたついでに、「君、ウィノナ・ライダーに似てるね」といったら、「あら、お上手ですこと^^そういうあなたもジョニー・デップに・・・」いや、嘘です(笑

明日はスキポール空港から飛行機に乗って東京に帰る予定。

2006年05月06日

オランダにて その2

pic 065-.jpg
アムステルダム→ゴッホの森(正式名Hoge Veluwe国立公園)→ライデン→キューケンホフと周ってアムステルダムに帰還。Rijksmuseumは今工事中で金曜日のみ開いてるので、今日見てきた。レンブラントの『夜警』見た・・・けど実はあまり良さがわからなかったりする。西洋絵画って15~16世紀にダビンチとかボッティチェリで盛り上がって、その後は19世紀後半ゴッホとか出てくるまで低迷期でこれといって見るべきものがない、てのがおれの持論だったりするんだが。Hoge Veluwe国立公園内にあるKroeller-Mueller美術館のコレクションはため息が出たな。

そういえば昨日、ライデンで夜8時ちょっと前にカフェのテーブルについたら、ウェイトレスが「今日は終戦記念日で8時から黙祷の時間だからよろしく」と。で8時になったら本当に賑やかだったカフェが5分間ほどし~んと静まり返った。

2006年05月04日

オランダにて

netherland.jpg
かなり唐突にオランダに飛んできました。
でっかい画像をアップしようとしたら、サムネイル作成でヘクるのはどうしたことだ?Perlの構成いじったっけな?とりあえずここからでは処置なし;;

アムステルダムの御当地ブランドMEXXでジーンズとシャツを買った。お直し要らずでフィットしてしまうおれはちょっとカッコいいと思う。

2006年05月01日

4月の検索キーワード、ベスト10

ff12
mtb
klein
ギル稼ぎ
調教
なるしまフレンド
ギプス
attitude
spd
dovecot

「調教」で来た人って絶対違うものを求めてたよな(笑