2007年7月30日月曜日

LittleBigPlanet

このブログ記事をはてなブックマークに追加

LittleBigPlanetは一言で説明するには難しい新ジャンルのコミュニティベースのクリエイティブアクションアドベンチャーゲームだ。最初はそれほど興味は無かったが、世界中の人たちと自分の分身である人形を操って協力しながらプレイする様は見ているだけで楽しくなる。

結構前から知られているタイトルだがまだ発売日も決まっていないので、のんびり待つことにしよう。PS3のタイトルが本格的に揃いだすのは来年になるだろうな。

以下、LittleBigPlanetのトレイラー。




続きを読む...

2007年7月26日木曜日

一家に1枚周期表

このブログ記事をはてなブックマークに追加

一家に1枚周期表第3版について (文部科学省)

元素それぞれにその用途や写真などを載せてあり、見てるだけで楽しい周期表。教科書に載っているような味気ないものよりもこちらのほうが断然良い。

続きを読む...

diNovo Edgeキーボード

このブログ記事をはてなブックマークに追加

diNovo Edge™キーボード(DN-1000)が日本でも8月10日に出るらしい。充電式Bluetoothワイアレスキーボードだ。ガラスのような質感で外観もスタイリッシュでよい感じ。パナソニックのLet's noteでお馴染みのぐるぐるスクロールも搭載している。価格は24,800円と、現在、自宅でも職場でもメインで使っているHHKB Professionalとほぼ同じ値段。

リビングにTV兼用のPCを購入したのでそこで使いたいが、子供たちも利用するのでちょっと考えてしまうなぁ。すぐに壊されてしまいそうだ…。

続きを読む...

2007年7月25日水曜日

C99におけるrestrictポインタの存在意義

このブログ記事をはてなブックマークに追加

ベクトル型スーパーコンピュータでは必要不可欠。ポインタをrestrictで修飾することで、そのポインタは別名を持たない、つまり、どの変数からも参照されないことが保証される。なので、ベクトル・プロセッサやSIMD演算での最適化を効率よく行うことができる。因みに、C99以前でも拡張仕様でrestrictは使われていた。

尚、restrictについては、プログラミング言語 C の新機能 - restrictポインタでの説明が詳しい。

続きを読む...

2007年7月23日月曜日

色が濃い方のタイルはどちら?

このブログ記事をはてなブックマークに追加


上の図のAのタイルとBのタイルでどちらの色の方が濃い?

答えは、どちらも同じ濃さ。疑うのであれば、画像ファイルの問題のタイルだけ切り出して比べてみると良い。人間の目は信用ならないという話でした。

MITのEdward H. Adelson教授Checkershadow Illusionから。

続きを読む...

echochrome

このブログ記事をはてなブックマークに追加

エッシャーの騙し絵の中を歩く人形を誘導するゲーム。まずはトレイラーを見て欲しい。これは面白そう。見ているだけでも楽しいね。OLE Coordinate Systemってのを使っているらしいんだけど、その解説サイトからPC用のお試し版がダウンロードできる。ほかに、ウェブサイト上でJavaを利用したデモプレイもできる。PS3, PSP用。


続きを読む...

2007年7月21日土曜日

ソースコードにコメント書かなくなったかも…

このブログ記事をはてなブックマークに追加

以前に比べてプログラムのソースコードにコメント書くことが少なくなった。まあ、大抵は自分だけが見るものだから他人に迷惑はかからないと思うのだけど、改めてそのことについて考えてみた。

確かに以前はそれなりにコメントを入れていたけど、それはそのコードを数ヶ月後に見たとき、何をしているのかわからなくなっていたからだ。しかし、今はコメントが書かれていなくても以前作ったコードを見て何をしているのかわかる。それは、クラス名、関数名、変数名を付けるときかなり慎重に決めるようになったのが大きいと思う。その関数や変数を見れば、大体何をしているかわかるのだ。関数や変数を見れば何をしているかわかるのに、わざわざコメントを付けるのもなぁ、と考えて付けなくなってきたのだと思う。

後は、クラスを使ったオブジェクト指向なプログラミングのおかげだろう。それぞれのクラスが独立しているおかげで、互いの依存関係をほとんど無視できるから、そのクラスや関数の動作も理解しやすいのだ。デザインパターンに沿っていれば、全体の動作はすぐに頭に浮かぶ。

