トップ «前の日記(2008-06-27) 最新 次の日記(2008-06-29)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|

ToDo:


2008-06-28

_ Perl5VM Golf

気になってたのでニコニコで見た。

http://d.hatena.ne.jp/tokuhirom/20080623/1214220971

うーん面白いと思うけど、レギュレーションが微妙かなぁ…

なんか perl のバージョンに依存してるのがね… うちの 5.10.0 だと

> perl -MAcme::PerlVMGolf -e '1/!!!!1'
hit: 5op(const, constant item)
hit: 96op(not, not)
hit: 5op(const, constant item)
hit: 96op(not, not)
hit: 5op(const, constant item)
hit: 96op(not, not)
hit: 5op(const, constant item)
hit: 96op(not, not)
hit: 5op(const, constant item)
hit: 5op(const, constant item)
hit: 57op(divide, division (/))
hit: 180op(enter, block entry)
hit: 177op(nextstate, next statement)
hit: 181op(leave, block exit)
Your perl is : 5.10.0
Your score is : 1009op

とずれるのよね。 YARV も instruction 変わったりするし難しいんじゃないかなぁ。

素直に op code サイズ縮めりゃいい気がするんだけど、 たぶんスタックマシンの VM ゴルフとかそんなに面白くもないんだろうな。 ちょうどを目指すのがリアルゴルフ感があるといえばあるし。

(01:11)

_ うーん

しんどい

(01:22)

_ しんどい

起きたらあろは先生が喋ってたので見てた。

gccint.info を誰か訳すといいと思うんだよね。 あと gcc wiki の internal なんちゃらとかあのへん。

しんどいのでこんなコードを書いてた。

int main() {
    int p = 1;
    if (p > 0) {
        int p = printf("%d\n", p);
    }
}

驚いた。これ 0 って出力されたんだぜ…!

(19:06)

_ ふと思った

Array#step 欲しくね。 なんか出力適当にやって

hoge fuga
30 20 40 50
foo bar
10 30 20 40
...

みたいな感じで出力しちゃうことが結構あるんだけど、 これをパースするのは意外とめんどくてうざい。

こういうのがあるとすっきり。

class Array
  def step(n, &pr)
    i = 0
    while true
      a = self[i, n]
      break if a.size != n
      i += n
      pr[*a]
    end
  end
end

File.read('log').split.step(6) do |s1, s2, n1, n2, n3, n4|
  puts "#{n1}"
end

(21:07)

_ top10を残すデータ構造

ってどうするのがいいのかなとふと考えた。

一番点数低いのがトップに来るようにヒープを作っておいて、 その点数一番低いヤツより大きければ 一番上取り除きつつ新しい要素を挿入、 とかするのが良さそうに思った。

点数低いのがトップに来るあたり priority queue としてはちょっと面白いような。

まぁたいていは map かなんかに適当につっこみまくって 上位なめるだけでうまくいくんだけどなー。

(21:21)

_ ろーぐらいく

リスク犯すほどのリターンが基本的に無いって話が あるんじゃないかな。 僕の知る範囲ではローグライクで言うリスクってのは死で、 その場合のリターンてどうせその場で生きのびられる、 だけなんだよな。 明らかにリスクに見合わん。

無理にそれ以外のリスクリターンとか考えると… シレンでレベル上がっちゃった敵がいて、 今自分階段とこにいるから逃げられるけど 手持ちのアイテムを使えばそいつを倒せてレベルがたくさん上がるとか… それはリスクリターンというより単に損得勘定だな。

うーん。たぶん大丈夫だろうけど万が一がありそうな泥棒とかかね。

(22:14)

_ priority_queue

これ priority_queue_map とかがあるべきなんじゃないかなとおもった。

(22:53)

_ watch コマンド

って知ってますか。 tee とか tail -f とかと並ぶ状態監視ツールなんだけど、 まぁそれらと並ぶという時点でそんなに使わない。

で、それとはあんま関係なくて、

diff -u results/18 results/19 L

的なことをよくする (L は |&lv) わけだけど、 これを見てる最中に results/19 は 更新中だったりすると、 もう一度コマンドを実行して今の状態が見たい… と思うのはまぁ自然なことかと思う。

でこれが R でできないのが腹がたつ。 無論 q ^p ^m とかでもいいんだけど、 これだとカーソルが最初に戻っちゃう。

unix pipe は唯一成功したコンポーネントアーキテクチャだとかいう Rob Pike の正気かどうかよくわからん主張はこう、 半ば賛成するんだけど、でももうちょいこうなんとかねぇ。

(23:38)

本日のツッコミ(全3件) [ツッコミを入れる]
_ ょゎ (2008-06-29 00:04)

> Array#step
Enumerable#each_slice でどうでしょう?
最後の端数も yield するので、ちょっと仕様が違いますが。

_ shinh (2008-06-29 00:23)

おおすばらしい。書いてからありそうだなーと少し思ったのですが、調べるのをさぼってました。ありがとうございます。

_ へるみ (2008-06-29 00:30)

>これ 0 って出力されたんだぜ…!
-Wallつけると「未初期化だよ」って文句言われますね.未定義なのかな.
gcc/VC共に最適化オプションによって出力結果が変わりました.

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2008年
6月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
1.やぎ(2008-07-22 19:39) 2.kosaki(2008-06-30 17:04) 3.へるみ(2008-06-29 00:30)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h