2007-01-01から1年間の記事一覧

動的const宣言

こんなの作ったら def const(x) x.freeze end const char *a = "hoge"; ぽい感じで irb(main):004:0> const a = "hoge" => "hoge" irb(main):005:0> a[1] = "a" TypeError: can't modify frozen stringこういう風に書けるなぁ、と思った。 irb(main):006:0> …

ついカッとなって

ゴルフ. SRM380 Div1 Easy. struct LameKnight{ int maxCells(int h,int w){return h<3?++w/2?w-2;} }; 加減乗除と三項演算子がそれぞれ一個ずつ 1,2,3,4,4,4,5,6,7,... という数列を作る: (w ? (w-2)

畳み込み関数の比較 (fold / accumulate / inject / reduce)

つーか、fold の弱点として、言語によって引数の順番がまちまちで、 正直憶えきれないってのがあるんだよな。誰か対応表とか作ってくれんもんか。 jijixi's diary - fold, map, for-each この中から一つ選ぶとしたらどれ? 確かにいろいろとややこしいのでま…

メモ

状態遷移のN回繰り返しを → 行列のN乗に帰着して → O(logN)で解く てのは、とても一般的な戦略ですね。 覚えておこう。

Range#&

ここ経由で知った古い話題。 空区間をどう表現するかは議論の余地があると思うけど、 a & b & c とかやるならnilよりは放置かなぁ。 class Range def &(rhs) b = [self, rhs].max {|x,y| x.begin <=> y.begin } e = [self, rhs].min {|x,y| x.end <=> y.end …

Quine

自己出力。JavaScriptで書いてみる。JavaScriptのメタっぽい話といえば eval と toSource がまず思い浮かんだのでこいつらを使ってみることにします。前者はLispから脈々と続く由緒正しき関数なのに対して後者を実装しているのはJavaScriptぐらいしか知らな…

テンプレートの別名

C++

例えば priority_queue の最小値を返す版って個人的にはわりと使うんですけど、毎回 priority_queue, greater > とか書くの面倒いわけですね。そんなわけで、パラメータ付き typedef があったら便利だと思った。 ↓こんな風に書きたい。 template <class T> typedef pr</class>…

std::complex

C++

なんとなくまとめてみました。自分用ですが。 T = 実部と虚部の型 C = complex と思ってください。 Constructor complex(T r = 0, T i = 0); Public methods T real() const; T imag() const; foreach OP in += -= *= /= C& operator OP (const C&); C& oper…

やっぱCの方が速いのか?

試しに同じコードをsubmitしてみたら C++で0.010sec だったのが ANSI Cで 0.000sec が出たりとか。*1 入出力と引き算とXORしかしてない10行のコードですら最適化で差が出るのか? *1:試したのは2回ずつぐらいなのでたまたまなのかも

新UVaで

他人の成績が見られるようになった模様。 どの問題解いたかまでは謎。

binary search

アルゴリズムとしては基本中の基本なのですが、たまに書いてはよく混乱するのでここらでひとつ問題を作ってみました。暇な人はどうぞ。以下の(A), (B) は共にバイナリサーチの実装です。 どちらも配列内で a[0] から a[n-1] まで、n 個の要素がソートされた…

巨大素数の生成

暗号の話とかをやっていると巨大な素数がわりとよくでてきますが、いざ実装しようとしたときに、巨大な素数ってどうやって作るのが良いんでしょうか。 もちろんエラトステネスの篩で扱える範囲は軽く超えます。となれば確率的な素数判定を利用するんでしょう…

ショートコーディング本が出るそうな

この分野は異次元の別世界だと思って敬遠していたのですが、初心者向け(?)の本が出るならチャレンジしてみようかしら。

C/C++ という表記について

「C/C++」という表記について考えるちょうど今 「C/C++セキュアコーディング 」を読んでいたところなので言及してみる。「『C/C++』と表記して同時に教えることの問題点」てのは分かるのですが、C や C++ という言語そのものを教えることが主題ではない文脈…

2007 ICFP Contest

参加者の皆さん、おつかれさまでした。 製作者サイドの並々ならぬ情熱に感激を通りこして笑えてきます。 作った人はどんな頭の構造してるんでしょうか。才能の無駄遣いも程々にしとけw それから上位陣に占める日本人(と思われる)の割合が高すぎ。皆さん強す…

等値と等価とunique

C++

等値(equality) a == b 等価(equivalence) !(a 任意の要素に対してこれらの結果が一致する場合、単にsetに入れていけばユニークな集合ができあがるが、異なる場合は std::unique を使う。ただし、std::unique を使うには、等値である可能性があるものは必ず…

模様替え

はてダにあまり使いたいデザインが無いので、 自分でCSSを弄ってみる。←レポート類からの現実逃避 そして飽きる。微妙な出来だが気にしない。Firebug最高。 あとなんか長いなーと思ったのでタイトルゴルフ。

Fibonacci数 の一般項

一般項が、Fibonacci数を求めるプログラムにどの程度使えるか検証してみる。 無理数絡みなので、どのあたりで誤差が出るのかが興味の対象。 #include <iostream> #include <cmath> using namespace std; const double R5 = sqrt(5.0); //typedef int num_t; typedef long long</cmath></iostream>…

数学が在る

僕たちに翼はない。 しかし僕たちには言葉がある。 数学ガールがとても面白い。感謝と称してブログに言及リンク集を貼るのはうまいマーケティングの手法だなこんちくしょうという感じです。こういうの見ると、つい(買い|書き)たくなっちゃうじゃないか。とり…

std::priority_queue

C++

よく嵌るのでメモ。 大きなものから出てくる 比較関数の実装法は頭に入れておく コンパイラのエラーメッセージに期待しない priority_queue<Hoge> pq; のように使うHogeクラス では、デフォルトでは比較に std::less<Hoge> が使われるので operator< の実装が必要。 clas</hoge></hoge>…

Waterloo Spring Contest 2007

UVa

問題E (UVaの11243)は、LayCurse氏が言った通り、 全ての点の回転を、0〜π/2 の範囲で正方形の面積が最小になるようにternary search したらあっさり通ってしまった。local minimumに陥りそうだよねー、という話だったけど、どんな点集合をもってきても、極…

ブラウザ依存

スタイルシートのルールの追加・削除が firefox だと insertRule() / deleteRule() IE だと addRule() / removeRule() で、小一時間嵌った。

ACM/ICPC 2007 国内予選プレイバック

http://this.tk/icpc/2007dv/ 当日の順位変動の様子を可視化してみました。 自分達の反省と他チームの分析にお役立てください。 特定のチームを追っ掛けて、状況と心境を想像するのも楽しい。任意の時間へのジャンプと再生スピードの調整、チームの色分けが…

min/max更新

C++

更新する対象の名前が長くなる場合、x=min(x,y); や if(x>y){x=y;} と書くのは都合が悪い。 foo[i].bar().baz = min(foo[i].bar().baz, hoge); まずタイピングが面倒。 さらに、ここで foo が map 等の場合、両辺で1回ずつ O(log(n)) のアクセスが発生するし…

ICPC国内予選 お疲れ様でした。

とても、とても残念な結果。本番に弱いな、うちは。 3人ともそれぞれに躓いてしまい、結果、時間勝負に敗れる。 誰か一人でも変なところで躓かなければ余裕を持って4問解けていたように思う。 自分はともかく、いつも抜群の安定感を見せていた2人が崩れたの…

非カリー化

どう書く?org - ピラミッドを作る 初めて uncurry が欲しくなる場面に会った。 こんな風にデータがtupleとして固着しているときには、データの方をバラすんではなく、関数の方を uncurry してしまう方がすっきりする。 pyramid :: Int -> String pyramid n …

SRM356

授業受けながらやろうと思ってノートPCを持っていく。 が、 Arena 立ち上げてもつながらない。なぜかTunnelingに失敗する。 しょうがないので、授業をほっぽり出して研究室へ。直前でFileEditとかのプラグインが入っていないことに気づき愕然とするが、セッ…

どう書く?org

最近、どう書く?org で遊んでます。評価軸が自由なのが新鮮というか、ユーザー側で決めれっていう投げっぱなしの姿勢が好きです。見てる人とかアカウント取っただけの人はかなり多いはずなのに、その割に実際にコードを上げている人はまだ少ない気がします…

暗号解読

いつの間にか文庫化していた。 読むよ読むよー。暗号解読(上) (新潮文庫)作者: サイモンシン,Simon Singh,青木薫出版社/メーカー: 新潮社発売日: 2007/06/28メディア: 文庫購入: 30人 クリック: 216回この商品を含むブログ (234件) を見る

Φ

totient function って何だろうと思ったら、Eulerのφ関数のことだった。Φ関数は公式をそのまま実装できるけど、m,n が互いに素のとき、Φ(mn) = Φ(m)Φ(n) という性質を利用して DP するのが速い。