そのようなわけで、コメントが減った。まあ、共同作業ではそうも言っていられないのだろうけど。因みに自分がよく使うプログラミング言語はC++とPythonだ。

続きを読む...

なぜこの方程式は解けないか? - 天才数学者が見出した「シンメトリー」の秘密

このブログ記事をはてなブックマークに追加

なぜこの方程式は解けないか?―天才数学者が見出した「シンメトリー」の秘密を読んだ。群論の基礎を築いたエヴァリスト・ガロアの波乱万丈の人生を中心に、群論にかかわる様々な出来事やそのすばらしい応用をわかりやすい例をとって語っている。軽く読める数学史と言ったところ。軽く読めるからといって内容が軽薄というわけではなく、できるだけ多くの専門外の人々にわかるように、数学、物理学、生物学、果ては音楽まで関わってくる群論の凄さと面白さを伝えている。

正直に言うと、自分は昔からあまり群論は好きではなかった。しかし、これを読んだあとは群論に強い興味を抱いた。もう少し群論について学んでみようかなぁ。やはり、好きこそ物の上手なれ、だ。



続きを読む...

2007年7月20日金曜日

WS011SHを使う際にまずやっておくこと

このブログ記事をはてなブックマークに追加

Advanced/W-ZERO3[es] WS011SHが7月19日に発売された。事前に予約しておいたこともあり、当日に問題なく購入できた。今まで利用していた無印W-ZERO3に比べ、画面解像度が640×480から800×480になり、幅50mm×高さ135mm×厚さ17.9mmと大幅に小さくなって軽くなり、CPUの性能が上がり、USBホスト機能が搭載され、メモリが倍に増えた。

性能はこのように大幅に上昇したわけだが、使う前にいくつか気をつけるべき点がある。まず、このWS011SHにはソフトキーが無い。これは非常に不便だ。そこで、スタートメニューから[設定]-[ボタン]-[ソフトキー]を選んで、ソフトキーを使えるようにする。この設定はちょっとわかりにくかったので、もう少し解りやすくしてもいいのではないかな。個人的にはデフォルトでもいいくらいだ。電話掛けるときとかメール書くときとかソフトキーを使いまくる自分としては、もしこの設定が無かったらWS011SHの個人的評価は限りなく下がっていたと思う。

次に、電波状態ランプをOFFにする。無印W-ZERO3でもそうだったのだが、これで電池の持ちがかなり変わるので必ずやっておくこと。スタートメニューから[設定]-[パワーマネージメント]で設定できる。

そして、microSDを用意する。いろいろとデータは溜まるもので、容量は多いに越したことは無い。自分はWS011SHを受け取りに行った際に、近場で購入した。2GBで約3,200円だった。安くなったものだ。そうそう、購入と言えば、ストラップも必要だ。今回はタッチペンが内蔵型ではなく、ストラップにつけて使うようになっているので、もし、適当なストラップを持っていなければ用意しておく必要がある。

後は、音やマナーモードの設定を変更したり、文字の大きさやToday画面を変更したり、メールやActiveSyncの設定を行ってまずは完了。使い勝手はなかなか良いかな。もう少し慣れればもっと使いやすくなると思う。Xcrawlキーも初めのうちは動作がぎこちなく使い勝手が悪いんじゃないかと思ったが、使っているうちにこなれてきてうまく動作するようになった。

後は、無印のときでもそうだったように、便利なアプリケーションをインストールすればもっと良くなるだろうな。そういや、普通の操作では着信メロディにMP3を利用できないが、レジストリをいじれば聴けるようになるらしい。自分はほとんどの場所でマナーモードにしているのであまり関係ないけど。

続きを読む...

2007年7月14日土曜日

新型PSP

このブログ記事をはてなブックマークに追加

軽量・薄型に進化し、ビデオ出力機能を標準搭載した 新型 PSP®「プレイステーション・ポータブル」(PSP-2000) カラーバリエーションとともに9月発売決定

