タグ

algorithmとprogrammingに関するraimon49のブックマーク (74)

  • まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro

    第0回 あらためてRuby入門 まつもとゆきひろ氏自身による「Ruby入門」をお届けします。日経Linuxの連載開始前の特別企画(2005年4月号)として,Rubyが他のスクリプト言語やオブジェクト指向言語とどこが違うのか,なぜ便利なのかを中心に解説してもらったものです。 ● 基と他言語との違い ● 実装とRuby誕生の秘密 第1回 プログラミングとオブジェクト指向の関係 プログラマを目指す人々の中にも,「オブジェクト指向は難しい」とか,「なかなか分からない」という印象を持つ方が多いようです。そこで,Rubyを題材にオブジェクト指向という考え方について説明していきます。 ● その1 ● その2 ● その3 第2回 抽象データと継承 オブジェクト指向プログラミングを構成する3原則のうち,前回は「ポリモーフィズム」を学びました。今回はオブジェクト指向の歴史を復習した後,残りの「データ抽象」と

    まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro
    raimon49
    raimon49 2009/11/09
    Rubyと幾つかの言語(C, C++, Lisp, Java)の比較を交えながらプログラミング言語の変遷を解説。
  • 重なる気持ち -台形補正- | _level0 - KAYAC Front Engineer Blog

    どもはじめまして、タローです。 flashとの出会いから早1年、flash好きが昂じてそのまま入社して2月目に入ろうとしている、2009新卒の新入社員です。 先輩のやっているコンテンツで計算のお手伝いをしたことがあったので、今回は座標変換のお話について少ししようと思います。四角形と四角形がぴったり重なりあいたいという気持ちをどう説明するか、ということで「アフィン変換」と「射影変換」のお話をします。図やサンプルもつけてみましたので是非ご覧下さい。 アフィン変換って? 詳しくは、livedocsのMatrixのところにある図のような変換が出来て、任意の平行四辺形から任意の平行四辺形への変換が可能です。つまり、平行な直線が平行な直線に移るような変換です。

    重なる気持ち -台形補正- | _level0 - KAYAC Front Engineer Blog
  • Algorithms with Python

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    raimon49
    raimon49 2009/04/28
    Algorithms with Python
  • アルゴリズムコンテストの挑み方 - d.y.d.

    17:29 08/09/30 クロスワード 暇つぶしに "Clueless Crossword" という冊子を買ってみて意外とハマっています。 クロスワードパズルなんだけど、単語のヒントの代わりに、 各マスに1~26の数字が振ってあって同じ数字のマスには同じA~Zが入るように埋めるというもの。 「母音っぽくて二連続して語尾にも出てくるのは多分 E だろう、もしかしたら O の可能性はなくもないけど」 みたいに埋めていく。 ちょっと違うけど フラッシュであった。 20:15 08/09/28 だいちのよろい そろそろ日に戻る前に観光するぞ月間、ということにして、ウルル(エアーズロック)に行ってきました。 もっとワイルドな感じかと思ったら、完全にリゾートのリゾートによるリゾートのための地帯になってました。 まあそんなもんか。 日は強風のため登るの禁止とのことだったので、周りから見るだけ。

    raimon49
    raimon49 2009/03/07
    計算量の概算
  • 2007-10-13 - 技術日記@kiwanami JavaScriptで b-tree

    導入 ある日突然、JavaScript上で高速に追加・削除が行えて爆速で最小値を検索できる入れ物が欲しくなった。 普通(JavaとかFORTRANとか)ならここで素直に b-tree の実装に入るのだけども、JavaScriptは例によって変態言語なので、実は面倒なことせずにArrayに普通に入れて、素直にソートとか線形探索したほうが速いのかもしれないという疑問を持った。 しかも「最近全然技術日記してない」という突込みが入り、ついカッとなってベンチマークをとってみた。*1 調べ方 以下の3つの入れ物を実装。適当な実装を探してみたが、あまりいいものが無かったので車輪の再実装。 BTree 素直にb-treeを実装。速度よりは読み書きしやすさ優先。スペック通りなら、追加・削除、値の探索が高速。 SortedList 配列を常にソートしておいてb-searchで値探索、spliceで追加・削除。

    2007-10-13 - 技術日記@kiwanami JavaScriptで b-tree
    raimon49
    raimon49 2009/02/12
    コレクションの実装3パターンと、IEのコストの考察。
  • 計算量を具体的に見てみる 2009-01-06 - きしだのはてな

    アルゴリズムの話では、計算量の解析がかかせません。 計算量はオーダー記法で表されますが、これは、データの入力量に対してどのくらい時間がかかるかをあらわしたものです。 こういった話はどのアルゴリズムのにも載ってるはずですが、具体的にどのようなプログラムを書くとそのオーダーになるかという記述はあまりありません。 ということで、やってみました。 計算時間表示のための共通処理を行うクラスは、一番最後に書いてます。 O(1) 計算時間がO(1)のアルゴリズムは、処理が入力の量によらない場合です。 配列の要素のアクセスや、ハッシュテーブルによるデータ検索、連結リストへの追加削除などがこれにあたります。 コードには入力量でのループが含まれません。 public class O1 extends ViewCompFrame{ @Override void compute(int n) { proc();

    計算量を具体的に見てみる 2009-01-06 - きしだのはてな
    raimon49
    raimon49 2009/02/05
    オーダーの可視化。これは分かり易い。
  • アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法 : 404 Blog Not Found

    2009年01月31日01:00 カテゴリLightweight LanguagesMath アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法 これなのですが.... 同じ文字列のn回繰り返しを作る最速の方法を探求してみた - muddy brown thang ちょっとした事情により、ある文字列のn回繰り返しを作る関数 (PHPでいうところのarray_repeat(), Perlで言うところの「"..." x n」、RubyPythonで言うところの「"..." * n」) を高速に実装しなければならない状況に遭遇したのでベンチマークをとってみたところ、その結果がとても新鮮で驚いたので、これを共有しつつもダメ出ししてもらえないかなーと思って晒してみることに。 なぜかもっとシンプルな奴がなかったので。 以下、比較。初期値はIEにあわせてあります。Firefox/Saf

    アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法 : 404 Blog Not Found
  • 気まぐれな戯れ言の部屋 バックナンバー9

    各辺の内側判定による内外判定 前回の所で、外積を用いて直線の左側・右側を判定する手法を紹介しました。 これを利用して点の内外判定を行います。 例えば、下のような例を考えるとわかりやすいかと思います。 左の三角形の辺を、AB、BC、CAと右回りになるように辺を見ていきます。 三角形の中の点Pは、各辺の常に右側にあることがわかります。 点QはBC、CAの右側になってはいますが、ABの左側にあります。 逆にAC、CB、BAと左向きに回ったときは点Pは常に左側にあります。 要は、「辺をぐるっと回った時、常に点が同じ側にある→多角形の内側にある」と言うことが出来ます。 左の図の例では、点Pは右回りに辺を回った時常に右側にあります。 右回りに回った時に常に左側にある、と言う事はありえません。 上の図を見て、右回りに回った時常に左側に来るという領域は存在しない事がわかります。 そのため、実際は辺を左回り

    raimon49
    raimon49 2009/01/27
    内外判定の図解
  • やっぱ、仕事でJavaやる人はEffective Javaは読んでおくべきだと思うよ。 - sawatの日記

    めずらしく仕事の話なのですが、なんか年明けから他部署に出稼ぎに行かされています。で、その仕事の内容というのが「別の誰かがつくった膨大なJavaソースにJavadocを書き込む」という訳の分からないことをやらされています。しかも、そのJavadocというのが普通のクラスやメソッドの外部仕様について書くのではなくて、完全な内部仕様でほとんどソースの和訳みたいなのを書かなきゃいけないという・・・。年頭からいったいどうやってやる気を奮い立たせればいいのか分からなくなってきます。まったく。 まあ、とにかくソースを読んでがんばってJavadocを書いてるわけなのですが、人のコードを見るとどうもアラに目がいってしまいエントリのタイトルの通りに思うわけですよ。ハラに溜めておくのは精神衛生上よくないと思うので、気づいたのをここに列挙してみます。 列挙する nullでないことが確定されている変数をnullチェ

    やっぱ、仕事でJavaやる人はEffective Javaは読んでおくべきだと思うよ。 - sawatの日記
    raimon49
    raimon49 2009/01/26
    >当たり前だが、ソートのオーダーはO(n*logn)だから線形検索のO(n)より重い。 / ちゃんとコストを見積もれという話と、null恐怖症の話。
  • [鈴木宏正]講議>計算機援用設計

    計算機援用設計(精密機械工学科4年生:2001年閉講) 2次元と3次元グラフィックスの基礎 CYGWINでOpenGLプログラミング OpenGLサンプルプログラム 1999年度 講義OHP 3次元グラフィックスの基礎 [PDF 0.5MB] グラフィックスプログラミング [PDF 3.3MB] 入力と対話処理 [PDF 1.5MB] 幾何オブジェクトと変換 [PDF 4.0MB] cube.c プログラムリスト[PDF 0.01MB] 投影 [PDF 4.0MB] 実装 [PDF 1.7MB] シェーディング [PDF 1.7MB] sphere.c プログラムリスト [PDF 0.02MB] 大域的シェーディング [PDF 2.3MB] OpenGL の詳しい教科書 2001年度課題

    raimon49
    raimon49 2009/01/14
    基本図形, 座標投影, クリッピング, シェーディング。資料はPDF形式。
  • きまぐれ日記: 動的配列への追加コストはなぜ O(1)?

    動的配列への追加コストは O(1) ってのは覚えていればそれだけの話ですが,どうしてかと言われると意外と難しいものです. というのも, このO(1)ってのは動的配列の実装方法に強く依存しているからです.実装を知っていないと答えられません. 一般論として,1つ要素を追加するとき,配列に空きがなかったら新しく配列を作り直して全要素をコピーする必要があります.コピーのコストは O(n) だから,追加コストも O(n) になるという議論が混乱の元になっています. こういうときは,要素追加を n 回繰り返したときの計算量を n で割った平均をとるという解析方法が使われるそうです.一般に, ある operation C の計算量を C を n 回行ったときの計算量 O(n) を n で割った値 O(n)/n で評価する手法をならし解析 (amortized analysis)と言うそうです. さて,s

  • コーディングに役立つ! アルゴリズムの基本 - @IT

    連載ではアルゴリズムとデータ構造を学ぶ、または学び直すことで、プログラミングのスキルを深めていきます。アルゴリズムは学問として取り扱われることが多いですが、この連載では開発の現場に役立つスキルを身に付けることを目的とします。 機械学習/Deep Learningが気になる人も要注目、「アルゴリズム」の基が学べる無料の電子書籍150ページ 人気連載まとめ読み! @IT eBook(29) 人気過去連載を電子書籍化して無料ダウンロード提供する@IT eBookシリーズ。第29弾では「コーディングに役立つ!アルゴリズムの基」10回分を1冊のPDFとしてまとめた。アルゴリズムとは何か? なぜ学ぶべきなのだろうか?

    raimon49
    raimon49 2008/12/24
    2009-01-05 題5回まで。LinkedListの実装, 再帰の計算結果キャッシュの効果測定など。
  • アルゴリズムの紹介

    ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 こんなことやって意味あるのかどうか正直言って迷いました。プログラマはたいてい知っているような内容だし見る人もいないんじゃないかと思いましたが、これからプログラミングを始めてみようという方にとっては参考になるかもしれないし、何よりも自分にとって頭の中を整理できたりするので、これから定期的にやっていこうかと考えてます。 ところで、紹介する内容はほとんど過去に出版された書物関係から抜粋しています。一応下の方に参考文献として挙げておきますので興味を持たれた方は書店などで探してみてはいかがでしょうか? ということで、まずはライン・ルーチン(画面に直線を描画する)についての紹介です。

    raimon49
    raimon49 2008/08/08
    演算、描画、暗号化。線分のクリッピング, スキャン・コンバージョン, 多角クリッピングなど。
  • イケてないプログラム(使えない成果物)に見られる3つの共通点

    クイックソートの話で書いたとおり、相変わらず Excel - VBA と格闘する日々が続いております・・・orz 「大企業にありがちな問題。委託開発の甘い罠・・・」でも書いたとおり、今まで外注して作ったソフトウェアってほぼ 100% の確率でイケていないものが完成してます。年末に納品されたソフトウェアのできも酷いの何のって・・・ さて、いままで見てきたイケてないプログラムのダメソースに共通して言えることが3点ありまして、 DRY ( Don’t Repeat Yourself ) でない。同じもしくは似たソースのコピペが至る所に散在する。 ロジックに無駄が多すぎ。行き当たりばったりで作った感、満点。 アルゴリズム知らなさすぎ。馬鹿ループ処理で時間かかりすぎ。 のいずれか、もしくは全部が当てはまります。大抵は全部ですね。こういったソースが納品されると、センス無いなぁ〜と思っちゃうわけ。こうい