fink の carbon emacs

fink で emacs22-carbon が入るので入れてみた。が、バックスラッシュが入力できず、\になってしまう。X の emacs ならば .Xmodmap に適当に書けば良かったあれです。tex で文書を書くときに特に困ります。 .emacs

(if (eq window-system 'mac)
    (progn
      (mac-input-method-mode t)
      (mac-translate-from-yen-to-backslash)))

などと書けば良いだけだった。
(/sw/fink/10.4/unstable/main/finkinfo/editors/emacs22-carbon.info より)

何か目的があるわけではないけど、最近の GUI プログラミング事情を勉強してみたいなと思い立つ。良く覚えてないけど8年くらい前に MFC + Visual C++ で組んだのが最後かなぁ。IDE は普段使っていないのでとりあえず Eclipse, NetBeans, Visual C++ Express Edition などをダウンロードしてみる。色々と思いだし&推論しつつ使ってみる(ドキュメント読めよ!)。

  • Eclipse は最新の 3.3 だと GUI ビルダが(商用のもの以外は)ない...?
  • Visual C++ は当然 Windows でしか使えないよね...
  • NetBeans 良さそうだけど Swing のパフォーマンスって SWT とかと比べて実際のところどうなの?

とりあえず NetBeans + Swing でなんか組んでみようかな。あとは Objective C + GNUstep (?) とかにもちょっと惹かれるけど、微妙?

Last digit その4

短くしようともう少し頑張ったけど、230B近辺あたりで限界を感じた。このアルゴリズムだともう削りようが無いよ〜と思いつつも、ステータス画面には id:Ozy さんや id:odz さんの驚異的に短い結果が...。これは何か気づいていない別のアルゴリズムがあるに違いないと思っていたけど、id:Ozy:20080115#p1 さんの解を見るとどうやらアルゴリズムとしては最後の正・負の利用の仕方も含めて一緒の模様。

今までこういう短いコードは読めなかったのだけど、自分でコードしてみて見えなかった物が見えてきた感じで勉強になった。今回挑戦してみてナルホド、と思ったこと

カンマ演算子重要
重要ですね
for文重要
文をfor文内に持ってくることで、セミコロンを節約できたり
なぜG++でなくGCCなのか
最初はcinやcout使えるからC++の方が短くなるのではないかと思ったのだが、どうやら #include がいらない、関数の返り値・変数宣言において型を指定しないでよい、などが大きいようだ。
main(a)とは?
変数aを宣言して1(コマンドライン引数の数)で初期化している。

う〜ん、奥が深い...

Last digit

odzさんのエントリを読んで知ったサイト問題が面白かったので忙しいはずなのについ考えてしまった。

n choose m の least significant non-zero digit を見つける問題。素因数分解すると大変そうということだったので、パスカルの三角形とか色々考えてみたけど挫折。最終的には次のような感じ:まず、掛け算と割り算をする数の集合から素因数2と5だけに注目して取り出してしまう。そうすると残った値同士の掛け算や割り算は必ず1の位が0にならず、かつ計算を行ったときに次の値が何であるかが1の位同士から一意に決まる(割り切れることがわかっていることと、2と5が無いので掛け算だけでなく割り算も一意に決まるのがポイント)。それができたら、あとは最初に取り出した2と5(10を作りたくないのでの差分だけを)さらに掛けていき、1の位を求めればよいことになる。

Short Coding はやったことないのでよく分かってないがとりあえず短さ優先でやってみて 380B。割り算の結果の表を中で持ってるので頑張ればもう少し短くできる...?