新型のPSPが9月に発売らしい。これは欲しいかも。今までのPSPからの変更点は、重さが2/3、厚さが4/5、UMD読み込み短縮、外部ディスプレイへの出力などで、利用してるFull HDディスプレイにD端子で接続できるのは嬉しい。

続きを読む...

2007年7月13日金曜日

matplotlib: 3次元プロットの雛形

このブログ記事をはてなブックマークに追加

matplotlibで3次元プロットする際の雛形を示す。たったこれだけ。

from pylab import * import matplotlib.axes3d as p3 x = [2.36, 1.33, 1.10, 1.33, 2.36] y = [10.0, 8.00, 6.00, 4.00, 2.00] z = [1.10, 1.20, 1.44, 2.07, 4.30] ax = p3.Axes3D(figure()) ax.plot3D(x, y, z, color=(0.0, 0.0, 1,0)) ax.scatter3D(x, y, z, color=(1.0, 0.0, 0.0), marker="o", s=10) show()

以下はもう少しコメントと装飾を加えたソースコード。

from pylab import * import matplotlib.axes3d as p3 # データ. x = [2.36, 1.33, 1.10, 1.33, 2.36] y = [10.0, 8.00, 6.00, 4.00, 2.00] z = [1.10, 1.20, 1.44, 2.07, 4.30] ax = p3.Axes3D(figure()) # ラベル. ax.set_xlabel("X") ax.set_ylabel("Y") ax.set_zlabel("Z") # 青線を引く. ax.plot3D(x, y, z, color=(0.0, 0.0, 1,0)) # サイズ10の赤丸で表示. ax.scatter3D(x, y, z, color=(1.0, 0.0, 0.0), marker="o", s=10) # 表示範囲. ax.set_xlim(1.0, 3.0) ax.set_ylim(1.0, 12.0) ax.set_zlim(1.0, 5.0) # DPI=100でPNGファイル(plot3d.png)を作成. savefig("plot3d.png", dpi=100) # 画面に表示. show()

続きを読む...

2007年7月11日水曜日

37%ルール

このブログ記事をはてなブックマークに追加

たくさんある中でより良いものを選びたい場合、最初の 37% まで確認した後、それまでよりも良いものに出会った時点でそれ採用するのが確率的にもっとも成功率が高い。群論から。因みに 37% は 1/e に近い数だ。

続きを読む...

2007年7月7日土曜日

銀行で暗証番号を変更しようとしたときのこと

このブログ記事をはてなブックマークに追加

まだ、ATMでキャッシュカードの暗証番号が変更できなかったころのこと。自分が利用していたキャッシュカードの暗証番号が推測されやすいものだと思ったので、銀行に変更を申し出た。ところが変更するのに手数料として1,500円かかるとのこと。よっぽど解約して新規に作成してやろうかと思ったが(それなら無料)、矛盾したシステムだと思いながらも、その場は結局変更せずに済ました。

それから半年もせずにATMで暗証番号を変更できるようになった。すぐに変更を済ませたことは言うまでもない。

銀行の自分本位な、もしくは何も考えていない体質が良くわかる出来事だった。

続きを読む...

2007年7月6日金曜日

セカンドライフとPS3のHome

このブログ記事をはてなブックマークに追加

最初に言っておくが、セカンドライフ(Second Life)とPS3のHomeは別物だ。どちらも3D空間をアバター(プレイヤーの操作するキャラクター)が自由に動き回れる。しかし、ユーザーコンテンツを主体とするセカンドライフに対して、PS3のコミュニティの場を主眼としてるHomeでは根本的な存在意義が違うのだ。

セカンドライフではユーザーが自由に「モノ」を作ることができる。たとえば、野球のボールでも、公園の滑り台でも、天を突くような高層ビルでも作ることができる。それは形だけではなく動作などもプログラムを組むことにより実現できる。また、そうしたものをほかのユーザーに売ることもできる。さらに売った金は現実の金に換金できるのだ。つまり、セカンドライフはそれ自体で完結した世界を持つコンテンツなのだ。

一方、PS3のHomeではどうか。発表された資料によれば、まず、ユーザーがコンテンツを自由に作成できない。また、Homeでユーザーが金を稼ぐこともできない。そして、コミュニティの場を提供するというコンセプトからHome自体が独立したコンテンツとはならないだろう。

