タグ

ブックマーク / blog.unfindable.net (7)

  • スパコンで約2時間36分かかったという、5×5の魔方陣の全解列挙を、パソコンで試す(C ) | 配電盤

    魔方陣の解の列挙は並列化しやすそうな問題ですが、ここでの方針では、探索効率を上げるためには条件分岐が不可欠なので、(「数」を求めるだけだとしても)GPGPUでうまくやる方法がわかりません。そこで、CPUに載っているコアのみで並列化します(Xeon Phiなら簡単なのでしょうか→追記参照)。 一番外側の、0から(1<<25)-1まで変化する変数iのループをOpenMPで並列化します(schedule(guided)では遅くなります。schedule(auto)はVisual C++でサポートされたら試します)。変数iは上の図の緑の部分(カンで5個にしました)を各数5ビットで表現し、つなげたものです。マスに入りうる数は1から25までなので、5ビットというのはちょっと冗長ですが、とりあえずはよしとしましょう。 出力はバイナリ形式で、1つの解に25バイト使います(1つのマスに入る数を1バイトで表現

    スパコンで約2時間36分かかったという、5×5の魔方陣の全解列挙を、パソコンで試す(C ) | 配電盤
    advblog
    advblog 2014/03/16
  • node.jsでTwitter Streaming APIを利用する方法 | 配電盤

    ntwitterを使って簡単に実現できます(他にもいろいろあるかもしれませんが、最初に試したのがntwitterでした)。 取得した情報をコンソールに出力するだけの簡単な例を作ってみましょう。 まず、Twitter Developerでアプリを登録し、consumer_keyとconsumer_secret、access_token_key、access_token_secretを取得します。 node.jsをインストールします。 sudo apt-get install git npm # Ubuntu 12.04 sudo apt-get install git npm nodejs-legacy # Ubuntu 12.10 ntwitterをインストールします。 npm install ntwitter 次のようなJavaScriptファイルを作ります(server.jsとします)

    node.jsでTwitter Streaming APIを利用する方法 | 配電盤
    advblog
    advblog 2013/02/09
  • 位置情報付きのつぶやきをGoogle Maps上にリアルタイムに表示する方法 | 配電盤

    Twitter Streaming APIで取得したツイートをブラウザにプッシュする方法の続きです。 2、3年前に、位置情報付きのつぶやきをGoogle Maps上にリアルタイムに表示するウェブアプリを作りました(動画)。そのときは、クライアントの言語に自動翻訳したり、つぶやきを読み上げてみたり、Google Earthにも対応したりしていたのですが、利用していたサービスが終わってしまったり、APIのバージョンが変わってしまったりしたために、動かなくなってしまいました。 そこで、ここではエッセンスのみを再現してみようと思います。当時はサーバで受信したTwitterのストリーミングデータをブラウザに送信するのはちょっと面倒だったのですが、node.js(とSocket.IO)が使える今では、「あの苦労は何だったんだ?」という感じになっています。 以下のリンクで試せます。 http://twi

    advblog
    advblog 2013/02/09
  • プログラマがC言語にこだわるべきでない0番目の理由 by Inquisitor

    新しいプログラミング言語を作りたいと思ったら、そのプロトタイプはCのような低級言語ではなく、高級言語で実装したほうがいいのではないでしょうか。もちろん実行時のパフォーマンスなどのために、最終的にC言語で実装するということはあるかもしれませんが(相対的な話ではありますが、C言語を低級あるいは低水準と呼ぶのが許せないという人は、K&Rの1ページ目を参照してください。日語訳では「はじめに」のp.2です。)。 Cは比較的“低水準”の言語である。この性格付けは非難の意味を込めているのではない。これは単に、Cが普通のコンビュータで扱う種類の、すなわち文字、数、アドレスを扱えるようになっているという意味である。もちろん、これらのデータを組み合わせて、現実の機械で実行されるような普通の算術論理演算でいろいろな処理を行なうことができる。(p. 2) 以下、題 プログラマがC言語を学ぶべきたった一つの理由

    プログラマがC言語にこだわるべきでない0番目の理由 by Inquisitor
    advblog
    advblog 2012/01/06
  • Twitter時代の文字の数え方 | 配電盤

    入力「×」のブラウザでは、「𠮷」が2文字とみなされるため、2文字目まで、つまり「𠮷野」までしか入力できません。 Mozillaの文書には、Unicode code pointsで数えると書いてあるので、そのうち改善されるのかもしれませんが、現時点ではTwitterのために「maxlength="140"」を使うことはできません。 pattern属性 Firefox 21とChrome 27、IE 10、Opera 12.15は、「pattern=".{0,3}"」(任意の文字からなる0から3文字)のような正規表現を使った検証にも対応していますが、やはり「𠮷野家」は4文字とみなされてしまいます。 JavaScript 追記:javascript – でBMP以外のUnicode文字をきちんと扱う(404 Blog Not Found) JavaScriptでは、文字列strの長さをst

    advblog
    advblog 2011/06/18
  • Ubuntuでバックスラッシュと円記号を区別する | 配電盤

    Windowsに慣れている人は、バックスラッシュ「」と円記号「」が同じ字形になっているフォント(MS明朝やMSゴシック、メイリオ)にも慣れていて、両者を文脈から区別できます。 Ubuntu 9に導入されていたVLゴシックではバックスラッシュと円記号の字形は区別されていたので、こういう識別能力は必要ありませんでした。しかし、10.04で導入されたTakaoゴシックでは両者は区別しにくいため、Ubuntuユーザにもこの能力が必要になりました。ちなみに、拙著『Webアプリケーション構築入門』では、WindowsとUbuntu、Macを想定OSにしていることもあって、わかりやすいようにバックスラッシュの字形は「」にしています。 しかし、慣れていない人にとって、この区別はちょっと難しいと思うので、VLゴシックのようなバックスラッシュと円記号の字形が違うフォントを使い続けた方がいいでしょう。Windo

    advblog
    advblog 2011/05/30
  • プログラマの道具箱(深さ優先探索と幅優先探索) Mathematica編 by Inquisitor

    参考:数独の平凡な解法(C言語・Mathematica) 「数独で見るRuby(とMathematica)のパワーと表現力」という記事で、『プログラミング言語Ruby』に載っている数独のコードには、Rubyのイメージをダウンさせる危険があるという話をしました。 ああいうことになってしまった原因は、与えられた問題に特化したコードを書こうとする姿勢にあると思われます。 問題を解くときには、その問題専用の道具をいきなり作ろうとするのではなく、まずは手持ちの道具の中から使えそうなものを探してみるといいでしょう。 今回の題材である数独には、簡単な探索ツールで十分です(これは、試してみてからわかることではありますが)。たいていのプログラマの道具箱には、深さ優先探索や幅優先探索のためのコードが入っているはずなので、それを使います。単純な探索ツールが道具箱に無い人は、Peter Norvigさん(Goog

    advblog
    advblog 2009/06/02
  • 1