タグ

programmingに関するpipeheadのブックマーク (1,627)

  • [初心者向け] プログラムの計算量を求める方法 - Qiita

    はじめに この記事では、プログラムの計算量を求める方法を説明します。プログラミングの初心者向けに、厳密さよりも分かりやすさを優先して説明していきます。 サンプルコードについて この記事のサンプルコードは、C言語(C99)で記述しています。 計算量とは? 計算量とは、 「そのプログラムがどれくらい速いかを大雑把に表す指標」 です。 もう少し正確に言うと、 「入力サイズの増加に対して、実行時間がどれくらいの割合で増加するかを表す指標」 です。 グラフによる計算量の表現 計算量をグラフで表すと、以下のようになります。 これは、**「入力サイズ $n$ が増加するにつれて、実行時間が $n$ に比例して増加する」**ということを表しています。 別のグラフも見てみましょう。 これは、**「入力サイズ $n$ が増加するにつれて、実行時間が $n^2$ に比例して増加する」**ということを表しています

    [初心者向け] プログラムの計算量を求める方法 - Qiita
    pipehead
    pipehead 2015/07/31
    O 記法, 時間計算量, 空間計算量
  • 再帰呼び出しをループに置き換える - 空想犬猫記

    半年に一度くらい、古いコードで使っている再帰呼び出しが原因でスタックオーバーフローになるという不具合が発見され、その都度ループで書き直す修正を入れている。再帰呼び出しをループに展開する方法は、「幅優先探索」や「深さ優先探索」というキーワードで探すと見つけることができる。そのエッセンスだけメモしておく。 再帰呼び出しのうち、トップダウンで処理していくものについては、キューを使うと比較的簡単に展開できる。たとえば struct Node { Node* left; Node* right; : };という構造体があって、 void ProcessNode(Node* node) { : : (do something) : if (node->left) ProcessNode(node->left); if (node->right) ProcessNode(node->right); }の

    再帰呼び出しをループに置き換える - 空想犬猫記
  • 増補版:気軽に試してみよう!今こそ Lisp 入門 - Lisp の調べ

    1. 関数型プログラミングでもっと言いたかったこと (1) λ計算 λ計算は関数型プログラミングでは基中の「キ」ですが、文は初心者向けということでカットしていますが、ここでは少し説明します。 λ計算(λ-calculus)はα変換とβ-簡約、η-変換の規則があります。 α-変換は束縛変数の名前を変える変換で、β-変換(簡約)は関数適用です。 η-変換はすべての引数で同じ値を返す関数は等価である(関数の外延性)とするものです。 α-変換の例はλx.fx → λy.fy であり、β-変換の例は(λx.fx)3 → f3であり、η-変換の例は λx.fx → f(但しxはfで自由でないとき)です。 Lisp 風に書くのであれば、(lambda (x) (f x))→(lambda (y) (f y))、((lambda (x) (f x)) 3)→(f 3)、(lambda (x) (f x

  • RemoteStance.com is for sale | HugeDomains

    Acquiring OakvilleMaids.com through HugeDomains was a good experience. We’ve operated our business on OakvilleMaids.ca for years, but securing the .com version was important to eliminate any customer confusion and strengthen our brand credibility. HugeDomains made the entire process easy! It was fast, clear, and hassle-free. We highly recommend them to any business looking to upgrade or protect th

    RemoteStance.com is for sale | HugeDomains
  • window.onloadとjQueryの$(document).ready等の比較

    Comparison of window.onload and jQuery's $(document).ready B! 39 0 0 0 JavaScriptでページを読み込み後に何かを行いたいときは window.onload = function()を使ったり、jQueryを使っていれば $(document).ready(function())を使ったりしますが、 これらはちょっと違うものです。 特にjQuery無しで$(document).ready(function)的な事をするのが ちょっと面倒ですがその辺について。 window.onload $(document).ready jQuery無しで$(document).readyな呼び出しをする onload時に行う物を複数登録する 実行される順序 window.onload window.onloadメソッドはonlo

    window.onloadとjQueryの$(document).ready等の比較
    pipehead
    pipehead 2015/07/11
    > window.onloadメソッドはonloadイベント発生時に実行されますが、 これはDOMツリーの構築だけでなく、画像や他の全てのデータの 読み込みが完了した時、になります。
  • http://programming-days.com/python/fraction-number/

    pipehead
    pipehead 2015/07/05
    fractions.Fraction
  • rangeとselectionを使ってtextarea・WYSIWYG用iframe等のテキスト・HTMLを取得・置換する方法まとめ [無料ホームページ作成 まめわざ]

    Javscriptの開発において、1つ大きな障害となるのはクロスブラウザです。その中でも、rangeやselection関連のクロスブラウザ対策には辟易します。 毎度検索エンジンで調べている気がしたので、今回はこれらをまとめてみようと思います。 jQueryの利用を前提としていますが、限定的な利用なので、例えば$("textarea")[0]はdocument.getElementsByTagName("textarea").item(0)などで置き換えらえます。DOM要素を指定している個所は、利用シーンに合わせて変換してご利用ください。

    rangeとselectionを使ってtextarea・WYSIWYG用iframe等のテキスト・HTMLを取得・置換する方法まとめ [無料ホームページ作成 まめわざ]
  • Lisperはプログラムに何を見るか - 八発白中

    男子校に通う中学生の僕らにとって「家庭科」の授業は休憩時間のようなものだった。 僕の中学校には家庭科室というものがない。だから、いつもの教室で野菜の種類やそれに含まれる栄養素なんかを教わるというだけの、正直退屈な授業だった。話される内容はどれもただ暗記すればいいものなので、授業を聴かなくても定期試験前に教科書を読み通すだけで九〇点は取れる教科だった。 学校としても文科省の教育課程に沿うがためだけに時間割にねじ込んでいるに過ぎなかったと思う。特別教室がないことでも真面目にこの教科を取り扱う気がないことがわかるし、生徒の方でもその学校の態度を敏感に感じとっていた。 そんなやる気のない男子学生の前に立って話すのは教師にとって楽しいものではなかっただろう。僕らの先生は、落ち着いた雰囲気でどこかしたたかさのある、髪の長い女の先生だった。 その日も彼女はいつも通り、キノコに含まれる何々という栄養素が、

    Lisperはプログラムに何を見るか - 八発白中
    pipehead
    pipehead 2015/06/30
    > Lisp is a #1=(programmable . #1#) programming language.
  • MutationObserver - †MASAYOSHI†のオンラインメモ帳

    DOMNodeInsertedは非推奨なのでMutationObserverを使うのが正しいあり方ではあるがどうもいまいち分かりにくい。と言う訳でちょっとネタがてらまとめておこうというエントリ。情報元は例によってMozillaさん。 まずはsampleを見てみよう。 // 対象ノードを選択 var target = document.querySelector('#some-id'); // オブザーバインスタンスを作成 var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { console.log(mutation.type); }); }); // オブザーバの設定 var config = { attributes: true, childList

    MutationObserver - †MASAYOSHI†のオンラインメモ帳
  • float 等の浮動小数点数の誤差を考慮して等価比較する - ObjecTips

    よく定数を忘れるので備忘 float の誤差を考慮して等価比較するには FLT_EPSILON を使う double のための DBL_EPSILON long double のための LDBL_EPSILON も用意されている。 例えば float a が float b とイコールであるかをチェックするには a と b との差が FLT_EPSILON の値以下かどうか、つまり差の絶対値を FLT_EPSILON と比較演算する。 これが float a; float b; // 何らかの処理 if (a == b) { } こうなる ↓ float a; float b; // 何らかの処理 if (fabsf(a - b) < FLT_EPSILON) { } double の場合は ↓ double a; double b; // 何らかの処理 if (fabs(a - b) <

    float 等の浮動小数点数の誤差を考慮して等価比較する - ObjecTips
    pipehead
    pipehead 2015/06/25
    FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON
  • クロージャってどんなときに使うの? ~ 利用場面を 3つ 挙げてみる - Qiita

    結論を先にまとめると、以下の3つです。 1. グローバル変数の宣言をなるべく減らしたい場合 2. ユーザが引数を与えてカスタマイズ可能な自由度の高い「関数」を生成したい場合 3. 前回、呼び出されて実行されたときの演算結果(値)を内部で保存して、次に呼び出されたときに、前回の結果(値)に対して、さらに同じ処理(演算)を行う関数を生成したい場合 以下、「クロージャ」の定義から、頭の整理まで、分かりやすい参考ウェブサイトへのリンクを張りつつ、見ていきます。 【 定義 】クロージャ takeharuさん Qiita記事(2013/07/22)「JavaScriptでクロージャ入門」 「自分を囲むスコープにある変数を参照できる関数」 Wikipedia 「クロージャ」 引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。関数とそれを評価する環

    クロージャってどんなときに使うの? ~ 利用場面を 3つ 挙げてみる - Qiita
  • JavaScriptのカリー化について味見してみる - Qiita

    JavaScriptには、「部分適用」や「カリー化」といった考え方が存在します。 ココらへんは定義がわかりづらかったり、筆者自身も完璧に理解できているとは言いがたい部分もありますので、ざっくりと全体像でもお伝えできればと思います。 関数の適用、部分適用、カリー化の順番でお話していきます。 関数の適用とは そもそも、関数プログラミング言語においては、関数は「呼び出されるもの」というより、「適用されるもの」と捉えるほうが正確です。JavaScriptにはFunction.prototype.apply()メソッドがあります。 つまり、関数の呼び出しはapply()メソッドの糖衣構文(シンタックスシュガー)である、ということです。実際にapply()を使ってみます。 一つ目の引数には、関数の内部でthisに束縛されるオブジェクト、 二つ目の引数には、引数の配列で、関数の内部で使用したい値の配列を

    JavaScriptのカリー化について味見してみる - Qiita
    pipehead
    pipehead 2015/06/25
    関数の適用, 部分適用, カリー化
  • jquery.tmpl.jsの使い方まとめ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    jquery.tmpl.jsの使い方まとめ - Qiita
  • 基本的なソートアルゴリズムまとめ+α。C言語での実装例 - Qiita

    2016/07/18追記 CountingSortについて誤りがあったため訂正しました ソートアルゴリズム全般考察 典型的なソートアルゴリズムでは、最善で $O(n log n)$ 、最悪で $O(n^2)$ である。理想は $O(n)$ である。 比較ソートでは、必ず $O(n log n)$ の比較が必要となる。 汎用手法による分類。挿入、交換、選択、マージなどがある。 Wikipedia https://ja.wikipedia.org/wiki/ソート 授業で習った基的なソートアルゴリズムをまとめたいと思います。 実際はライブラリを使うかもしれませんが、内部を知っていて損はないので覚書です。 まとめるソートアルゴリズム バブルソート 選択ソート Counting Sort マージソート クイックソート 奇偶転置ソート バブルソート バブルソート (bubble sort) は、ソ

    基本的なソートアルゴリズムまとめ+α。C言語での実装例 - Qiita
    pipehead
    pipehead 2015/06/21
    バブルソート, 選択ソート, Counting Sort, マージソート, クイックソート, 奇偶転置ソート
  • ニュートン法とは何か??ニュートン法で解く方程式の近似解 - Qiita

    ニュートン法とは ニュートン法とは、f(x)=0になるようなxを求めるアルゴリズムの1つで、方程式の解を近似的に求めることができる方法です。 ニュートン法を用いると、√2の値やsin(x)=0.5になるようなxの値など近似的に求めることができます ニュートン法の考え方 ニュートン法では、以下の考え方に基づいて計算が行われます f(x) = 0になるような値xを探す時、ある値x1における接線の切片x2は、元の値x1より真の値xに近くなる この考え方は下の図のように、f(x)という関数においてf(x) = 0になるようなxを求めたいとき、ある値x1における接線f'(x)の切片x2を求めると、求めたい値xに対して、x1よりもx2の方が近くなるということを意味しています 先ほど算出したx2の値を元にして同様の操作を行うと、x3は目的となる値xにより近づきます この手順を繰り返せば繰り返すほど、算出

    ニュートン法とは何か??ニュートン法で解く方程式の近似解 - Qiita
    pipehead
    pipehead 2015/06/13
    > ニュートン法とはf(x)=0となるxを求めるための手法で、繰り返し計算を行うことでxについて近似的に算出することができます。また、誤差範囲を指定することで、有効桁数が保証された値を得ることができます
  • なぜLispなのか?― “データ” と “コード” | POSTD

    たくさんの人から 私が昨日Hacker Newsに書いたコメント についてもっと詳しく説明してほしいというメッセージをいただきました。例えば以下のような質問です。 Lispは単なる表記法の1つにすぎないと私は考えますが、間違っているでしょうか? Lispのコードをデータ構造にマッチさせるのがなぜそんなに重要なことなのか理解できません。(おそらく、そのマッチさせるという行為がなぜLispを使うのかという答えになるのだとは思いますが。)私はマクロの大事な何かを見落としているでしょうか?  何か私が気付いていないことがあるでしょうか? この質問に答えるには少し長くなりそうだったので、ブログに投稿することにしました。以下が私の答えです。 手短に言えば、Lispは 単なる 表記法の1つではなく、プログラミングとは 何か という考え方を根的に覆すものなのです。プログラミングに関する主流な考え方は、「

    なぜLispなのか?― “データ” と “コード” | POSTD
  • JavaでMultiton(マルチトン)パターン | 嫁に下ネタ言うのやめたい

    pipehead
    pipehead 2015/06/12
    > Singletonで実装したけど、後から仕様変更やらなんやらで複数インスタンスにする必要がある。ええい!キーを指定して複数のインスタンスを管理出来るように変更してしまおう! ということになっていると思われる。
  • セカンドシステム症候群にまつわる3つの話―Perl 6, Python 3, PHP 6 | POSTD

    この10年間で、3つのメジャーなプログラミング言語が、それぞれPerl 6、Python 3、PHP 6へと大幅なバージョンアップに乗り出しました。ところが、Unicodeのサポート問題などの表面的な類似点があるにも関わらず、根的に異なった展開を見せています。 今年Perl 6.0.0が公式にリリースされるのに伴い、いま一度振り返って、リリース後の展開について考えてみるのに、今はちょうどいいタイミングでしょう。 これを書いていることが自分でも信じられないのですが、PHPから学ぶべきことがあるかどうか見ていきましょう。Zend TechnologiesのCEOであるAndi Gutmans氏は2008年2月の インタビュー でこう答えています。 我々はPHP 6に対し長いサイクルでのロールアウトを予想している。Perlプロジェクトに対しては、プロジェクトのコントリビューターがいまだPerl

    セカンドシステム症候群にまつわる3つの話―Perl 6, Python 3, PHP 6 | POSTD
    pipehead
    pipehead 2015/06/09
    /* http://blog.brentlaabs.com/2015/05/three-tales-of-second-system-syndrome.html の和訳 */ > print()関数を採用しprintは削除。この対処が実施された理由としては、建前上はAPIの連続性を保つためで、本音は人々をもてあそぶためと思われる
  • デザインパターン(Design Pattern)#Facade - Qiita

    設計を意識したコードが書けるようになる為に、デザインパターン修行しました。 他のDesign Patternもちょくちょく出していきます。 前置き 増補改訂版Java言語で学ぶデザインパターン入門をJavaからPythonにしてます。(Pythonは3.4.2) githubにコード置いてあります(まだ動かないものもある) デザインパターンをどういう時に、何を、どう使うのかを理解することが一先ずの目標。 (Javaというか静的型付言語は初めてで、且つpython歴もそんなに長くないので、Pythonistaぽっくないところがあると思います。ご指摘ございましたらご教授ください。) 今回は、構造に関するパターンFacadeパターン。 Facadeとは Facade(ファサード)は複雑なシステムに対するシンプルな窓口の役を果たす。つまり、大型のロジックを簡素化し、1つのシンプルな関数呼び出しにま

    デザインパターン(Design Pattern)#Facade - Qiita
  • デザインパターン(Design Pattern) #Factory Method - Qiita

    設計を意識したコードが書けるようになる為に、デザインパターン修行しました。 他のDesign Patternもちょくちょく出していきます。 前置き 増補改訂版Java言語で学ぶデザインパターン入門をJavaからPythonにしてます。(Pythonは3.4.2) githubにコード置いてあります(まだ動かないものもある) デザインパターンをどういう時に、何を、どう使うのかを理解することが一先ずの目標。 (Javaというか静的型付言語は初めてで、且つpython歴もそんなに長くないので、Pythonistaぽっくないところがあると思います。ご指摘ございましたらご教授ください。) 今回は、生成に関するパターンFactoryMethod。 FactoryMethodとは オブジェクト作成のインタフェースと、オブジェクト生成する役割りを分けて、他のクラスのコンストラクタをサブクラスで上書き可能な

    デザインパターン(Design Pattern) #Factory Method - Qiita