タグ

ブックマーク / www.kmonos.net (19)

  • 最初の乱数 - d.y.d.

    23:09 09/05/28 BOOK OFF ここのところ、BOOK OFF の タメシ買いセット というのを大量に試し買いしてみてました。各セット2つずつ計90冊。 「どう見てもただの在庫整理だろ」というような意見もあるかと思うのですが、 個人的には、これ、すごい面白そうだなーと思ったので。 何かの拍子に「自分が読んだことない作品を読んでみよう!」と思っても、 自分で探してみて買うのだと、どうしても、 どこか自分が好きそうな方向に偏ってセンサーが反応してしまうんですよね、結局。 逆にこういう完全に強制他人のチョイスの下でやってくるなら、 そういうこともなく意外な作品に出会えるのではないか、とか。 あと、アマゾン完全ランダム買いとかと違って、 蔵出しに回されるくらい世の中に出回っている程度には売れているのが来るはずで、 気の大外れが大集合ということにもならないだろう、と。 というわけ

    Nagise
    Nagise 2017/05/12
    Randomの最初の値が偏る話の解説
  • [KMP77] を読んでみた - d.y.d.

    17:53 14/12/22 ソートの逆流れ クイックソートってあるじゃないですか、クイックソート。 配列、たとえば [4,2,1,7,0,6,5,3] があったときに、 小さい方を左に、大きい方を右にまず適当に集める。 この「小さい方」と「大きい方」への二分割を、いわゆる再帰的に、 分かれたブロック両方で同じ事を繰り返していくと… なんと、小さい順に並んだ配列 [0,1,2,3,4,5,6,7] が出来上がるというアルゴリズムです。 逆向き! このデータの流れを「逆向きに」見てみたい。つまり、ソートが終わった最終状態から話が始まります。 しかも、さっきから説明なしで意味ありげにくっついていた、 「入力配列で元々どの位置にあったか」を表す値に注目していきます。 0の上に[4]がくっついているのは、最初は値0は配列のインデックス[4]の位置にあった、 ということを意味しています。(上のソート

    [KMP77] を読んでみた - d.y.d.
    Nagise
    Nagise 2014/12/24
    クイックソートとマージソートにこんな関係があったとは…!
  • 正規表現しちへんげ! 第二夜

    09:25 10/12/31 年末まとめ 今年何やったっけ、と日記を読み返していました。何もやってないな…。 Polemy 作りました、くらい。 言語処理系作るのはやっぱり楽しいですね。 汎用言語として使う格的なものを作ろうとすると懲りすぎて一歩も進まなくなってしまう自分が見えるので、 来年は、そうだなあ、TopCoder/ICPC風コンテストに特化した言語というかC++へのトランスレータ、 くらいに絞って作ってみようかなあ。 書いた記事だと 最短性チェックの話 が自分では割と気に入っています。 これのもっとバグを許容するバージョン作れないか。 読んだ論文で面白かったのは "A Pearl on SAT Solving in Prolog" と "When Simulation Meets Antichains" (PDF) など。 あとは、今年読んで面白かったベスト5(順不同): 『

  • ICFPC 2011 - d.y.d.

    22:15 11/06/27 ICFPC 2011 ここ 8 年くらいほぼ毎年参加していた ICFP Programming Contest ですが、今年は出題者側に回ってみました。 問題の原型決定の議論、画像に変なネタを仕込む、Windows版バイナリのビルドをする、対戦サーバの中身を突貫でどうにかする、 などなどをしていました。 ゲームのバランス調整が非常によくできていたとの評価を頂いているのですが、 肝心のその辺りは、出題チーム内の熟練者達の高度な議論に既についていけなくなっており、 私は全然貢献できていないという…。 詳しいことは 9 月の ICFP で発表があると思いますので、ここでは今年のテーマの紹介だけ。 公式の問題文はこちら です。 一言でいうと、関数を呪文に変えて撃ち合う、プログラミング魔法バトル。 Lambda: the Gathering L:tG という2人対戦ゲー

  • 階乗を求める - d.y.d.

    22:56 10/09/04 階乗を求める 去年聞いた中で、私が一番感動した式の話。 k! = limn→∞ nk / nCk kの階乗は、「nのk乗 ÷ n個のものからk個選ぶ組み合わせの数」という式で n を無限に大きくしていったときの収束先、である。 特に難しい証明が要るとかではなくて、nCk = n(n-1)(n-2)...(n-k+1) / k! であることを使うと、 limn→∞ nk / nCk = limn→∞ nk k! / n(n-1)(n-2)...(n-k+1) で、n が k に比べて十分大きければ n も n-k+1 もほとんど同じ値なので、 分子も分母もだいたい n を k 個かけているわけでして、 その部分が相殺して、k! が残るという寸法。 (厳密な表現ではないので、気になる人は厳密に証明してください。) 実装 と、この式自体はそんなに不思議ではないのです

  • d.y.d. 2倍だけじゃない

    10:01 10/07/20 それでも2倍だ 先日のvectorの伸長度合いの記事に関して 当に1.5倍のほうがメモリ効率がよいのか という反応をいただきました。とても興味深い。みんな読みましょう。 自分の理解メモ: 「再利用ができるから嬉しい」等の議論をするなら、 今までに確保したメモリ (1 + r^1 + ... + r^k) のうち、 有効に使えてるメモリ r^{k-1} (バッファ拡大直後) や r^k (次のバッファ拡大直前) の割合で評価してみようじゃないかという。 まず簡単のために再利用をしない場合を考えると、この割合はそれぞれ (r-1)/r^2、 (r-1)/r になります(途中計算略)。 この利用率が最悪になる瞬間 (r-1)/r^2 を最善にしよう、 という一つの指標で考えてみると、式を微分なりなんなりしてみると r = 2 で最大(25%)となることがわかります

    Nagise
    Nagise 2010/07/06
    黄金比以下だと開放した空間が再利用できる可能性がある、とな
  • 関数と正規表現と私 - d.y.d.

    00:46 10/04/23 EDBT/ICDT 2010 先月 EDBT/ICDT 2010 という学会に行ってきたのですが、それについて何も書いてなかったので今頃書きます。 自分より一ヶ月後に同じローザンヌに行って噴火に巻き込まれて帰国まで延びてしまっているみずしまさんがお帰りになるよりは早く書かないと的気分がなきにしもあらずです。 データベースの会議なんですが、 こちらの分野は SIGMOD/PODS の流れで、 実装寄りの会議と理論よりの会議を合わせて共同開催するブームらしい。 参加者としては、色んな幅広いトークが聴けるのは単純に楽しいので、もっと広まると面白そうだなあと感じました。 プログラミング言語で言うと PLDI/POPL とするみたいなものでしょうか。 それが良いかどうか判断できるほどPLDIの方の雰囲気を知らないのでわかりませんが。 オートマトン方面だと CIAA/DL

  • d.y.d.

    20:19 10/03/06 PPL 2010 参加記 第12回プログラミングおよびプログラミング言語ワークショップ に行ってました。 お茶大のshift/reset推進委員会に対抗できる勢いでtree transducer勢が活躍していて素晴らしいことです。 それはともかく、面白かった発表をいくつかメモ。 『極性をもたないセッション型システム』。 セッション型(…とは何かはご人のブログの解説をどうぞ)の既存の型システムは、チャンネルの自由な受け渡しを禁止した制約のあるものか、 極性という概念を入れてややこしくしたものか、どちらかだったそうなのだけど、そういう制限を無くせました! という結果だそうな。個人的に面白いなーと思ったのは、型システムの健全性 (=「型チェック通ったプログラムは実行時型エラーを起こさない」)の証明のために、 よくある type preservation (式eに型

    Nagise
    Nagise 2010/03/08
    第12回プログラミングおよびプログラミング言語ワークショップ
  • 1+1=2 を証明(C++で) - d.y.d.

    01:29 09/10/28 七不思議HA 七不思議ハードオオイカリパッチ深遠100F到達しました。 やった! (→ リプレイファイル) サブ剣に 日刀[封必-脱封守]+17。盾は深層で[潰][爆][祓]を順次追い出して左のスクリーンショットが最終形。 [冷]も消してよかったな。保存の壺フィーバーが来たのでなんとかクリアできた感じでした。 普通の引きだと70F前後で大抵力尽きる。 普通にバランスのとれてるノーマル版に、 ・シレンで言うところのカンガルー3種を投入し ・主人公LVアップ時のHPと攻撃力の上昇量を減らし ・床落ちアイテム数を減らし敵のドロップ率も減らし、 たらどうなるでしょうかというパッチ。このゲーム4倍速まで上がるのでオオイカリ状態がより一層ヤバい。 代わりに幾つかの印の効果が強化されてて、レアアイテム出現率がやや上がっているので、 その辺りを鍵に頑張ることになります。 ト

    Nagise
    Nagise 2009/10/22
    プログラム言語で1+1=2を証明。型システムを利用してコンパイル出来ることをもって証明とする?
  • d.y.d.

    19:34 09/09/19 ※Multi Exit 「C言語の関数呼び出しで引数は何個も渡せるのに返値は1個しかないのはどうしたことだどうせスタックに置く個数が変わるだけなのに」問題に関連する話に 「リターンアドレスが1個しかないのはどうしたことだ」問題があります。 どうにかしてみましょう。 String|NotFound get( Map<Int,String> map, Int key ) { if( lowlevel_primitive_map_has_key(map, key) ) return lowlevel_primitive_unsafe_map_get(map, key); // 1個目のリターンアドレスに返る return new NotFound("Error: the key \""+key+"\" not found"); // 2個目のリターンアドレスに返る

    Nagise
    Nagise 2009/09/24
    引数の場合も発生するけど、型の代入互換性の関係で表現が曖昧になるときがあるんだよなぁ。
  • d.y.d. - セキュリティ&プログラミングキャンプ

    17:05 09/08/31 FLTV FLTV で、 『レトリカルプログラミング』(副題: 真・自然言語プログラミング)と題して発表してきました: 発表スライド。 未来の言語…と言われて、いつもしているような言語機能妄想をバラバラと語ればよいのかなー と思って途中まで発表ネタを組んでたのですが、 やっぱり一スジが通ってる方が面白いだろうということで、一つ軸を通しました。 テーマは「日語や英語をプログラミング言語と見なしてみると、 実はヤツらはとてもパワフルで凄いので未来の言語は是非パクるべき」。 スライドでは私の思う具体例を3つほど挙げてるんですが、 まあそれはあくまで例でして、伝えたかったのは 「ちょっとみなさん自然言語からプログラミング的な『機能』を探すという考え方をしてみると面白いかもですよ?」 という軸そのものの方です。きっとあの3つの他にも色々あるはず。 ネタ元は、 今年の

  • 型レベルプログラミングの会 - d.y.d.

    15:08 09/04/28 Mergesort 「集合」を明示的に値とするアプローチ [1] [2] だと、「同順の要素の並びはどちらでもいい」ソートアルゴリズムは、 全ての可能なソート順の集合を返すことになると思います。 -- msort_one xs = one_of (msort xs) msort [] = {[]} msort xs = let (ys,zs) = split xs in {merge xs' ys' | xs'∈msort xs, ys'∈msort ys} where merge ys [] = {ys} merge [] zs = {zs} merge (y::ys) (z::zs) = if y<z then {y::ws | ws ∈ merge ys (z::zs)} else if z<y then {z::ws | ws ∈ merge (y::

  • 思考実験: returnを関数と思ってみる話 - d.y.d.

    21:07 09/03/26 zipWithN twitterでいけがみさんが張ってらした論文が面白かったです。 map f [a1, a2, ..., an] ==> [f a1, ..., f an] zipWith f [a1, ..., an] [b1, ..., bn] ==> [f a1 b1, ..., f an bn] zipWith3 f [a1, ..., an] [b1, ..., bn] [c1, ..., cn] ==> [f a1 b1 c1, ..., f an bn cn] ... zipWith7 f [a1, ..., an] [b1, ..., bn] ... [g1, ..., gn] ==> [f a1 b1 … g1, ..., f an bn … gn] Haskell98 の標準ライブラリの関数ですけど、 1引数関数 f と1つのリスト as

    Nagise
    Nagise 2009/03/08
    読んでいて壮絶に噴いた。
  • アルゴリズムコンテストの挑み方 (3) - d.y.d.

    17:19 08/11/27 TopCoder Code Jam の練習に……と思ってしばらく前から TopCoder のSRMに参加してたのですが、 せっかくなので cafelier@SRM に記録をつけることにしました。 どういう試行錯誤をしながら提出した時のコードにいたったのかを、 できるだけ詳細にメモろうと思っています。 426以前のは記憶から掘り起こして書いたのでちょい大ざっぱですが。 これまで何回かここで書いたような整然とした考え方を当に自分がしているかいうと、 してないよなー、と薄々思ってしまっているので、じゃあどういう風にやっているんだろうかと。 自分のふり見て我がふり直す。 20:26 08/11/24 論文 PLAN-X 2009 通ったみたいです。ばんざい。 ただでさえD論まったく間に合う気がしないのに、camera ready版なんて作ってる時間が… オートマト

    Nagise
    Nagise 2008/11/10
    面白い。これは応用が効くなぁ。ダイクストラ法のような道具を知っていることも大事だけど、設問を見たときにそうした汎用的な手法に乗せ換えるソコができるかどうかが分かれ目だよね。
  • アルゴリズムコンテストの挑み方 (2) - d.y.d.

    21:25 08/10/27 論文 の締め切り終わったら頑張った自分へのご褒美(笑)であれとこれとそれをやる時間をとるぞー! ……みたいなことを思っていたはずなのに、いざ提出し終わると気が抜けて何一つやる気がでない問題。 困った困った。 ナイチル たくさん人がいらしてる今のうちに 「ナイトメア☆チルドレン」新装版 面白いよみんな買おうぜ! などと書いてみる。 自分のマンガの趣味はわりと平凡だと思ってて、 流行ってるマンガは大抵好きだし自分の好きなのはだいたい流行ってるし。 なのになぜだか藤野もやむ作品だけは唯一の例外で、とっても不思議でならない。 100回くらいアニメ化されてて然るべきだと思う。 何回か書いてますがとにかく最終話が好きで、 そこまでのシナリオが一気に集まって一つ一つのセリフが3倍の重みを持つように収斂していく幕引き。 あれは良い。 17:12 08/10/24 アルゴリズム

    Nagise
    Nagise 2008/10/27
    動的計画法のアルゴリズムを考えるの巻
  • イヌネコ - d.y.d.

    03:14 08/08/31 LLFuture 行ってきました。まとめ記事は何百人も書いてそうなので、以下、これにかこつけて自分語りをする。 ☆ Larry Wall の基調講演。ひたすら Parser の話をしてて素晴らしかった。 ☆ 100年の言語…は、 Ypsilon の藤田さんが、エラーメッセージのわかりやすさについて考えてますか?という問いかけを されてたのが印象に残っています。個人的に この頃 から気になってるんですけども、 言語内DSL のようなものを作ること&そのDSLが正常動作するときに 裏でホスト言語で何が起きているかをまったく気にしなくていいようにすることは簡単でも、 そのDSLがそのDSLのシンタックスや静的セマンティクスとして間違っているときに適切なエラーを 出せるようにするのは非常に面倒、という感覚があります。ホスト言語の意味でのエラーを 出されてもユーザ側とし

    Nagise
    Nagise 2008/08/20
    nullに情報を持たせるとしたら、エラー情報をもつオブジェクトでreturn値をラップするのと変わらない気がする。それよりはtry-catchのような専用構文で制御する方がスマートに思うがどうか
  • Home - プログラミング言語 D (日本語訳)

    #!/usr/bin/rdmd // Computes average line length for standard input. import std.stdio; void main() { ulong lines = 0; double sumLength = 0; foreach (line; stdin.byLine()) { ++lines; sumLength += line.length; } writeln("Average line length: ", lines ? sumLength / lines : 0); } Standard input Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tristique rutrum sem, nec convallis enim bibe

  • d.y.d.Я9Я∽

    10:14 08/04/29 いろいろ 来月末 東京メトロ沿線ウォーキング のために、じゃなかった、友人結婚式があるらしいので、ちょっと一瞬日に戻ります。 いやまあ、メトロウォーキングには行きますが。 りふぁらにれす アニメ、というのが通説らしいですが個人的にはゲーム。 プログラミングと俺(続き) 前回 書き忘れた。中学校の"技術"の授業で LOGO でタートルグラフィックスとかもやりました。 使ってた処理系でどこまでできたのかは全く知らないのですが、まあひたすらお絵描きしてました。 つまりメガデモ製作です(違。いろんな図形を描くときそれに伴って動くタートルをいかに作品内に取り込むか など真剣に考えたりしてました。LOGO っていう言語についてはもう、「てじゅんは」っていうキーワードしか 覚えてないですね。タートルグラフィックスって、適当なコードを適当にパラメタ変えて色々走らせると す

  • d.y.d.構文解析の話をしよう

    16:46 08/03/30 YZ1.DLL 0.30 リリース しました。 具体的には、ヘッダの格納ファイル数フィールドに実際より大きい値が入ってると変なとこ読もうとして落ちるバグ修正。 GreenPad の修正は来週くらいには…。 Booooooost Boost 1.35.0 来てました。 Asio と Fusion と GIL の三枚看板がでかいですが、Bimap が地味に便利だ。 あと、mbさんのEgg のレビューが明日からでしょうか。(また スケジュール から消えてますが…Protoが入る前までロールバックしてる?) 他人事ながらドキドキ。 17:36 08/03/28 ケース 十年来の疑問なんですが、"case" に単独で対応する日語ってなんになるんですかね。 "case-insensitive" や "lowercase" の "case"。単に "case-insens

    Nagise
    Nagise 2008/03/05
    これは参考になる
  • 1