では、セカンドライフはすべてにおいてHomeより秀でているのだろうか。それは違うと思う。

まず、第一にグラフィックはHomeの方が格段に良い。実行する環境の性能の違いというわけではなく、ソフトウェア側のデザインの問題である。最初に選べるアバターがあんなに酷いはわざとではないかと勘ぐってしまうほどだ。ユーザーが作成したものはかなり良いものもあるが、それらは購入しなければならない。腕に自信のあるユーザーは自分で作成することもできる。それでも、大抵の人は最初に選べるものよりも良いものはなかなか作れないだろう。

まあ、アバターはどうにかできるとしても、セカンドライフ内の環境を変更することは難しい。ここでいう環境とはプログラム動作のことだ。ネットワーク回りの出来の良し悪しに関わるのか、周りの建物や木などの「モノ」が一つ一つ描画されるのが見て取れるほど表示が遅い。さらに、たくさんの人が集まる場所に行くと止まったかと思うほど動きが遅くなる。これは、プレイアビリティを著しく低下させている。自分は1999年に発売されたEverQuest(EverQuest2ではない)をかれこれ8年もプレイしているが、この古いネットゲームよりもかなり見劣りするこの環境に早々に嫌気がさしてしまった。LSLプログラミングには興味があったのだが環境がこれではちょっと…。

ほかにもセカンドライフの多くのコンテンツが性的コンテンツであることにも閉口してしまうし、商売して儲かるという話も富を稼いだのは最初に土地の売買をしたごく一部の人たちだけで、大抵の人はそんなに儲かることは無い。儲けたければ現実世界の何倍もの苦労と努力が必要じゃないかな。それどころか、まともに遊ぼうと思うのなら金無しでは何もやっていけないのがセカンドライフだ。現実世界と同じように商売する自由はあるし、現実世界と同じように何かするには金がかかる。これらの点については日本では特に知られていない気がする。

Homeではさすがにグラフィックには力を入れていると見えて、アバターの外見は格段に良くなっている。日本人には合わないのではないかという話も聞くが、自分が見た限りではグラフィックはかなり良い。少なくともセカンドライフよりは優れていると思う。また、コミュニティの強化を狙ったものだけあって、PS3のゲームスコアでトロフィーが貰えたり、それをHome内にある自分の家に飾り、Home内の友人を招待して見せたりすることもできる。ほかに、ビリヤードやボーリングなどを複数の友人たちと一緒にプレイしたりもできるようだ。自分としてはゲームの楽しさとグラフィックは別物だと考えているが、見た目がプレイする人々に対して求心力を持っていることは否めない。

どちらにしろ、プレイする人々が居つきさえすればそれは成功である。セカンドライフは既にサービスインしていて、多くのプレイヤーを獲得したと謳っているが、日本ではセカンドライフを知っている人のうち、実際にプレイしている人は1%に満たないとの報告もある。PS3のHomeは今秋からサービスされるとのことだが、どのように動くのか興味深い。

追伸: splumeとmeet-meは見なかったことにする。正直コンセプトがはっきりしない。和製セカンドライフのつもりなら普通にセカンドライフを選びたい。

セカンドライフ トレイラー


PS3 Home トレイラー

続きを読む...

2007年7月5日木曜日

SciPyの使い方: 行列演算

このブログ記事をはてなブックマークに追加

PythonのモジュールであるSciPyを使った行列演算を示す。scipy.linalgではBLASやLAPACKを利用しているので、高速な演算が可能になっている。

>>> from scipy import * >>> a = [[1, 3, 5], [2, 5, 1], [2, 3, 8]] # リスト >>> A = mat(a) # リスト→行列 >>> A.tolist() # 行列→リスト [[1, 3, 5], [2, 5, 1], [2, 3, 8]] >>> A # 行列 matrix([[1, 3, 5], [2, 5, 1], [2, 3, 8]])

