c

プログラミング言語 C 2.7

c k&r

xのビット位置 pから nビットを反転する関数 invert(x, p, n)を書けと いう問題。print_binaryというのは 2進数で表示する関数です。 #include <stdio.h> #include <assert.h> #include "util.h" static unsigned int invert(unsigned x, int p, int n); static void test_inver</assert.h></stdio.h>…

プログラミング言語 C 2.6

c k&r

位置 pから始まる nビットに yの右端の nビットをセットして、他は ビットはそのままにした xを返す setbits(x, p, n, y)を書け、という問題。 何か問題の日本語おかしい気がするのは、僕の語彙力の問題なんですかね〜? #include <stdio.h> #include <stdlib.h> #include <assert.h> stat</assert.h></stdlib.h></stdio.h>…

プログラミング言語 C 2.5

c k&r

文字列 s2の任意の文字と等しい文字列 s1の最初の文字位置を返す any(s1, s2)を書けという問題。一致しない場合は -1を返す。 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <assert.h> static int any(char *s1, char *s2); static void test_any(); int main(int argc, ch</assert.h></stdlib.h></string.h></stdio.h>…

プログラミング言語 C 2.4

c k&r

文字列 s2の中の任意の文字に等しい文字を s1から除去するような squeeze(s1, s2)を書きなさい、という問題。しかし Cだと特にテストを 書いてみるって重要な気がしてきた。なんとなくうまくいくときもある 言語なのでそこはしっかりとしないとね。 #include <stdio.h></stdio.h>…

プログラミング言語 C 問 2.3

c k&r

Cを勉強する必要が出てきたので、再勉強。 #include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<assert.h> static int htoi (char *s); static void test_htoi(void); int main(int argc, char **argv) { int answer; if (argc != 2) { fprintf(stderr, "Invalid argument number\n")</assert.h></ctype.h></stdlib.h></stdio.h>…

再帰と繰り返し

ふと再帰とそうでない場合がどの程度違うのかが気になって、 最大公約数を求めるものを書いてみたけど、全然時間が変わらなかった。 10000000回でも全然変わらない。GCCの最適化がすごいのかな。 プログラムが簡単過ぎるのかもしれないけど。最適化なしでも…

アルゴリズム

アルゴリズムってちゃんとしっておかないといけないな〜と思った。 あるプログラムのプロトタイプを Perlで書いて、早く動くようにして初めに 作ったやつより、数十倍早いものを書いたけどそれでも遅い気がする。 これ以上は閃かないから Cで書き直すぐらい…