君ならどう書く 2.0 - ROUND 3 -

LL Ring が近いからやりました。

http://ll.jus.or.jp/2006/blog/doukaku3

をまぁさっくりと LL で。

i,j,m;main(c,v){char**p=v;for(;++i<c;)m=m>atoi(p[i])?m:atoi(p[i]);for(;++j<c;puts(""))for(i=20*atoi(p[j])/m;i--;)printf("*");}

5分ほどですらすらと。5分かかった時点で LL じゃねーんじゃないかとか思いつつ。とにかく。言いたいことは、ショートコードには LLC のヒントがあるような気がしたというか。

  • C には型推論がある。型のない宣言は int に推論されます!しかも右辺値なくてもいいんですよ。
  • 空白が全くない。インデントの制限だのはワンライナーの敵ですが、Cで空白が必要なことはまずありません。
  • .bss に置いたものは初期値 0 が入ってる。 i=0 とかを省略できます。
  • 後置 ++ が異様に便利。副作用を伴ってて、演算対象とは別な値を返す関数というのは思いの他便利。スタックの pop で pop した値を受けつつスタックを縮めるような感覚。
  • マクロ使わない限り include なんて無くていいです
  • argv の型は int です

でもまぁ見るからに長いので短くしよう。

i,m;main(c,v){int*p=v;for(;++i<c;m=m>v?m:v)v=atoi(p[i]);for(;--c;puts(""))for(i=20*atoi(*++p)/m;i--;)printf("*");}

と思ったけどこのへんで飽きた。

グーグルの検索結果に適当にリンクを 2.0

http://shinh.skr.jp/koneta/googleothers.user.js

グーグルツールバーから検索した時にうまくいってないよ!と教えていただいたので修正しました。ありがとうございます。

ついでに、というかそっちがメインですが、リンク先を GM_xmlhttpRequest で調べておいて、その結果の1行目を表示する機能をつけておきました。たぶん結構便利。

これ実装してる時に気付いたんですが、 XMLHttpRequest はヨソのサイトにアクセスできないので、 GM_xmlhttpRequest を使うわけですけど、これは非同期通信できないわけでして。で、危なく Greasemonkey に手を入れかけたんですが、 setTimeout でタイマを一段かましてやると非同期っぽくなるなぁとか気付きました。

ついでに見るからに Wikipedia とかはてなに無さそうな検索キーの場合は適当にリンクを作らないようになっています。具体的には英語Wikipediaに日本語が入ってるとか。

あとヒント: とかが出てる時にうまくいってなかったのでそれ修正とか。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h