>>> A.I # 逆行列 matrix([[-1.48, 0.36, 0.88], [ 0.56, 0.08, -0.36], [ 0.16, -0.12, 0.04]]) >>> A.H # エルミート行列 matrix([[1, 2, 2], [3, 5, 3], [5, 1, 8]]) >>> A.T # 転置行列 matrix([[1, 2, 2], [3, 5, 3], [5, 1, 8]]) >>> A.A # 行列→配列 array([[1, 3, 5], [2, 5, 1], [2, 3, 8]]) >>> A.A1 # 行列→1次元配列 array([1, 3, 5, 2, 5, 1, 2, 3, 8]) >>> A[1] # 2番目の行を取り出す matrix([[2, 5, 1]]) >>> A.T[1] # 2番目の列を取り出す matrix([[3, 5, 3]]) >>> A.conj() # 共役行列 matrix([[1, 3, 5], [2, 5, 1], [2, 3, 8]]) >>> A.diagonal() # 対角化 matrix([[1, 5, 8]]) >>> linalg.det(A) # 行列式 -25.000000000000004 >>> linalg.eig(A) # 固有値と固有ベクトル (array([ 10.5540456 +0.j, -0.5873064 +0.j, 4.03326081+0.j]), array([[-0.51686204, -0.94195144, 0.11527992], [-0.32845853, 0.31778071, -0.81936883], [-0.79054957, 0.10836468, 0.56155611]])) >>> linalg.norm(A) # 正規化 11.916375287812984 >>> linalg.lu(A) # LU分解 (array([[ 0., 1., 0.], [ 0., 0., 1.], [ 1., 0., 0.]]), array([[ 1. , 0. , 0. ], [ 1. , 1. , 0. ], [ 0.5 , -0.25, 1. ]]), array([[ 2. , 5. , 1. ], [ 0. , -2. , 7. ], [ 0. , 0. , 6.25]])) >>> linalg.qr(A) # QR分解 (array([[-0.33333333, -0.52297636, -0.78446454], [-0.66666667, -0.45760432, 0.58834841], [-0.66666667, 0.7190925 , -0.19611614]]), array([[-3. , -6.33333333, -7.66666667], [ 0. , -1.69967317, 2.68025385], [ 0. , 0. , -4.90290338]])) # 四則演算 >>> A + A matrix([[ 2, 6, 10], [ 4, 10, 2], [ 4, 6, 16]]) >>> A - A matrix([[0, 0, 0], [0, 0, 0], [0, 0, 0]]) >>> A * A matrix([[17, 33, 48], [14, 34, 23], [24, 45, 77]]) >>> A / A matrix([[1, 1, 1], [1, 1, 1], [1, 1, 1]]) >>> A * A.I matrix([[ 1.00000000e+00, 0.00000000e+00, 8.32667268e-17], [ -1.66533454e-16, 1.00000000e+00, 1.94289029e-16], [ -4.44089210e-16, 1.11022302e-16, 1.00000000e+00]])

続きを読む...

虚数のテトレーション

このブログ記事をはてなブックマークに追加

虚数iの「ii乗」乗はテトレーション(tetration)として以下のように表すことができる。

3i = iii

で次のような計算を行ってみた。

i = 0.438282936727…+0.360592471871…i

実数部と虚数部は収束してそれぞれ0.43828…と0.36059…となる。

これって何か意味がある数なのか?

続きを読む...

オイラーの等式を実際に計算してみる

このブログ記事をはてなブックマークに追加

eiπ + 1 = 0 をPythonで実際に計算してみる。証明などはWikipediaあたりでどうぞ。

>>> from math import * >>> exp(1)**(1j*pi)+1 1.2246063538223773e-016j

という訳で、1.22×10-16i という極小の虚数が出てきたが、これは計算誤差ということでオイラーの等式は正しく計算されることがわかった。

ついでにGoogleでも計算してみた。

続きを読む...

人類の至宝 - オイラーの等式

このブログ記事をはてなブックマークに追加

eiπ + 1 = 0

自然対数の底と虚数単位と円周率と1と0だけが入ったこの式が、ほとんどどんなものよりも美しく見えるのは自分だけではないはず。凄いなぁ。

続きを読む...

2007年7月4日水曜日

iGoogleのテーマを「スイートドリーム」にして午前3時14分になると…

このブログ記事をはてなブックマークに追加

iGoogleはテーマを選ぶことでサイトの見た目を変えることができる。自分は時刻によって背景や明るさの変わる「スイートドリーム」が気に入っている。

