2019/12/24 · はじめに今回はテキストの差分検出などで使われる Wu らによる O(NP) のアルゴリズムの解説をしつつ、後半ではGoで実装していこうと思います。
2019/12/24 · はじめに今回はテキストの差分検出などで使われる Wu らによる O(NP) のアルゴリズムの解説をしつつ、後半ではGoで実装していこうと思います。
ミートソーススパゲティを作るときは、ミートソースから作るのが信条のbokkoです。それはさておき、今日はdiffのお話です。 diff diffは指定した2つのファイルの差分を求めるコマンド、もしくはその差分そのものを指します。普段から何気なく使用しているコマンドですが、その中で使われているアルゴリズムは結構難しいです。 差分を計算するということ 差分を計算するというのは以下の3つを求めることに帰結します。 ・Levenshtein Distance(Edit Distance) ・LCS(Longest Common Subsequence) ・SES(Shortest Edit Script) 上から順に1つずつ説明していきます。 Levenshtein Distance Levenshtein Distanceは2つのシーケンスの違いを数値化したもので編集距離とも言います。これは後述
id:smoking186 さんの指摘を受け, First Authorの名前などを付加しました. どうもです. 記事内のcodeは最適化などを施しておらず, 冗長に, 定義どおりに書いています. ifがまとめられたりとかしますが, そのあたりはご容赦を... Rubyでlevenshtein距離を見て以来, 個人的にdiffブームが来ていた. 計算量O(ND) / O(NP)のalgorithmなどがあるのは知っていたが, 論文(英語)および, 解説のみ, またはソースコードのみなど分かれているものが多く, algorithmに疎い自分には理解するのに大変時間がかかってしまった. しかしやっとわかったので, 解説+JS実装してみる. 解説とソースコードがセットだと, 多少はわかりやすくなるかと... 自分は正直これくらい細かく言われないとすぐにはわかんない人なので(the O(ND)だけ
公開:2015.10.22 更新:2022.08.30 プロのエンジニア9人が徹底解説!おすすめのプログラミング言語9選 プログラミングの学習を始めるにあたっての悩みが「一体どのプログラミング言語を学べばよいか」ということです。そこで今回はプロのエンジニア9名がおすすめする言語をご紹介させていただきます。 これからプログラミングを初めようと考えている方の中には「どの言語の学習を始めればいいのか」と悩んでしまう方も多いことでしょう。 実際、プログラミング言語は200種類以上あるといわれており、これから学ぶべき言語を選択する上でプログラミング初心者が悩んでしまうのは仕方のないことです。 そこで今回は、おすすめのプログラミング言語の「できること」、「特徴」、「難易度」をプロのエンジニアが解説させていただきます。 ※本記事の趣旨としては、これからプログラミングを始めようしている方が、最初に学
タイトルは釣りです。Ruby に盲目的に惚れている迂生には Ruby の痘痕(あばた)はエクボです。 それはともかく。 メソッド名の別名がありすぎ 「あなたは map 派? それとも collect 派?」っていう問いがまず嫌い。 いや,別名にも意義があるとは思うんだけど,記憶の負担が大きい。 自分では map しか使わなくても,他人のコード読むんだったら collect を知っていなくちゃならない。 しばらく前に reduce っていうメソッド見て,そんなのあったっけ?と思ったら inject の別名だった。 map/collect と inject/reduce の名前とその背景にある発想については,Rubyist Magazine に良い記事がある: そうかと思えば,Array#delete_if と Array#reject! みたいに,働きは基本的に同じだけど,削除が行われなかっ
To get the licence for your open-source project, please fill out this form
目的 説明:この文書は、「Ruby は初めてだが他の言語でのプログラミング 経験はある」という技術者向けのものである。 Ruby のすべてを説明するものではないが、プログラミング経験者 の立場から、最低限必要だと思われる情報を網羅している。 print 書式:print( aaa, bbb, ccc, ... ) 例文:print( "ruby ver", "1.8.4" ) 補足:自動改行しないので、改行したいときは "�n" を使うこと puts 書式:puts( aaa, bbb, ccc, ... ) 例文:puts( "ruby", "ver 1.8.4" ) 補足:各引数ごとに自動改行する p 書式:p aaa 説明:プログラマ向け。デバッグ時のオブジェクトの内容確認用 pp 書式:pp aaa 説明:プログラマ向け。デバッグ時のオブジェクトの内容確認用 補足:プログラムの先頭
ごきげんよう、菊太郎です。 iOS 9から導入された新機能「Wi-Fiアシスト」。 弱いWi-Fiの時は自動的にモバイル通信に切り替えてくれる便利な機能ですが、このWi-Fiアシストが原因で集団訴訟が発生しました。 余計な通信量のせいでパケット通信料が激増したのが原因とのこと。一体どうしてそのような事態になってしまったのでしょうか…? 予想以上に通信量がかかる事態に… iOS 9から登場した新機能「Wi-Fiアシスト」。 Wi-Fiの電波が弱いときは自動的に3G/4G(LTE)などのモバイル通信に切り替えて、ベストな通信環境を作ってくれるという便利な機能です。 コンビニから離れた所でiPhoneを使っているにも関わらずコンビニのフリーWi-Fiに接続し、イライラするほど速度が遅くなる…なんてことが多発していましたが、このWi-Fiアシストのおかげでそういった事態を回避できるようになりました
RubyからMacのスクリーンショットを撮るためにCocoaを使いたかったので、 "RubyからMac OS Xのスクリーンショットを撮る"を参考にしてやろうと思ったのだけど、 でつまづいた。 "Yosemite用のRubyCocoa 1.2.0インストーラを公開"を参考にRuby2.0用のRubyCocoaをインストールしたのだけど、システム標準ではなくrbenvでRuby2.1.2を入れて使っていたため、まだうまく動かない。 いろいろ調べてみたけど、"MacOSXでwkpdfを使ってみた" にも書いてあるように、rbenvでいれたRubyを使うのは良くなくて、そのプロジェクトだけシステム標準のRubyを使うのが良いっぽい。
B! 5 0 0 0 使っているAppleScriptのうちの一つがMavericksにアップデートして 使えなくなってたので調べてみたらRubyでのcocoaの呼び出しエラーが出てたのでその対処法。 Yosemiteのアップデートに関する追記 require ‘osx/cocoa’ Yosemiteのアップデートに関する追記 追記: 2014/10/19 Yosemiteのアップデートで下で書いてるRuby 1.8が完全に削除されたので 別の方法が必要です。 YosemiteからRuby1.8が削除されたのでAppleScriptでのウィンドウのサインズ変更の取り扱いを変更した 追記ここまで require ‘osx/cocoa’ AppleSCriptを使ってウィンドウサイズを変更するスクリプトを作って使ってるんですが、 その中でディスプレイの大きさを取ってくるのにruby+cocoa
編集距離(edit distance)とは二つの文字列がどの程度異なっているかを示す数値であり、レーベンシュタイン距離(Levenshtein distance)を指すことが多い。文字の挿入、削除、置換それぞれを一つの操作として必要な操作の最小数を求めるものだ。例えば、kittenとsittingの編集距離を求める場合、下記のように3回の操作でkittenをsittingに変更できるので編集距離は3となる。 1. sitten (k を s に置換) 2. sittin (e を i に置換) 3. sitting (g を挿入) そこで今回は編集距離を求める複数のアルゴリズムについてC++で実装してみた。 動的計画法 編集距離を求めるもっとも一般的なアルゴリズムは、動的計画法(dynamic programming)だろう。計算時間はO(mn)であり、手軽だ。C++で書いたコードを下に示
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes 第13回 WebSocketでサーバプッシュ その2 〜EM-WebSocket〜 (松永紘) 2014年4月 3/14にRails4.0.4がリリースされました(*1)。このアップデートは多くの機能改修やバグフィックスが含まれています。その中にはRuby2.1.1の不具合(*2)に対するフィックスも含まれていますので、該当バージョンをお使いの方はアップデートすることをお勧めいたします。 さて、前回はWebSocketの概要について書いてまいりました。今回はその続きとして、実際にWebSocketを使ってみたいと思います。 WebSocketのライブラリとしてはJavaScriptで実装されたSocket.IO(*3)が有名ですが、本コラムは一
require 'em-websocket' require 'pp' connnections = [] EM::WebSocket.start({:host => "0.0.0.0", :port => 8888}) do |ws_conn| ws_conn.onopen do connnections << ws_conn end ws_conn.onmessage do |message| pp message connnections.each{|conn| conn.send(message) } end end ※ポートを8888で起動します ※pp messageでサーバに送られてきたメッセージを標準出力します ※connnectionsに接続を格納し、connnections.eachで接続されたクライアント全てに メッセージを返すようにしています <html> <hea
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く