トップ «前10日分 最新 次10日分» 追記

はじめてのにき

ここの位置付け

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|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|

ToDo:


2011-01-12

_ 49.7 7.5

経験上50切るとやばいんですよ…

TODO ちゃんと喰う

(08:48)

_ facebook hacker cup

気がついたら終わっていた。 topcoder とか codejam 系だったのかな。 じゃあまあいいんだけど。

飯をたくさん喰うという努力をしたら 速攻で気持ち悪くなって元々体調悪いのとコンボでキツくなった。 なんとかならんかという貧弱さ。

dc は手で書くのがかったるいので 適当な言語から生成したいと思う。 bc がそれであるのは知ってるんだけど、 そうじゃなくて短い dc コードを出力させたいのだよね当然

なるべくレジスタ使わないで stack を… とかいう話はいくらでも研究とかありそうだが

(19:05)


2011-01-11

_ 1位とりかえされた

のでまぁその人は64問全部解いてるし 60問縛りとか意味わからんことやめて残りも解くことに。 適当に codegolf.com のコードの流用とかしつつ romancal 解いたので 1位取り戻した。 久々に見るとローマ数字とか死んでいいな。 だいたいゴルフ的には 8 は IIX であるべきだろうに。

残り3問だけど、

  • factorad はこの手の飽き飽き…解いてしまえばたぶん成績良いんだけどね…
  • sqdiff はめんどくさそうというかどうせ数値誤差とかうんぬんで WA 喰らって試行錯誤するんだろうなぁ…
  • spiral は oblongular number spirals の悪夢を思い起こす絵が描いてあったのでやりたくない

など、3つとも回避したい雰囲気なのであるがー

まぁ spiral はあきらかに簡単そうではあるよね…

(00:58)


2011-01-10

_ 1位

http://www.spoj.pl/SHORTEN/ranks/

になった。 60問しか解いてないまんまなので伸びしろもそれなりにあるだろうっていうか そこらじゅう伸びしろだらけだろうと思う。

どうでもいいけどこの動画をずっと聞いている。 なんでこいうの好きなのか。

http://www.nicovideo.jp/watch/sm12628181

(17:01)


2011-01-09

_ SIZECON

狂ったルールのおかげでたのしい。 ここまで来るとはなぁ。

http://www.spoj.pl/SHORTEN/ranks/SIZECON/

あと 2B は今の方針だと全然ダメ。 どうすればいいかなー

解いた問題数 60 のまんまでトップになりたいとか思いはじめてきた。

(11:39)


2011-01-08

_ SHORTEN

http://www.typemiss.net/2011/01/spoj-shorten.html

で書かれてる通りテストケースかなり適当なんだよなぁ。

http://twitter.com/kinaba/status/23392088473214977

まず kinaba さんが書いておられる通り出力フォーマットが適当ってのがあって、 それはまぁたぶん scanf で読んでるっぽい感じの問題が多くて、 そっちはまぁ

https://www.spoj.pl/SHORTEN/embed/rules/

あたりにも書いてあるからまぁいいとして。

問題はテストケース見せてないからなんとかなってるだけーって程度に テストケースが十分に無いやつがあるってことだよな。 例えば SUDCHECK なんてテストケースの数の bit 数があれば 解答埋め込めちゃうから、 こんなもんすごい数のテストケースが無いと ルール無用なゴルフとしては全く成立してないのだよな。

https://www.spoj.pl/SHORTEN/problems/SUDCHECK/

そんなこんなでまぁ色々やる気は起きない要因はあるんだけど、 なんか BF 使う問題とかあったりとかはちょっと面白いかとおもう。

てかこのへんの制約は ICPC のためにほげほげな SPOJ だから、って理由がほとんどだよなぁ。 あくまでゴルフ場ではないっつーか。

あと与えられてる sample inputs が異様に簡単なものばかり、ってのも ICPC 的な感じなんだろうなぁ。 問題の spec から難しいテストケースを考える、 ってのは重要な能力ではあるものの、 なんかどうもプログラムコンテストとしては余計なものに感じちゃったりもする。

まあなんだかんだ言いつつ3位。

一番面白かった問題(というか解いてないが)は INTER で ruby だと gets するだけで TLE 。 https://www.spoj.pl/SHORTEN/problems/INTER/

(08:20)

_ latency

http://d.hatena.ne.jp/kawango/20110107