ところで先ほど気がついたのだが、午前3時14分になると、夜空に円周率πの文字が浮かび上がることを発見した。こういうちょっとした洒落は嬉しくなるね。

続きを読む...

C++の規格書

このブログ記事をはてなブックマークに追加

CD2とはSecond Committee Draft(修正された2度目の委員会での草案)のこと。
ftp://ftp.research.att.com/dist/c++std/WP/CD2/
ここからPDFファイルを取ってこられる。無料だけど、草案なので実際の規格と違うことが多々あり。

FDISとはFinal Draft International Standard(国際標準の最終草案)のこと。ISO/IEC FDIS 14882:1998
http://www.kuzbass.ru/docs/isocpp/
ここでHTML文書を読める。無料で、しかも最終草案だけあってISとあまり違いはない。

ISとはInternational Standard(国際標準)のこと。ISO/IEC 14882:2003 (古いバージョン ISO/IEC 14882:1998)
http://www.plumhall.com/
この辺で買う。もっとも信頼できるけど有料(PDFファイルで$30)。

JTC1/SC22/WG21 - The C++ Standards Committee
http://www.open-std.org/jtc1/sc22/wg21/
http://www.open-std.org/jtc1/sc22/wg21/docs/projects
ISで見つかった間違いなどの修正リストがある。ISと合わせてここを読めば完璧。

因みに、JIS規格のC++はこちら。
JIS X 3014:2003
基本的にISの翻訳かな。17,325円はちょっと高いなぁ。

C++ 11のIS - INCITS/ISO/IEC 14882-2012
INCITS/ISO/IEC 14882-2012 ($30)

C++ 11(0x)の草案 - N3337 - 2012-01-16
Working Draft, Standard for Programming Language C++ (PDF)
JTC1/SC22/WG21 - Papers 2012
C++の最新の標準規格。2011年に制定され、C++0xからC++11となった。規格を読むだけであれば草案で十分だと思われる。制定された年は2011年だが、0xは16進数なので先頭が0で問題ないとのこと。

続きを読む...

2007年7月3日火曜日

マスコミと中立性

このブログ記事をはてなブックマークに追加

「一部報道に関するマイクロソフトの見解」から。

「コンピュータソフトの政府調達において、原則として、マイクロソフト製品(Microsoft(R) Office Word、Microsoft(R) Office Excel(R))を新規購入しない」という報道が一部の報道機関であったそうだ。その報道機関というのはNHKらしいのだが。

この手の話はよくある事だ。マスメディアは偏った報道をする。一部の人間の考えの反映でしかない。

以前asahi.comで、読売ジャイアンツの元オーナーを大変な剣幕で扱き下ろす記事をトップが掲載された。こんなこと書いて平気なのかと思ったが、ほんの数分で記事は消されていた。クラックされたのでなければ、似たようなことが数度あったことからも、元オーナーに大して不満を持っている編集者が内部にいたのだろう。程度の差こそあれ、マスメディアではいつだって同じことが繰り返されている。

マスコミが中立になることは無理だとしても、偏りすぎる報道は避けるべき。もしくは始めから「我社では○○な立場を取っています」、「右派・左派」、「アンチ○○」等々、宣言するとかね。

続きを読む...

Xbox360の故障率は33%らしい

このブログ記事をはてなブックマークに追加

前々から故障率が高いといわれていたXbox360。GIGAZINEで知ったのだけど、ここに来て衝撃の記事が。

DailyTech - Retailers Estimate Xbox 360 Failure Rate High as 33 Percent (販売小売店ではXbox360は33%という高い故障率であると見積もっている)

販売小売店で調べた結果、Xbox 360の故障率は30~33%にも達しているらしい。PS3を含むほかのゲーム機は1%にも満たないとのことなのに。ちゃんとした商品ならそれが普通だと思うけどね。そう言えば、しばらく前にある夫婦が買った7台ものXbox360が1年半で全部壊れたとかいう話を聞いたな。

人には必ず間違いはある、故障はあって当たり前…という精神を持つアメリカ製品でもこれは酷いよなぁ。

続きを読む...

連続した静止画を動画にする方法

