再帰的に定義される、3個の引数 x, y, z をとる次のような関数である。 特に変わる所は無いがLisp版[1]も参照のこと。定義からわかるように処理を次々にたらい回しにしていくことから、たらいまわし関数[2]、たらい関数 (Tarai function) とも呼ばれる(後述のマッカーシー版との混同を避けるためこの名で呼ばれることのほうが多いが、こちらの定義のほうがオリジナルである。マッカーシー版を特にTak関数として区別する場合もある)。電電公社研究員(当時)の竹内郁雄が、1974年の夏前の頃、後述するような特性のある関数をあれこれ考えていた、ある日の午前に思いついたものである[3]。竹内関数と命名したのは野崎昭弘である[4]。 特性として、よくベンチマークに使われる関数であるフィボナッチ数を何の工夫もなく計算するいわゆるダム(dumb)フィボナッチと比較して、大きな数の計算が必要ない
Git に同梱されている contrib/diff-highlight を使います。 あとは README に書いてあることの引き写しですが、PATH の通ったディレクトリに置いて、~/.gitconfig に以下のように設定を書く。 [pager] log = diff-highlight | less show = diff-highlight | less diff = diff-highlight | less すると、対応するコマンドの出力がこんな風になります。 行レベルの diff に加えて、単語レベルでの diff もハイライトされ、GitHub での diff のように描画されました。 組み込みのオプションで --color-words というのがありますが、こちらを使うと行レベルの diff 情報が失われるので、少し不便だったわけですね。とすべて README に書いてあ
このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日本のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2023年10月時点の調査。
lightline.vimというVimプラグインを作りました。statuslineをなんかかっこよくしてくれるやつです。 https://github.com/itchyny/lightline.vim からインストールできます。 デフォルト (powerlineと同じ配色) wombat solarized landscape どうしてこれを作ったのかということを話すには、vim-powerlineとの出会いまで遡らなくてはなりません。 vim-powerlineとの出会い vim-powerlineとの出会いは約一年前になります。それ以前から気になってはいましたが、フォントにパッチを当てるのが面倒でためらっていました。しかし、重い腰を上げてインストールしてみました。 vim-powerlineがすごい - プログラムモグモグ インストールしてすぐ感じたことは、配色が気に入らないことでし
Go言語でEitherモナドは無理がありすぎる感じがした。では、他の言語ではどうだろうか? C言語では関数の戻り値でエラーかどうかを判定しなければならないことが多いけど、&&演算子の短絡評価を使えば、このように簡潔に書くことも可能だ。 #include <errno.h> #include <error.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char** argv) { FILE *fp; char s[100]; int ok = (fp = fopen("hello.txt", "r"), fp != NULL) && (fscanf(fp, "%99s", s) >= 0) && (fclose(fp) >= 0) && (printf("%s\n", s) >= 0); if (!ok) { err
JavaScriptで型推論付き静的型付け言語のインタプリタを作成しました。これは、サイボウズ・ラボユースのメンバーとして開発をさせていただいたものです。ライセンスは MIT License です。 Ibis Interpreter GitHub 型推論の実装方法を解説するため、メジャーであり気軽に試せるJavaScriptを使って型推論器を書きました。 文法の簡単な説明は Ibis クイックチュートリアル 実装の詳細については JavaScript による型推論器の実装 をご覧ください。
山手Quineのid:ku-ma-meさんに敬意を表しつつ. Quineって何なの Quineとは実行すると自身のソースコードを出力するプログラムのこと. クワイン (プログラミング) - Wikipedia うどんげQuine ソースコードがうどんげのAAになっているQuineコードを作ってみた.Gistはこちら. udonge_quine.rb eval$s =%w' b= " BAhsKwG vfg A AAAAA PAAA AIw AA AAA gD8AAAA4 AQA AA Ph 4AAAAcAMAA ICDf wA A AOAGAADA8D8 AAAD wB g AAQPwfAAAA eAY AA E D/AwAAA DgGA AB A fwAAAAA 8DAAA QH 8 AAA AAf BgAABB 3A AAA A PhhAAC OfgAAA A D wgwCA4G 8A
(この記事にはProcessing.jsによるスケッチがいくつか組み込まれています。環境によっては正しく再生されないかもしれません。Chrome, Safari, Firefox等の使用をおすすめします。) 「丸が1秒おきに左右に滑らか動く」というプログラムを書いてみよう。いちばん簡単なのは、線形移動を使う方法だ。 まあ、これでも十分っちゃ十分なんだけれど、動きとしてはちょっと味気ない。 いわゆるイーズアウト(ease out)を使えば、これを滑らかにすることができる。 上のスケッチでは、漸化式を使ったイーズアウトを実装している。こんな感じの式だ。 pos += (target - pos) * 0.1; pos は現在座標、 target は目標の座標。この式を1回の描画毎に評価する。目標座標までの差分を1割づつ詰めていくような感じ。差分は毎回少なくなっていくから、最初は早く、徐々に遅く
レーベンシュタイン距離(レーベンシュタインきょり、英: Levenshtein distance)は、二つの文字列がどの程度異なっているかを示す距離の一種である。編集距離(へんしゅうきょり、英: edit distance)とも呼ばれる。具体的には、1文字の挿入・削除・置換によって、一方の文字列をもう一方の文字列に変形するのに必要な手順の最小回数として定義される[1]。名称は、1965年にこれを考案したロシアの学者ウラジーミル・レーベンシュタイン (露: Влади́мир Левенште́йн) にちなむ。 レーベンシュタイン距離は、同じ文字数の単語に対する置換編集に使われているハミング距離の一般化であると見なすことが可能である。レーベンシュタイン距離の更なる一般化として、例えば一回の操作で二文字を変換する等の方法が考えられる。 実際的な距離の求め方を例示すれば、「kitten」を「s
クラスカル法(クラスカルほう、英: Kruskal's algorithm)は、グラフ理論において重み付き連結グラフの最小全域木を求める最適化問題のアルゴリズムである。 このアルゴリズムは、1956年にジョゼフ・クラスカル(英語版)が Proceedings of the American Mathematical Society で発表した (pp. 48–50)。 クラスカル法は貪欲法の一種で、最小全域木を求める他のアルゴリズムとしては、プリム法、逆削除法、ブルーフカ法などがある。最小全域木とは、グラフの全ての頂点を含む木で、辺の重みの総和が最小のものを言う。連結されていないグラフでは、「最小全域森」(それぞれの連結部分の最小全域木の集合)を求められる。 クラスカル法の手順は次の通り。 グラフの各頂点がそれぞれの木に属するように、森(木の集合) F を生成する(つまり頂点1個だけからな
#include "Cello.h" int main(int argc, char** argv) { /* Stack objects are created using "$" */ var i0 = $(Int, 5); var i1 = $(Int, 3); var i2 = $(Int, 4); /* Heap objects are created using "new" */ var items = new(Array, Int, i0, i1, i2); /* Collections can be looped over */ foreach (item in items) { print("Object %$ is of type %$\n", item, type_of(item)); } /* Heap objects destructed via Garbage
vimshellとはVimプラグインのひとつであり、Vim上でその名の通りshellを使えるようにするプラグインである。 作者はneocomplcacheでも有名なVimmerのShougoさんであり、その他にもとても優秀なプラグインを開発されております。 今回はvimshellを使うことにより、何が素晴しいのかを焦点にあてて説明したいと思います。 vimshellを使用するために 当然プラグインをインストールする必要があります。 ここでは細かい説明は省くとするのでインストールは各自で調べてみてください。 vimshell また、vimshellの動作にはvimprocが必須です。こちらも合わせて導入してください。 vimproc vimshellと連携するプラグイン vimshellはそれ単体でも非常に有用ですが、今回はそれだけではなくneocomplcacheとunite.vimもイン
2010年02月03日21:31 Ruby Rubyで "&" を使うと幸せになれるらしいよ (*´Д`)ノ なんか似たようなタイトルを見たことあるな…まぁいいか。 Perlで+を使うと幸せになれるよ (*´Д`)ノ - (゚∀゚)o彡 sasata299's blog ブロック処理 ( do...end もしくは {...} ) の例としてはこのような3種類があります。 #1 ブロックの中に直接処理を書く方法 #2 ブロックの中でやらせたい処理の Proc オブジェクトを呼び出す方法 #3 ブロックを使わずに Proc オブジェクトに & を付けて渡してあげる方法 3つとも全く同じ処理です。#3 みたいに書く事も出来るんですね〜。& が Proc オブジェクトをブロックに変換してくれます。 #1 3.times do puts 'hogehoge' end proc = Proc.new
いつも同じことをググって繰り返しているのでメモ 全体的な設定 [General]-[Workspace] で Text file encoding Other: UTF-8 に変更 OS XなのにデフォルトがShift-JISになっているので... [General]-[Editors]-[Text Editors] で以下にチェック Insert spaces for tabs タブの代わりにスペースを使う Show print margin ソースコードがあんまり横に長くならないように厳密に収める必要はないと思うけど目安として Show line numbers 行番号を表示する [General]-[Compare/Patch]で「Ignore white space」にチェック Diffの時に空白を無視するように ところが、上記でタブの代わりにスペースを使う設定にしても全然スペース
JavaScriptなどのスクリプト言語は動作が遅く、最適なパフォーマンスを得るにはC/C++で実装しなければならないという常識に挑んだ先進的な講演が話題になっています。この話題の発端は2012年10月7日から10月8日までベルリンで開催されたJSConf.euでFelix Geisendörfer氏が行った講演です。 彼の講演の題材はnode.jsからMySQLに接続する為のバインディングのパフォーマンスに着目しています。2010年当時、node.jsにはMySQLのバインディングが存在しておらず、増井さん作のnode-mysqlモジュールが開発中の状態でした。このモジュールはJavaScriptでバイナリを解析しておりJavaScriptのみで開発されていました。この状況を受けてFelix氏が新たにnode-mysqlモジュールを新規に開発を始めました。このモジュールもJavaScri
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く