2007-07-01から1ヶ月間の記事一覧

行列計算

2行2列分を選択した状態で、 =MMULT(MMULT(MINVERSE({2,1;3,1}),{4,-2;3,-1}),{2,1;3,1}) と入力し、Ctrl+Shift+Enterで確定する。 ちなみに、こうやって入力した数式は配列数式というらしい。 (ヘルプで検索するときはこの用語を入れると良さそう) また、…

行列計算

matrix.rbの逆行列計算ってなんかおかしくね? irb(main):001:0> require 'matrix' => true irb(main):002:0> Matrix[[2,1],[3,1]].inv ExceptionForMatrix::ErrNotRegular: Not Regular Matrix from /usr/lib/ruby/1.8/matrix.rb:595:in `inverse_from' fro…

土用

土曜とは違う意味なんだろうってくらいしか知らなかったので調べてみた。 土用(どよう)とは、五行思想に基づく季節の分類の一つで、各季節の終りの約18日間のことである。 五行思想では、春に木気、夏に火気、秋に金気、冬に水気を割当てている。残った土…

ARGF

RubyのARGFと似たようなことを、Gaucheでやってみる。 (define-module argf (export with-argf)) (select-module argf) (define (with-argf args thunk) (if (null? args) (thunk) (for-each (lambda (f) (with-input-from-file f thunk)) args))) (provide …

ARGF

RubyのARGFと似たようなことを、Haskellでやってみる。 module ARGF where import System.Environment withARGF thunk = do args <- getArgs case args of [] -> getContents >>= thunk _ -> mapM_ (\f -> readFile f >>= thunk) argsARGF.hsとして保存。 こ…

デジタルラジオと3セグの関係

■地上デジタルとワンセグの関係 テレビでは、1チャンネル分の周波数を13個のセグメントにわけるが、 ハイビジョン放送の場合、12セグメントを使う SD放送(普通の場合)は4セグメントでたりる。 なので、13セグメントあると、ハイビジョンも(12セ…

FlashPaper

Flash ヘルプのヘルプ(ActionScript編) http://www.himco.jp/articles/pdf/flashHelpHelp.swf こんな感じのflashなんだけどpdfみたいなドキュメントをはじめて見た。 いままで全然知らなかった。 しかもすでにFlashPaper2とバージョンが2になってる。 やっ…

機種変更を躊躇させる今の端末の機能

あるいは機種変更をするときの個人的要チェックポイント。 光学ズームカメラ ヒンジ部分の厚みを生かして焦点距離を稼いでいる。最近の機種は薄型化だったりスライド方式だったりで焦点距離が必要な光学ズームがつかない。 FMラジオ ラジオは歩きながらでも…

ピボットテーブルの元データ作成

x1 x2 x3 y1 1 3 5 y2 2 4 6 上のようなピボットテーブルになっていない普通の表をワークシートの左上にコピペして、 マクロを実行すると、その下に以下のような表を作成する。 そうすれば、これを元データにしてピボットテーブルが作れる。 x y value x1 y1…

each_with_indexの実装を探す

まず、/usr/lib/ruby/1.8の中を見てみる。 % find /usr/lib/ruby/1.8 -name '*numerable*' -print特にEnumerable.rbってファイルはない。 よく考えたら、require 'Enumerable'ってやるわけじゃなくて、include Enumerableってやってるんだった。 そもそも定…

main

rubyのトップレベル(?)のselfはmainというオブジェクトだった。 % ruby -e 'p self' mainirbでも同じmainになってる。 なんかのクラスのインスタンスってわけじゃなくて素のObjectなようだ。 % irb irb(main):001:0> self => main irb(main):002:0> self.…

バッファ上のソースコードを実行

vim

その時点のバッファ上のソースコードを拡張子に応じた処理系で実行する。 動機 今までは、:%!rubyとかで済ましてたんだけど、runghcとかwscriptだと ファイルの拡張子を見てるのでそれに対処するために作ってみた。 準備 以下の内容をwindowsなら$VIM/_vimrc…

全ASCII文字を列挙

これも教えてもらった。 % ruby -e '" ".upto("~"){|s|puts s}'→訂正:出力結果を確認してなかった。これも下と同じで9で止まってしまう。uptoはブロックが必須。返値は自分のみ。 > " ".upto("~").to_a LocalJumpError: no block given > " ".upto("~"){|s|…

n行毎に連結する

教えてもらったのでメモ。 % seq 9 | perl -pe 's/\n/,/ if $.%3' 1,2,3 4,5,6 7,8,9 % seq 9 | perl -lpe '$\=$.%3?",":"\n"'改行を含んだ置換をする場合は、sedのかわりにperlを使うことを考えるとよい。 ruby版 % seq 9 | ruby -pe 'gsub(/\n/,",") if $.…

各硬貨の重さと直径

Wikipediaが硬貨毎のページになってたので一覧にしてみた。 円 g mm 円/kg 円/m kg/100万円 m/100万円 1 1 20 1000 50 1000 20000 5 3.75 22 1333 227 750 4400 10 4.5 23.5 2222 426 450 2350 50 4 21 12500 2381 80 420 100 4.8 22.6 20833 4425 48 226 50…

Erlangの場合

Prologに似た文法を見ていたら試したくなってきた。 rm([],_) -> []; rm([X|Xs],X) -> rm(Xs,X); rm([X|Xs],Y) -> [X|rm(Xs,Y)]. >rm:rm([1,2,3],2). [1,3]お、2行目の書き方で第1引数のリストの先頭と第2引数が等しい、という意味になってる。 Haskellみた…

escript

ようやく R11B-4 を入れて escript が使えるようになったんで、試してみた。基本的なルールとしては、 * 一行目は # で始まらないといけない o shbang を利用しない場合でも、内容はともかく必ず必要みたい o ゴルフ的には # だけで良し * main/1 型の関数必…

バックアップツール

いつもツール選択どまりで実際にバックアップをしないで泣きを見る。 今回こそ定常運用まで漕ぎつけたい。…と思いつつツール選択する俺。 Windowsでネットワーク越しにディレクトリーの複製を定期的に行ってくれるソフトを探しています。UNIXのrsyncやmirror…

スクリプト版FizzBuzz

vim

ドキュメントを見ていたらmapとかrangeとかが使えるのがわかったのでちょっと練習にFizzBuzzを書いてみた。 バッファに出力版 :call append(0,map(range(1,100),'!(v:val%15)?"FizzBuzz":!(v:val%3)?"Fizz":!(v:val%5)?"Bazz":v:val')) バッファを汚さない版…

オブジェクト指向

vim

vimスクリプトでプロトタイプベースの書き方が出来たとは。 試しに今回は複素数オブジェクトを作ってみる。 let Complex={} function Complex.new(r,i) dict let obj=copy(self) let obj.real=a:r let obj.img=a:i return obj endfunction function Complex.…

1文字の二項演算子で空いているもの

% cat >t.hs main = putStr $ unlines [":t ("++[c]++")"|c<-['!'..'~']] % runghc t.hs | head 1 :t (!) % runghc t.hs | ghci 2>&1 | grep 'scope: `[^A-Za-z]' <interactive>:1:0: Not in scope: `!' <interactive>:1:0: Not in scope: `#' <interactive>:1:0: Not in scope: `%' <interactive>:1:0: Not in sc</interactive></interactive></interactive></interactive>…