ニコニコではこのへんが問題になるのなーという感じもあるけど、 本当にそうなんか? グーグルだとなんか色々調べたけど、 ある程度高速な回線だと結局クライアントのオーバヘッドがデカいぞ、 って話で HTML を頑張って色々やったらユーザの幸せがだいぶ増えたとかいう話があって (たしかこの本…だっけ http://www.amazon.com/High-Performance-Web-Sites-Essential/dp/0596529309)、 ニコニコも体感だと動画とか以前に、最初にページ出るまでが結構長いんだけどな。

(10:09)

_ ruby 1.9 と gets

いくらなんでも gets だけでタイムアウトしてるのはおかしいが、 測ってみると ruby1.9 の gets はマジで遅い。 これは M17N の影響だったりするんだろうか。

> time sh -c "ruby -e 'puts %q(c)*10000000' | ruby -e 'gets'"
sh -c "ruby -e 'puts %q(c)*10000000' | ruby -e 'gets'"  0.19s user 0.17s system 91% cpu 0.396 total
> time sh -c "ruby -e 'puts %q(c)*10000000' | ruby1.9 -e 'gets'"
sh -c "ruby -e 'puts %q(c)*10000000' | ruby1.9 -e 'gets'"  1.32s user 0.19s system 94% cpu 1.591 total
> time sh -c "ruby -e 'puts %q(c)*10000000' | perl -e '<>'"
sh -c "ruby -e 'puts %q(c)*10000000' | perl -e '<>'"  0.21s user 0.12s system 93% cpu 0.360 total

(10:46)

本日のツッコミ(全1件) [ツッコミを入れる]

_ kosaki [getsの問題、うちでは再現しませんねぇ。ruby19がtrunk+linuxなのが原因かもしれませんが。]


2011-01-05

_ golf場 TODO

なんか IRC で話してていくつか

  • 8 characters hello world 。8種類しか文字使えない hello を書けというもの。 goruby が h だけでいいのはいいかげんあれだし HELLO, WORLD! とかにしてやればいいか
  • edit distance がコードサイズになってないといけない cyclic な quine 。これ書けるかまだわからんからとりあえず解いてから…
  • rejudge button 。 random base な解答はちょっとアレなので、 deadline つきの新しい問題は rejudge button をつけて、それを押すと解答の check をもう一度走らせる、ってもの。 time limit が厳しい解答がかわいそうになるかもなので、 rejudge の時は time limit を増やすと良い

(05:25)

_ random seed

rejudge よりは rand seed 全部殺すのが良いんじゃないかと言われた。 そんなの無理だと思ってたんだけど、結構できそうな気もしてきた

  • rm /dev/urandom; cp /dev/zero /dev/urandom
  • personality(personality(0xffffffff) | ADDR_NO_RANDOMIZE) で address randomization は全滅するらしい
  • rdtsc は cr4.tsd というのをセットすると殺せるらしい
  • gettimeofday はフック
  • getrusage あたりが rdtsc 内部的に使ってたりしないだろうか

最後の3つは色々互いに絡んでる恐れがあるかな。

話としては、

  • 基本的にはコードが長くならなきゃいいわけなんで、言語実装が勝手に呼ぶ srand の seed として使われてるシステムコールさえ殺せば問題なし
  • rdtsc 殺しても kernel 内部で使っててかつそのシステムコールを言語処理系が seed として使ってると終わるので、やはり使ってる system call を全部殺すのが良さげ
  • 今時の gettimeofday は vsyscall とかそのへんの仕組みで userland で rdtsc 呼んでるとか無いだろうか→となると libc hook を復活させないといけなくてだるい気もする
  • 言語実装が勝手に自力で rdtsc を呼んでる…ってことはさすがに無いだろうか

あとは他に乱数源ってあったかなあ… 普通に考えると /dev/urandom とか time 系だけだと思うけど…

(11:09)

本日のツッコミ(全4件) [ツッコミを入れる]

_ Rui [getpidとか?]

_ shinh [あー getpid は既に克服された問題だったので書いてなかったんですがそうですね。特定の PID 狙って投稿する人..]

_ herumi [golfは全くやってないので頓珍漢なことかもしれませんが,/proc/net/devのRX packetsなどはどう..]

_ shinh [おおたしかに /proc の下とかは結構色々アレですね。 file の inode なんかもイヤな感じだったりします..]


2011-01-04

_ るびー

http://www.atdot.net/~ko1/diary/201101.html#d4

まぁこいうのはどこでも時々起きる系なのかなあよく知らんけど

Ruby については ruby-dev は「こわい」という話を ささださんにしたらこわくないよと言われた気がする。 当時もうまく説明できなかったけど、今もよくわからない。 ささださんの書いてる fundamental な人が多いと感じがするというのは、 割とその理由の一つかもしれないけどわからない。

ドキュメントは新しい熱心な人が聞きながら作る、ってのは まぁ一般的によくある話だとなんじゃないかなぁ。 そしてそれでいいんじゃないかなぁと思う。 よくわかってる人が書いたドキュメントって往々にして 新しい人にとって全然便利じゃなかったりするよね…

(23:49)


2011-01-03

_ spoj

文字通り一日中ゴルフしてた…

http://www.spoj.pl/SHORTEN/ranks/

とりあえず7位まで。問題多すぎですがな… まぁ codegolf よりは軽い問題が多いのはありがたいか。

トップの人は普通の問題に強烈に強い印象で、 2位の人は bash がおかしいことになってる感じぽい。

しかしなんか bash って使えるコマンド変わってる疑惑があるのがやる気を削がれるが

(01:35)


2011-01-01

_ 末尾再帰とか

http://blog.goo.ne.jp/no_orz_no_life/e/e7110098e80d89e28082065d32e9dd6b

の fact とか sum を見てて、 あらなんで3つ式あるのかなーと一瞬思ったんだけど、 まあたぶん末尾再帰の最適化かけたいという話だと思う。

で、そういえば GCC はどのくらい無茶なものを 末尾再帰にしてくれるのかなーとか思って色々やってみたら、 どうもすごく単純な足し算掛け算くらいしかできないぽかった。

まぁそんなもんかーと GCC を見ると、

     if (act->add && !a_acc)
       a_acc = create_tailcall_accumulator ("add_acc", first,
                                            integer_zero_node);
     if (act->mult && !m_acc)
       m_acc = create_tailcall_accumulator ("mult_acc", first,
                                            integer_one_node);

とかあって、やはり足し算と掛け算だけ特殊処理されてるのかな、 って感じだった。

関数型言語系だと、末尾が cons だった場合なんかにも、 似たような処理をしてやれば ずいぶんと色々とラクになるんじゃないかなぁとか思った。

あと、足し算掛け算以外を色々考えてる間に書いた、

def factdiv(n)
  if n==1
    1.0
  else
    n/factdiv(n-1)
  end
end

というような関数は、 つまり (2*4*8*...)/(1*3*5*...) という感じの値を返すわけだけど、 この値は 1.25 sqrt(N) くらいの数字になるみたいだった。 正確には (1*3*5*7*...)/(2*4*6*...) になってる時は 0.8 sqrt(N) くらいになってるので、この二つを繰り返すというか。

さてこれってなんか今まで見たことあるっけ… どうも見たことない気がするんだけど、 なんか有名な法則とかがありそうではある。

(23:39)

_ 年越し

年越す時に書いてたコードは spoj のゴルフだと思う。 たぶん kamil 。 spoj のゴルフはなんかよくわからんくらい短いものが結構あって、 なんか答え埋め込みとかになってるやつもあるのかなぁ。

年明けてからは BF_PRIME で、正月早々 Brainfuck ってのもどうなんですかね… しかもどうも勝てる気配があまりなくてですね…

kinaba さんの書いておられた、 なんかに特化した言語作るってのはいいかもなぁと思ったので、 Brainfuck の短いコードを出力するプログラムに特化した言語というのはどうか…

去年は今一つ、色んなことに慣れすぎてて特に何も無かったなぁ…という感じがした。 そいうことを思いながらはてなとか見てみた。

  • 年始の WebKit についての紹介は妙に頑張ってるなあ
  • コードを愛でる話はまぁそれなりに色々まとめたなぁ
  • 一方 TCC の話はひどいなぁ
  • TLE/ICFPC は残念な感じだったなぁ

とかあったんですが、このへんは知ってることまとめたりとかそういうのばっかで、 今一つ新鮮なことではなくて。

というわけで自分的に一番重要だったことは wake は今年作ったんだなぁということな気がする。

あとまぁ後半は Starcraft2 やってたなぁとしか言えないんじゃないかね。

(23:57)

本日のツッコミ(全3件) [ツッコミを入れる]

_ nineties [factdiv(N)/sqrt(N)はNが偶数だとsqrt(PI/2) = 1.253..にNが奇数だとsqrt(2..]

_ kinaba [足し算掛け算は a+(b+c) (普通の再帰)を (a+b)+c (末尾再帰)に変えて問題ないけど、cons は c..]

_ shinh [> ウォリスの公式 おおおありがとうございます。こいうのがあるんですね。例のごとく三角関数やら円周率が登場するわけ..]


2010-12-29

_ あと

電車の中で暇だったのでだいぶ前に書いてた ld-mach-o を見てた。 クラッシュしてるところはどうも strcmp の中らしい。

gdb の reverse-stepi とかあのへんはじめて使ったけど、 さっさとクラッシュしてるようなケースだと便利だなぁ… と気付いた。 実益ないとバカにしてた record だけど、 まぁなんか使いかたあるかもなぁとか思いはじめてきた。

なかなかクラッシュしてくれないプログラムを考えると、 「クラッシュするちょっと前」を探してそこから record してくれると嬉しい。 しかしこれはどう考えても簡単じゃない。

たぶんタイマーみたいなのを仕込んで、 時々止めてみて rip を記録して、 次回は最後に止まったところで止めて record を仕込んで…とか考える。 ただその止まるようなところはどうせ何度も通るようなパスなんですねー。

はてさて

あと raw_write が TCC で動かないのがムカついたので インラインアセンブラをいじりはじめる。 raw_write は動いた。 r8 から先が全く対応されてないのでなんとかしたい、気がする。

(00:01)

_ ゴルフ場

ファイル保存可能問題がふたたび。

どうも /var/lib/php5 と /var/cache/common-lisp-controller が writable だったようだ。

これらはなんか writable であるべきってことで writable ぽいんだけど、 とりあえず hello world くらいなら php も clisp も 755 で動いてやがるので、とりあえずこれでいいかと放置。

問題あればおしえてください

(11:58)


2025年
1月
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 31
1.kosaki(2014-05-24 03:41) 2.shinh(2014-05-24 03:41) 3.ukzk(2014-05-24 03:41)
search / home / index

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

shinichiro.hamaji _at_ gmail.com / shinichiro.h