2008-06-24
_ [Ruby][programing] 「世界のナベアツ」問題
お笑い芸人・世界のナベアツの持ちネタで、自然数を順に数え上げてゆき、「3の倍数と3のついた数字の時だけアホになる」というものがあるそうだ。
このネタが面白いのか否か、僕にはサッパリわからないのだが、プログラミングの心得のある者の間では、この問題を如何にしてプログラムで表現するのか?という点で、興味を引いているらしい。
まあ「3の倍数」の判定は簡単なのですけど、「3のついた数字」の判定において、これを数学的に解くのか、もしくは正規表現で調べるのかという点で、激論が交わされているらしいw
1〜1000までについてのナベアツ数判定プログラムをRubyで書くと、こんな感じかな?
for i in 1..1000 nabeatsu = "普通" num = i.to_s if i%3 == 0 nabeatsu = "アホ" elsif /3/ =~ num nabeatsu = "アホ" end print i,"\t",nabeatsu,"\n" end
実行結果。
$ ruby nabeatsu.rb
1 普通 2 普通 3 アホ 4 普通 5 普通 6 アホ 7 普通 8 普通 9 アホ 10 普通 11 普通 12 アホ 13 アホ 14 普通 15 アホ 16 普通 17 普通 18 アホ 19 普通 20 普通 ・・・
正規表現を使ってしまうと簡単すぎる。
_ [programing] Fizz-Buzz問題
Fizz-Buzz問題の例はこんな感じだ。
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
ちゃんとしたプログラマであれば、これを実行するプログラムを2分とかからずに紙に書き出せるはずだ。怖い事実を聞きたい? コンピュータサイエンス学科卒業生の過半数にはそれができないのだ。自称上級プログラマが答えを書くのに10-15分もかかっているのを見たこともある。
Fizz-Buzz問題とは
まんま「世界のナベアツ」じゃんwww
2008-06-30
_ [IT][linux][log] ARTiGOサーバ組み立て&Ubuntuインスコ!
世界最小?のpico-ITXマザーボード"EPIA PX10000"を搭載した超小型ベアボーンキット「ARTiGO」を組み立て、さらにLinux(Ubuntu)をインストールしてみました。名づけて“手乗りサーバー計画”始動!
キットは、秋葉原のテクノハウス東映でメモリとともに購入。ハードディスクは、以前にMac miniから抜き取った120GBのSATA HDD(“アップル印”のHTS541612J9SA00)を使用。
まずはキットの中身。右上の黒い箱はマザーボードが入っている。左下の黒い物体がケース。その他、付属品(電源アクセサリなど)。
マザーボードっす。小さっ!
マザーボードの裏側。メモリソケット(DDR2-533 200pin, SDRAM SO-DIMM)が見える。
手前のピンコネクタは、ケースのUSB、音源、スイッチ類、LEDなどを接続するもの。
こちらはハードディスクのコネクタ。左はIDEで、右はSATA。ちなみに、「ARTiGO」はRev.Bから2.5インチのHDD(IDE、SATAともに)を1個搭載できるようになった。
ケースの裏側のコネクタ類。RGBとLANのコネクタが突き出ている。
ケースの中身。前面(写真では上側)にUSBやLED、スイッチなどが乗った基盤があり、接続ケーブルが伸びている。底面の金属板の下がHDDが入るスペースだ。
pqiのメモリ(1GB)を搭載してみたの図。
こちらは電源基盤(DC-DCコンバータ)。
ケースにマザーボードを組み込んでみたの図。SATAのケーブル(赤いヤツ)が、構造上、とても抜けやすいので注意。組み上げてからUbuntuのインストーラーがHDDを認識してくれなくて、ちょっと焦った・・・
手乗りサーバの完成!HDDのトラブルを除けば、ほんの数十分でできてしまった。
Ubuntu Linux 8.04(サーバー版)を入れてみた。USBからインストールディスクを起動。キーボードもUSBしか接続できないのね。でも、インストールに関しては全く問題ナッシングだったよ。
その後、OpenSSHだとかApacheだとかPHPだとかRubyだとか、もろもろのアプリをつっこむ。
マザーボードを覆うようにファンが1個付いているんだけど、これが意外に騒々しい。でも、速度に関しては全く不満なし。整備が終わったら、今の不安定な自宅サーバと置き換えよう。