Home > Archives > 2007年02月

2007年02月

GCD@sed を縮める

よく考えたら 7 bytes 縮まった.現在 15 bytes.エンベッドモドキ強し.

Windowsのコンボボックスのカスタム化

聞かれて調べたのでメモ.

なにやらウィンドウプロシージャを乗っ取るらしい.ただ,コンボボックス内のエディットコントロールは独立したウィンドウプロシージャを持つらしいので,

    HWND hwndEdit = GetTopWindow( hwndComboBox );

とかしてエディットコントロールのハンドラを取っとかないとはまる.あとは,GetWindowLong で元のプロシージャを取得して,SetWindowLong で新しいプロシージャを登録して,新しいプロシージャ内で CallWindowProc を使って元のプロシージャを呼べばいいらしい.

参考:

http://www.expertmg.co.jp/html/cti/vctips/control.htm

http://www.arcpit.co.jp/winapi/api_02/ap020108.htm

FizzBuzz@sed revise

抜かされていたのでもう少しコードを書き換えて小さくしてみた.10と5の最大公約数が5であることを使って5の倍数カウンタを排除して,整形部分をもう少し頭のよい書き方に変えてみた.現在144bytes.今のコードは1000までとかでも普通に動くコードなので,高々100までという問題の条件を使うともう少し縮むのかなぁ?

FizzBuzz

新しい問題が増えてたので sed で挑戦.とりあえず 1 から 100 までループでインクリメントするカウンタを書いて,それに3周期と5周期のカウンタをくっつけてみた.これに出力の整形部分を書いて 169バイト.ここから縮めるには大き目の書き換えが必要なのでとりあえずこれで出しておく.

ゴルフ観戦

最近のsubmit状況を見たかったのでテキトウに一行書いてみた.

ddd=`awk 'BEGIN{print strftime("%y/%m/%d %H:%M:%S",systime()-3600*24)}'`;awkprog='BEGIN{FS="<>";c=0;}{if($5!=""){if($5 <"'$ddd'"){next}else{r[c]=sprintf("%2d %-15s %4d %s %s",$1,$2,$3,$5,$6);c=c+1;}}else{if(c>0){print n;for(i=0;i<c;i++){print r[i];}print"";};c=0;n=$0;}}';for i in `cat index.html | grep '<li><a href' | sed -e 's|<li><a.*"\(.*\)">\([^<]*\)<.*|http://golf.shinh.org/\1@\2|' | sed -e 's/ /,/g'`; do h=${i%%@*}; n=${i##*@}; wget -q -O temp.html $h; echo "== "$n" ==" | sed 's/,/ /'; cat temp.html | awk '/[0-9]*\/[0-9]*\/[0-9]*/{print}/a href/&&!/tati|Sample|Rank|return/{print}' | sed -e 's#\(<tr>\|</td>\|<td>\)\+#<>#g' -e 's| */ *|/|g' -e 's/^<>\|<>$//g' -e 's/<h3>\([^<]*\).*/\1/' | awk "$awkprog"; done

過去一日以内のsubmitを抜き出してくる.ぼけた頭で組んだので sed にいったり awk にいったりぐちゃぐちゃ.そして transpose も 80bytes から縮まない.別のアルゴリズムでやらないとだめなもよう…

ゴルフ続き@sed

Smileys Triangle(40), tennis(229), permutater(118) は一位.delete blank lines(5), even lines(4), invert case(24), delete last line(2), rotate lines(8)は一位タイ.e(102), ultimate problem(3), Fibonacci Numbers(292), exit status(16) は埋め込みで一位タイ.Hamming Numbers(382), show the way(85) は埋め込みで….そして 99 shinichiroes of hamaji は抜かれてるなぁ.もうすこしがんばろう.そういや最近(cheat)を明示するような動きになっているようなので次からはちゃんと書こう.

99 shinichiroes of hamaji まで

とりあえず頭からつぶしていって hello world と echo は1位に並んだ.これらは答えがひとつしかなさそうなのでこれ以上は縮まないでしょう.次の 99 shinichiroes of hamaji は haskell で一位と13バイト差.もう少し頭使えば縮みそうだけど抜本的改革が必要なので断念.sed のコードのほうは暫定で最小コード達成.二位とは1バイト差なので微妙.とりあえず sed で一位になったので少々満足.

anarchy golf に挑戦する

面白そうなので Haskell と sed で参加してみる.いくつか解いてみたけど最小コードを追い抜けたものは今のところなし.prime numbers の Haskell で 66 っていったいどうやってんだろう? もう少し頭をひねってみやう.

Home > Archives > 2007年02月

Search
Feeds

Page Top