tetraの外部記憶箱

最新 追記
Category;

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

_ [Ruby][math] 「世界のナベアツ」問題を正規表現を使わずに解いてみる

for i in 1..1000
    nabeatsu = ""
    if i%3 == 0
        nabeatsu = "アホ"
    end
    num = i
    while num >1
        if num%10 == 3
            nabeatsu = "アホ"
        end
        num = num/10
    end
    if i%5 == 0
        nabeatsu += "犬"
    end
    print i,"\t",nabeatsu,"\n"
end

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個付いているんだけど、これが意外に騒々しい。でも、速度に関しては全く不満なし。整備が終わったら、今の不安定な自宅サーバと置き換えよう。