タグ

algorithmとprogrammingに関するtomoemonのブックマーク (23)

  • 強くなるためのプログラミング -様々なプログラミングコンテストとそのはじめ方- - ぴよぴよ.py

    みなさんは何のためにプログラミングをしていますか? 仕事のため、何かをつくるため。 それも良いけれど、「強くなる」ためにプログラミングしてみませんか。 様々なジャンルのプログラミングコンテストとまだ見ぬライバルたちがあなたを待っています。 今回はアルゴリズム/AI/機械学習/セキュリティ等の様々なジャンルのコンテストとその始め方について紹介したいと思います。 ※これはPyConJPでの発表を文字におこしたものです。が、Pythonの話は殆どないです。 プログラミングコンテストとは? すべてのコンテストに共通する、「コンテストに参加する利点」 1. 自分と同じ問題を解いた、他の人の解法を知ることができる 2. 同じコンテストに出ていた、たくさんのライバルと知り合える アルゴリズムのコンテスト 問題1 問題2 TopCoder Single Round Match CodeForces AtC

    強くなるためのプログラミング -様々なプログラミングコンテストとそのはじめ方- - ぴよぴよ.py
  • 「結城浩さんのCodeIQ問題は、なぜ面白いのか?」を7つのポイントで解説!|CodeIQ MAGAZINE

    CodeIQで結城浩さんが出題する問題はいつも大人気!なぜなら結城さんは解答者をどう楽しませるかを考えつくしているから。 今回は結城浩さんご自身に「なぜこんなに面白い問題を作れるのか」そのこだわりを7つのポイントに絞って書いていただきました。 by 馬場美由紀 (CodeIQ中の人) はじめに こんにちは、結城浩です。いつもCodeIQでの出題にご解答いただき、ありがとうございます。 今日は、CodeIQで出題しているときに私が心がけていることをお話しします。 なお、以下でお話しすることはあくまで私が出題する問題に対する心がけです。CodeIQにはたくさんの出題者さんがバリエーション豊かな出題をしています。他の問題に対して批判するという意図はまったくありませんので念のため。 最高の問題 出題するときに心がけていることの第一、それは最高の問題を作ろうということです。 せっかく時間を掛けて問題

    「結城浩さんのCodeIQ問題は、なぜ面白いのか?」を7つのポイントで解説!|CodeIQ MAGAZINE
  • システム・エンジニアの基礎知識

    静岡理工科大学情報学部コンピュータシステム学科菅沼研究室のページです.主として,プログラミング言語( HTML,C/C++, Java, JavaScript, PHP, HTML,VB,C# ),及び,システムエンジニアとしての基礎知識(数学,オペレーションズ・リサーチやシステム工学関連の手法)を扱っています.

  • Natural Order String Comparison

    by Martin Pool This project has moved to github.com/sourcefrog/natsort. Computer string sorting algorithms generally don't order strings containing numbers in the same way that a human would do. Consider: rfc1.txt rfc2086.txt rfc822.txt It would be more friendly if the program listed the files as rfc1.txt rfc822.txt rfc2086.txt Filenames sort properly if people insert leading zeros, but they don't

    tomoemon
    tomoemon 2012/06/11
    自然順ソート (rfc1.txt, rfc2086.txt, rfc822.txt) → (rfc1.txt, rfc822.txt, rfc2086.txt)
  • 簡潔データ構造(Succinct Data Structure)で最初に読むと良さそうな論文 - EchizenBlog-Zwei

    最近、簡潔データ構造(Succinct Data Structure)まわりの論文を色々読んでいる。その中で良さそうなものをいくつかピックアップしてみた。まだ調査中なので他に良いものがあったら教えてもらえると嬉しいです。 (1) Space-efficient Static Trees and Graphs(link) G. Jacobson; IEEE1989 まずはLOUDS論文。簡潔データ構造の元祖なので最初に読むと良さげ。 (2) Succinct Indexable Dictionaries with Applications to Encoding k-ary Trees and Multisets(link) R. Raman, V. Raman, and S. S. Rao; SODA2002 簡潔ビットベクトルは通常n+o(n)なんだけど、これをnH0+o(n)にしたよ、

    簡潔データ構造(Succinct Data Structure)で最初に読むと良さそうな論文 - EchizenBlog-Zwei
  • われわれは100倍、速く書けない - やねうらおブログ(移転しました)

    西川 ええと……(笑)。受注生産って、人数に比例してもうけるじゃないですか。でも、われわれは人の100倍は速く書けると思っている。じゃあ、その人に1カ月、その分を払ってくれるのかというと、受注じゃ絶対、無理でしょう。でも、ソフトウェアだと可能。 (中略) 西川 同じ「エンジニア」という職種でも、生産性は100倍くらい違いますよね。コードをその人がただ書くという部分だけじゃなくて、例えばチューニングされたコードをすぐ書けるなら、結果的にシステムが速く動く。遅いコードを書いて100台マシンを使用するとなると、いろいろな人がシステム構築にかかわらないといけない。でも同じ条件で100倍速いコードを書けば、1台のマシンで済む。運用も圧倒的に楽になる。だから、生産性はそのくらい変わってくると思います。 第5回 「われわれは100倍、速く書ける」――PFI 西川徹 http://lab.jibun.at

    われわれは100倍、速く書けない - やねうらおブログ(移転しました)
  • 10兆までの素数のリストを作ってみませんか?

    もしあなたがプログラマだったら、プログラムを書いて10兆までの素数のリストを作ってみてほしい。情報システムの開発に携わる人であれば、10兆までの素数のリストを出力するシステムの見積もりを考えてみてほしい。費用はどれくらいかかるか、納期はどれくらいか、あなたはどんな答を出すだろうか。仕様書はうまく書けるだろうか。 記者がこんなことをいうのは、自分で10兆までの素数のリストを作ってみて、とても面白かったからだ。図1のプログラムを書いて出力が成功するまで約2週間、夢いっぱいの楽しいひとときを過ごせた。予期せぬ問題も発生したけれど、最後にはコンピュータがまだまだ発展する可能性を持つと感じられた。素数のリストを作る演習は、プログラミングと情報システムにおける有益な演習の一つである。 アルゴリズムの有効性が納得できる この演習の面白い点は、まずアルゴリズムの有効性を納得できる点だ。素数(prime)は

    10兆までの素数のリストを作ってみませんか?
    tomoemon
    tomoemon 2010/05/29
    あとでやる。きっと。たぶん。
  • Algorithms with Python

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

  • ぜひ押さえておきたいコンピューターサイエンスの教科書

    僕はバイオインフォマティクスという生物と情報の融合分野で研究を行っています。東大の理学部情報科学科にいた頃は同僚のマニアックな知識に驚かされたものですが、そのような計算機専門の世界から一歩外に出ると、それが非常に希有な環境だったことに気が付きました。外の世界では、メモリとディスクの違いから、オートマトン、計算量の概念など、コンピューターサイエンスの基礎知識はあまり知られていませんでした。コンピューターサイエンスを学び始めたばかりの生物系の人と話をしているうちに、僕が学部時代に受けた教育のうち、彼らに欠けている知識についても具体的にわかるようになってきました。 バイオインフォマティクスに限らず、今後コンピュータを専門としていない人がコンピューターサイエンスについて学ぶ機会はますます多くなると思われます。そこで、これからコンピューターサイエンスを学ぼうとする人の手助けとなるように、基礎となる参

  • C言語 Super Technique 講座

    このページは、C言語の中級テクニックを中心に解説する。長らくプログラマをしていると、C言語の面白い使い方例が蓄積している。これらを一挙公開するために、このページを作ったのである。しかし、単にCに留まらず、他の言語の面白い特徴なども紹介していく。 内容的にはかなりヘヴィである。当然のことながら、「ポインタ虎の巻」程度の内容はちゃんと使いこなせることを前提とする。意外な技、落し穴、派手なテクニックなど、内容満載だが、ちゃんとデータ構造とアルゴリズムなども説明できれば良いと思う。(まあ、ぼちぼちやってきいます...) 以下の目次には手引きのために、評価がつけてある。凡例として示す。 レベル その解説で記載されている内容のレベル 有用度 その内容が実際に役に立つものかどうか 邪悪度 その内容が薦める方法が、一般的なコーディング規約の中で「邪悪」とされがちなものであるか否か。関数ポインタの活用(濫用

    tomoemon
    tomoemon 2009/04/29
    longjmpの記事が面白かった
  • Aho Corasick 法 - naoyaのはてなダイアリー

    適当な単語群を含む辞書があったとします。「京都の高倉二条に美味しいつけ麺のお店がある」*1という文章が入力として与えられたとき、この文章中に含まれる辞書中のキーワードを抽出したい、ということがあります。例えば辞書に「京都」「高倉二条」「つけ麺」「店」という単語が含まれていた場合には、これらの単語(と出現位置)が入力に対しての出力になります。 この類の処理は、任意の開始位置から部分一致する辞書中のキーワードをすべて取り出す処理、ということで「共通接頭辞検索 (Common Prefix Search)」などと呼ばれるそうです。形態素解析Wikipediaはてなキーワードのキーワードリンク処理などが代表的な応用例です。 Aho Corasick 法 任意のテキストから辞書に含まれるキーワードをすべて抽出するという処理の実現方法は色々とあります。Aho Corasick 法はその方法のひと

    Aho Corasick 法 - naoyaのはてなダイアリー
    tomoemon
    tomoemon 2009/04/21
    ACオートマトン
  • ラムダ計算とチューリングマシンの違い 2009-04-13 - きしだのはてな

    ぼくもYコンビネータがわかるようになるまではそうだったのだけど、Yコンビネータを使うとどのような処理ができるのかがよくわからなくて悩んでいる人が多いように思う。他の人のブログを見ても、名前をつけずに再帰ができるのがすばらしいとか書いてあったりするのだけど、それによってどういう処理ができるのかわからずにいた。 結論をいえばYコンビネータには、なにかの処理を便利にする能力はない。関数であらゆる計算ができるということが示せれば、あとは用なしだ。理論の礎としてうまってしまえばいい。 結局、Yコンビネータによってどのような処理ができるかというのは、ラムダ計算の要素のメリットをチューリングマシンの中に見出そうとしてるといえる。 ラムダ計算とチューリングマシンは、どちらも計算モデルという点では一致しているけど、全く違う。 無限であるか有限かの違いといってもいい。 チューリングマシンでは、データの量と処理

    ラムダ計算とチューリングマシンの違い 2009-04-13 - きしだのはてな
    tomoemon
    tomoemon 2009/04/13
    計算機科学/計算モデルっていろいろあるんだよなー。
  • Perlでアニメ顔を検出&解析するImager::AnimeFace - デー

    というのを作ったので自己紹介します。 2月頃から、コンピュータでアニメ顔を検出&解析する方法をいろいろ試しつつ作っていて、その成果のひとつとして、無理やり出力したライブラリです。 はじめに はじめにざっとライブラリの紹介を書いて、あとのほうでは詳細な処理の話を僕の考えを超交えつつグダグだと書きたいと思います。 Imager::AnimeFaceでできること Imager::AnimeFaceは、画像に含まれるアニメキャラクター的な人物の顔の位置を検出し、さらに目や口など顔を構成する部品位置や大きさの推定、肌や髪の色の抽出を簡単に行うことができるライブラリです。 これらが可能になると、 画像から自動でいい感じのサムネイルを作成できる 動画から自動でいい感じのサムネイルを作成できる 自動的にぐぬぬ画像が作れる 自動的に全員の顔を○○にできる 顔ベースのローカル画像検索 など、最新鋭のソリューシ

    Perlでアニメ顔を検出&解析するImager::AnimeFace - デー
  • Cell Challenge 2009 参加記

    DF1 - ML - Vorontsov - BigARTM Topic Modelling of Large Text Collections

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

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

  • TechCrunch | Startup and Technology News

    Limited space! Get on waitlist to be the first to know when tickets go live!

    TechCrunch | Startup and Technology News
    tomoemon
    tomoemon 2009/02/02
    LEGO/やっぱり「実際にものが動く」ってのが楽しいよね
  • アルゴリズムの紹介

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

    tomoemon
    tomoemon 2009/01/29
    画像処理,数値演算
  • セルオートマトンを用いたシューティングゲーム - Tosikの雑記

    セルオートマトン(以下 CA)を用いた自作シューティングゲーム(パニックシュータ)を公開します。 プレイ動画 YouTubeに動画をアップロードしました。横長になっちゃいました。 動作環境 Windows2000,WindowsXP。CPU使用率が高いので注意。 ダウンロード・実行 Panic Shooter(パニックシュータ) ダウンロードしたZIPファイルを解凍し、pshooter.exeを実行してください。 遊び方 やってみればわかる、を目指したので説明なしで遊べると思いますが、下は簡単なルールと操作法です。 緑色の自機をカーソルキーとスペースキーで操作します。青色の箱に入ったらステージクリアです。黄色いドットにぶつかるとライフが減ります。ライフが0になったら残念。全部で10ステージクリアできるかな? あれこれ 高校のころライフゲームなどのCAにはまってから、いつかゲームにしたいと考

    セルオートマトンを用いたシューティングゲーム - Tosikの雑記
  • situs informasi perjudian online

    situs informasi perjudian online informasi perjudian online yang memberikan rifrensi atau wawasan dalam bermain The term 여성알바 구인구직 shiftwork applies to any timetable that falls beyond the long periods of 7:00 a.m. to 6:00 p.m. As per the U.S. Department of Work Measurements, around 16% of salaried and blue collar laborers are on a shift plan. While certain representatives like pulling all nighters

  • 第8回 倉庫番を解くアルゴリズム - 地球にやさしいアルゴリズム:ITpro

    「倉庫番」*1というゲームをご存じでしょうか。図1のように盤面にはいくつかの「荷物」とそれを運ぶ「人」がいます。人は1個の荷物を押して運ぶことができます。荷物を引っ張ったり,二つ並んだ荷物を同時に押して運ぶことはできません。人と荷物は縦横4方向に動けますが,壁のある位置には進めません。人を使って盤面上の荷物を動かし,すべての荷物を目的地(ゴール)に収めることができればゲーム・クリアとなります。図1の問題を解くための手順を示すアルゴリズムを作ってください。 友人たちと車でスキーに行くとき,いつも困るのは「トランクへ荷物を詰め込む順番」です。大きなスキーやかさばるスキーウエアを詰め込んでいるうえ,人によってはゲーム機やを持ってきたりするので,各自の荷物の量がまったく違うのです。狭い車のトランクには,これら荷物をうまい順番で入れていかないとなかなか全部収まりません。寒い冬の夜中にごそごそと詰

    第8回 倉庫番を解くアルゴリズム - 地球にやさしいアルゴリズム:ITpro