このブログ記事をはてなブックマークに追加

mplayerに付属しているmencoderを使う。MPlayer - Downloadからダウンロードできる。Windowsでも、Unixでも利用できる。Windowsではコマンドプロンプト上で使う。詳しくはマニュアルを参照のこと。

連続した複数のPNG画像をフレームレート30でAVI動画ファイル(output.avi)に変換する。

mencoder "mf://*.png" -mf fps=30 -o output.avi -ovc lavc -lavcopts vcodec=msmpeg4v2

ついでに、ImageMagickを利用した画像フォーマットの変換についても載せておく。

mencoderはBMP画像を取り扱えないので、BMP画像を動画にしたい場合は予め変換しておく必要がある。ImageMagickについては、Googleあたりで検索すれば詳しいインストールや扱い方が見つかると思う。

PostScript画像(input.ps)をGIF画像(output.gif)に変換する。

convert input.ps output.gif

複数あるBMP画像を同じ名前でPNG画像にする。拡張子だけが変わる。

mogrify -format png *.bmp

続きを読む...

2007年7月2日月曜日

The Python Challengeのヒント

このブログ記事をはてなブックマークに追加

The Python Challengeのヒント集。とは言っても、自分が使ったプログラムで利用したモジュールを列挙しただけだけど。模範解答のプログラムではないので、不要なモジュールもあるかも。あと、こちらが解いたlevel 22までの問題のみ。

一部、標準以外のモジュールも含まれる。特に、PIL(Image)は必須っぽい。ほかは多分いらないと思う。

自力で解きたい人は、これ以降は読まないように。

level 0 : なし level 1 : string level 2 : string level 3 : re level 4 : urllib, re level 5 : pickle, urllib level 6 : os, re, zipfile level 7 : Image, urllib, StringIO level 8 : bz2 level 9 : Image, ImageDraw level 10: re level 11: Image, ImageDraw, urllib, StringIO level 12: os, Image, ImageFile level 13: xmlrpclib level 14: Image, ImageDraw, urllib, StringIO level 15: calendar level 16: Image, urllib, StringIO level 17: re, urllib, ClientCookie, bz2 level 18: urllib, difflib, Image level 19: email, urllib, wave level 20: urllib2, re, sys level 21: zlib, bz2, sys level 22: sys, os, Image, urllib, StringIO

続きを読む...

2007年7月1日日曜日

FizzBuzz問題

このブログ記事をはてなブックマークに追加

「どうしてプログラマに・・・プログラムが書けないのか?」に、

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

という問題が載っていて、一時期話題になった。この記事によると自称上級プログラマが10-15分ほどもかかったそうだ。かなりひどいと思う。まあ、自称だから仕方がないか。

かなり前の話になるが、知り合いがある有名大学の情報系にいた。そこでは、学部の4年になってもまともなプログラムどころかコンピュータさえろくに扱えない学生ばかりだったそうだ。

因みに、こちらはPythonで書いて1分ぐらいだった。大抵のプログラマならば、やり方は一瞬で理解できるだろうから、あとはコーディング速度の問題になる気がする。なので、タイプ量が少ないコンピュータ言語のほうが有利かもしれない。ただ、プログラムの技巧に凝ろうとすると時間がかかるかも。

続きを読む...

The Python Challenge

このブログ記事をはてなブックマークに追加

The Python Challengeをしばらく前にやってみた。これは、Pythonを利用してウェブの画面をヒントに謎を解く。最初は何のことかぜんぜんわからなかったりもするが、いろいろと推理していくうちにこうすれば良いかもとピンとくる。下手なアドベンチャーゲームよりもよほど面白い。かなりやり応えのある難問が揃っているのでぜひ挑戦してみてはどうだろうか。問題をこなしていくうちにPythonの理解力も格段に上がると思う。

現在のところ全部でlevel 33までの問題があり、こちらはlevel 23の問題まで行った。さすがにこの辺になってくると解くのに時間がかかる。

最初のlevel 0の問題については以下にヒントを書いておく。どうしてもわからない場合にだけ見て欲しい。

238と画面に出てるが、これを計算するだけである。あとはURLで示されている"0.html"を"計算の答え.html"に変更すれば良い。

続きを読む...