2006-01-01から1年間の記事一覧

すっかり忘れてた

C

この前の問題はC++では解けません。なぜならC++では「式の中で新しい型を定義してはいけない」と決まってるからです。大ヒントだね。

某所にも書いたけど

C

int main() { int A = 1; { sizeof(EXP); printf("%d\n", A); } return 0; }が、100を出力するような式EXPは何か?簡単だよね(ぉ マクロとか使っちゃだめだよ

Cの型宣言

C

Cの宣言から型が何かを読み解くのって難しいですよね。 えっ、もう何を見せられても読める自信があるって?当然 void (*signal(int, void (*)(int)))(int);これくらいは読めるよね。じゃあ typedef int t; t foo(t (t));この foo の型は何だろう? t hoge_1(…

C

id:kikx:20061106 の続き short x = 1; unsigned char y = 1; issigned(x) ==> 1 issigned(y) ==> 0みたいに左辺値だったら、 int issigned_data = -1; #define issigned_char(x) ((&x)[(int)&issigned_data-(int)&x] < 0) #define issigned(x) (sizeof(x)==…

EC

ようするに体と方程式を としたときに、集合 に加法をうまく定義すると、不思議なことに有限生成アーベル群ができるということだ。のときが出発点なのだろうが、最初にこの群を発見した人は、どういった気持ちで をがんばって書き下して証明できたんだろう…

サイコロを2個…

サイコロを2個振ると、起こりうる結果は36通りある。 そして、それぞれの結果が起こる確率は1/36である。 これは、36通りの結果が同様に確からしく起こるからである。 では、なぜ36通りの結果が同様に確からしく起こるのであろう? それは、サイコロAの結果…

The smallest Linux ELF binary to print ’Hello world!’

BITS 32 ORG 0 DB 0x7F entry: inc ebp dec esp inc esi mov dl, 14 mov cl, hello xor dword [ecx], 0x6C4D6549 inc ebx push dword 0x00030002 mov al, 4 int 0x80 add [eax], eax add [eax], al sbb [eax], al add [eax], al sbb [eax], al add [eax], al…

どこにHello, world!をいれたのかだって?

どこにも入ってませんよ。ほら kik@as305:~/work/codegolf/hello$ strings small-hello.bin 1HDl no, world!結果的にそうなっただけなんだけどね。

わーくあらうんど

kik@debian:~$ ls -l small-hello.bin -rwxr-xr-x 1 kik kik 59 2006-08-26 19:44 small-hello.bin kik@debian:~$ ./small-hello.bin Hello, world!p_offset+p_fileszをページ境界に合わせたら直った。

どうも

mmapに失敗してるっぽい。 execがどのようにmmapするかというと、 p_offset をページ境界まで切り捨てる。 p_offset+p_filesz をページ境界まで切り上げる。 上を含むページをp_vaddrをページ境界まで切り捨てて、そこにマップ うちの環境だけp_fileszがでか…

よく考えてみると

私の使ってるLinux箱はかなり過激な構成なんだよなあ… うちでやると kik@as305:~/work/codegolf/hello$ uname -a Linux as305.localdomain 2.6.15.6 #1 PREEMPT Mon Mar 13 00:33:25 JST 2006 i686 pentium3 i386 GNU/Linux kik@as305:~/work/codegolf/hello…

さすがにここまでか?

kik@as305:~/work/codegolf/hello$ ls -l tiny-hello.bin -rwxr-xr-x 1 kik users 59 2006-11-10 08:35 tiny-hello.bin kik@as305:~/work/codegolf/hello$ ./tiny-hello.bin || echo error Hello, world! kik@as305:~/work/codegolf/hello$ 「!」をとると1B…

x86への愛は足りてますか?

kik@as305:~/work/codegolf/hello$ make nasm -o small-hello.bin small-hello.asm && chmod +x small-hello.bin kik@as305:~/work/codegolf/hello$ ls -l small-hello.bin -rwxr-xr-x 1 kik users 63 2006-11-09 21:12 small-hello.bin kik@as305:~/work/co…

Switchboard

m9(^Д^)プギャー!! 1st kik 70 Ruby 10,000 (v8)

なんか答えきぼんぬされたので、 StackError load$0{}[$*<<$*] quine _=';$><<["_=",_,_]*(""<<-~?&)';$><<["_=",_,_]*(""<<-~?&)引用符が二種類あるからCより楽だね(たぶん。と思ってたんだけど、改行ありなら $><<[__=<<_,__,'_'] $><<[__=<</_,__,'_']>

C

Cで符号付かどうかを判定するマクロを書くというのは有名な問題なわけですが、例えば issigned(char) ==> charが符号付ならば1、そうでないなら0 issigned(short) ==> 1 issigned(unsigned int) ==> 0のような結果を返すマクロなら簡単に書けるわけです。 #d…

連休

連休中にSHA-256縮めようと思ってたのに、FF3ずっとやってたら縮まんかった。 mameが圧縮するといいというのでコード書きたかったけど、めんどい…

無限ループは id:shinichiro_h:20061030#1162211956 はまあこんな感じでしょう。いろいろ考えててふと思いついたのだが 「stack level too deep (SystemStackError)」 このエラーを発生させるコードを書くというお題は面白いかも。 記号ゴルフ・通常ゴルフど…

というわけで、 StackError 記号だと0H10Bが最小? 全てだと6B (これは使っていい関数なのか?) 無限ループ 記号でメモリ食いはk.inaba氏の0H10B 記号でメモリ食わずはk.inaba氏の3H?B 私が考えてたメモリ食わずは、(" ".."_").all?{|_|_[/./]=$/} なループ…

新しい問題であるところのライフゲームに手を出した。 最初に書いたコードはスピードが遅すぎてあちょーだったので、真面目に考えて書き直す。 とりあえず100倍スピードアップした。途中で、誘惑に負けて状態を一個のBigIntegerに放り込んでみるとどうなるか…

四元数を使って三次元の回転を計算できるわけだが、なんかの講義で四元数体はなんとか群の二重被覆で〜、随伴表現が〜、とかそういう話を聞いた記憶がある。 微分幾何はすでに終わった学問らしく、講義もあまりなかったのでさっぱり勉強してないわけで、簡単…

線型代数

なんかcodegolfしか内容がないとかいわれてる気がするので、

Switchboard

だめだ。さっぱりわからん。方針が全然違うのか?

とりあえず適当に実装したら520Bだったのをこつこつ縮めた。最後につけるビット数を半分にけちったらテスト通らなかった。 なんでこんなとこだけ真面目にテストされるんだくそぅ。

うわっ、ここだけ右シフトだった。すげー時間無駄にした。

Switchboard

1st kik 72 Ruby 10,000 (v5) 2nd kinaba 72 Ruby 10,000 (v7) ついに追いつかれた。三日間考えていたところによると、もう縮まないので抜かれることはあるまい。

id:shinichiro_h:20061024#1161643404 のとこの記号ゴルフ安直に Hello World! 92バイト、アルファベットなし __=?(+_=?"+?";$><<(''<

パスカルの三角形 いつのまにか43Bが登録されている。しかし、これはさっぱり思いつかんのう。出力部分の小細工ではなさそうなので、配列のまわし方を考え直すかなあ。 Switchboard 二日たっても抜かれていない。みんな77Bで止まってる! 77Bの壁を越えると…

SwitchBoard 新しい問題が追加された。 とりあえず、解いてみると77バイトのコードができたので登録しておく。 朝見たら、k.inaba氏の74バイトに抜かれていたので、75バイトまでは追いついておくが、これ以上縮むとは思えん…と思っていたら、72Bまで縮んでト…

素因数分解 いつのまにかshinh氏に抜かれていたので、追いついておく。通る可能性がどんどん低くなっていく… でもこれ以上は縮まないよね。