Just another Ruby porter,

〜2008年1月中旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2008-01-11 (Fri)

[Golf] Palindromic Quine

改行の扱いが結構面倒。
ふつうの問題なら最終行の改行の有無は問題にならないが、
Quineだけは厳密に同じものを求められる。

すでに Quineを解いているので、それをベースにBashはできた。
Bashにはif,fiやcase,esacがあって一番相性がいい言語と思われる。
いや実のところ今日記を書いてて思いついただけで出番はまったくなかった。

これを解くには頻繁に文字列を反転する必要にせまられるが、
vimなら

:.!rev

で現在行を反転することができる。revコマンドは別に必要。


2008-01-12 (Sat)

[Golf] Dancing Kidsで空目?

さすがにそんなことは。

sedの別解を晒しとこう

s:$: ('-')\
 /|_|\\\
  | |:
/l/{s:):&/:;s:\\::}
/r/{s: :\\:;s: /:  :}
s:.*t::

で77B。最初は両手を下げているとこから始まる。
lがあれば左手を上げ、rがあれば右手を上げる。
特に変なこともしてない。


2008-01-13 (Sun)

[Golf] false.to_sが""だとうれしい理由

たとえば複数形のsを処理したい時、って99 bottles限定な気もするけど、

"bottle#{i>1&&:s}"

と書けるわけです。

"bottle#{'s'if i>1}"

よりも2B短い。

[Vim] Vimでgorubyもsyntaxはrubyで

色がつかないと寂しいので

au BufNewFile,BufRead *.grb setl filetype=ruby

を~/.vimrcに追加。


2008-01-14 (Mon)

[goruby] 今日のgoruby

某ふらたんからのパッチを全面的に取り入れた。
アルゴリズムが全面的に変わって、
1文字ごとに.*を入れるとみなす正規表現で検索することになった。
たとえばputsはpsでいけるようになる。

% goruby -e 'p Kernel.methods.grep(/^p.*s.*/)[0]'  
:puts

こうなると予想不可能なので、これを探すのがshortest_abbreviation。

% goruby -e 'p shortest_abbreviation :puts'
"ps"

のように教えてくれる。また

% goruby -e 'p shortest_abbreviation :shortest_abbreviation'
"sh"

なので

% goruby -e 'p sh :puts'
"ps"

でok。

あとStringにArrayのmethodが混入というか、

% goruby -e 'p "123".map{|x|x*2}'                           
"112233"

ということができるようになってたりとか、
do_whileやdo_untilが入ってたりする。


2008-01-15 (Tue)

[ニコニコ動画]【オリジナル曲】自動演奏ピアノのために【カオス】

MIDIアニメ職人が帰ってきてた。


2008-01-16 (Wed)

[Golf] vim -Wでキー入力を記録

vimには-Wオプションがあるからこれを利用するとgolf作業が楽になる。

-W <scriptout>       入力した全コマンドをファイル <scriptout> に保存する

実際には

% vim -u NONE -W foo.log # いろいろ試行錯誤
% mv foo.log foo.vim
% vim foo.vim # 無駄を省く
% vim -u NONE -W foo.log -s foo.vim # いろいろ試行錯誤
% mv foo.log foo.vim
% vim foo.vim # 無駄を省く
% vim -u NONE -W foo.log -s foo.vim # いろいろ試行錯誤

というように段階踏むような感じで繰り返していけば間違いなく作業できる。


2008-01-17 (Thu)

[Firefox] Firefox 3 beta 2を試す

about:configでextensions.checkCompatibilityと
extensions.checkUpdateSecurityをfalseに。
keyconfigは この変更で。 Tab Mix Plusは 開発バージョンを使う。
あとはそのままで問題なく動いてる。

Fx2に比べるとすごく軽い。このまま使ってみることにした。


2008-01-18 (Fri)

[RSS] βloglines

いつのまにかスペースバーがjとスクロールが合体したような感じになってて心地いい。
スペースバーだけ押してれば未読が全部読める。


2008-01-19 (Sat)

[Azureus] Fedora 8のAzureusを更新したら立ち上がらない件

Azureusがなんかテーマがらみでエラーになって立ち上がらないわけで。

[1 20, 00:50] Error initialize Main Window org/gnu/gtk/IconTheme

ぐぐってみると New azureus doesn't work まさにそのものだ。
jvmを変えるといけるとの情報もあるがそんなの面倒だしなあ。
とりあえず、野良のazureusを起動したら動いた。というかなんか別物になってる!
テーマが変わりすぎだ。Advancedってタグを選んだら戻った。
いやVUZEってロゴはそのままだな。なんだよVUZEって。


2008-01-20 (Sun)

[Ruby] Nice Boat.

Shibuya.rbのNice Boat.がRuby 1.9で動かないと、
会長が嘆いていた。問題は今ruby-devでも話題になってるString#[]。

'Nice Boat.'.gsub(/./){|m|$Z||=[5,-1,6,-3,85,55,-14,-51,-2,52];(m[0]+$Z.shift).chr}

のm[0]が1.9だとStringになってしまうのでまずい。
m.ordにすれば通るが1.8では通らない。
というわけで、1.8にもordをという話も出てたりする。

見た感じbytesしてzipを使いたいところだが、
zipはブロックを使うとnilを返すからなあ。
そこが使い辛いな。

ああ、mapを挟めばいいのか。

'Nice Boat.'.bytes.zip([5,-1,6,-3,85,55,-14,-51,-2,52]).map{|m,z|(m+z).chr}.join

<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!