Bx=S(Kx)

S(Kx)yz = Kxz(yz) = x(yz)なので、 BxとしているところはS(Kx)とできる。よって、Dの場合なら、 D = BB = S(KB)また、addの場合なら、 add = BSD = BS(BB) = S(KS)(S(KB))iで書き直すと add = i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(…

JavaScriptでIota

Haskellはダメだったので、今度はJavaScriptでやってみる。まず、関数iを定義する。 折り返して書いたけど、実際の構造はreturn f (function(x)...) (function(x)...); function i(f){ return f(function(x){return function(y){return function(z){return x…

HaskellでIota

本物のIotaはこれ。 http://ling.ucsd.edu/~barker/Iota/ これをHaskell上で再現してみる。まず、関数iを定義する。 i f = f (\x y z->x z (y z)) (\x y->x)テストしてみる。 iにiを適用すると恒等関数になるはずなのでi i 0は0を返すはず。 Main> i i 0 <interactive>:1:</interactive>…

イベントキャンセル

<form onsubmit='foo();return false'>またはfoo()がfalseを返すようにしておいて <form onsubmit='return foo()'>ただし、foo()内でfalseを返しているだけではダメなので注意。関数内でのreturn falseとイベントハンドラ内のreturn falseはよく考えると別物ですね。 自分で作った関数のリターン値なんて、誰もみてくれないんで</form></form>…

マルチバイト文字列の長さ

% ruby -Ku -e 'puts "あいう".length' 9 % ruby -Ku -rjcode -e 'puts "あいう".jlength' 3 % ruby -Ku -e 'puts "あいう".split("").length' 3覚書: $KCODE の影響はほとんどの場合 String よりも Regexp に対して。 「Shift_JIS の 2 バイト目に \ が含ま…

WWW::Mechanize

これはいい。今までjavascriptでやろうとすると阻まれていたドメイン越えのブラウザ操作がこれで出来る。Rubyでウェブサイトのアクセスを自動化するライブラリ「WWW::Mechanize」の日本語リファレンスです。javascriptの処理が入っていてもついてこれるか?…

変換対象のはてな記法

カテゴリー記法 *[〜〜]〜〜 日記にカテゴリーを設定します表組み記法 | 〜〜 | 〜〜 |, |*〜〜 | 〜〜 | 表組み(table)を簡単に記述しますcite、title属性 <blockquote cite="〜〜" title="〜〜"> 〜〜 </blockquote>blockquote タグによる引用元を自動的に表示します ちゃんと 変換 できてる かな?