2011-01-01から1年間の記事一覧

Erlangと配列 (つづき)

前回のつづきです。Erlangには配列がないものだと思い込んでいたのでこのようなエントリを書いたのですが、ふとReference Manualを見るとarrayという単語が...以前書いたCRC32のルーチンに追加して再度計測してみました。 Erlang R14B03 (erts-5.8.4) [sourc…

ErlangとCRC32 (つづき)

先日のErlangと配列の続きです。あらすじ: zlib:crc32と、自前で実装したCRC32の性能を比較しました。自前で実装したCRC32は内部のテーブルの持ちかたをいろいろ変えて性能の違いを計ってみました。当たり前ですがzlibのものが一番早かったです。今回はそん…

Erlangとiolist()

io:format/2みたいな書式指定の出力を、printfに対するsprintfのように、文字列を作るために使いたい! というときには io_lib:format/2が使えます。 16> io_lib:format("~s", ["ABCDE"]). ["ABCDE"] 17> io_lib:format("~10s", ["ABCDE"]). [[[32," ",32,32]…

Erlangと配列

(「ErlangとCRC32」から改題)CRC32が必要になりそうだったので、Erlangでどうやって実現させるかを考えてみました。zlib:crc32があることが分かりましたが、CRC32と一口に言っても利用する多項式によって様々なバリエーションがありますので、多項式を外から…

ErlangとQuine

Quineとは自分自身を出力するようなプログラムです。出力結果と、元のソースを比較するとぴったり一致します。賢い人にしか書けないと思っていたので、私には縁がないと思っていたのですが、Google Code Jam Japan 2011 T-shirtによると、「Quine を書いたこ…

アラビア数字・ローマ数字変換

お題:アラビア数字・ローマ数字変換 - No Programming, No LifeをErlangでやってみました。やってみたのはけっこう前ですが放置していました。まずarabic_to_roman。ローマ数字には位取りの0がないのでちょっと表現が難しいですが、1、10、100の位について…

ErlangとJInterface

JIntefaceはErlangとJavaの相互運用を可能にするモジュールです。OTPに最初から含まれているので手軽に利用することができます。先日、ErlangにRPCで指示を出して、応答をJTreeで表示するというテストアプリを書いてみたところ思いのほか便利で、これに加え…

Erlangとビット演算

FeliCaのポーリングで取得できるPMmからコマンドごとのタイムアウト時間を計算する必要が生じたため、Erlangで書いてみました。PMmの各バイトを、2ビット、3ビット、3ビットに分けて計算するので、まずは取り出してみましょう。 4> <<E:2, B:3, A:3>> = <<2#10011101>>. <<1</e:2,>…

文字列を先頭から見て同じところまで除去 (2)

前回の記事で書いたソースをいじってみましょう。下記2点が気になりました。 リストに1つしか文字列がないときに期待通りの動きをしない。 これは、lists:all(Fun, []) が true を返すためですね。 1文字辿るのに2回もループを回している。 lists:all/2 と、…

文字列を先頭から見て同じところまで除去

お久しぶりです。No Programming, No Lifeで見掛けた表題のお題をErlangでやってみます。まず、文字列が2つのときを考えます。これは文字列のパターンマッチングを使えば問題なさそうですね。 -module(ahya). -compile(export_all). ahya([H1|T1], [H1|T2]) …

Erlangとパーサコンビネータ

Parsecの練習をしている最中、ふと「parsec erlang」で調べてみたら、Parsec Erlangを発見しました。 Parsec - HaskellWikiからもリンクされていますね。ドキュメントがほとんどなく、サンプルもまったく見つからないという巨大な問題があり(こちらのバージ…

よろしくお願いします。

gooブログ から引っ越してきました。よろしくお願いします。