Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

C

換字暗号

CodeIQに基本情報技術者試験の午後問題が出ていたので解いてみました。基本情報の過去問を解くのは数年ぶりです。 【C】IPA 情報処理技術者試験にチャレンジしよう(H27春/基本/午後過去問) | CodeIQ 2015h27h_fe_pm_qs.pdf (42ページ) せっかくなので、実…

機械学習と深層学習

今は第3次人工知能ブームということで、その波に乗り遅れないようにと、以下の本を読んできました。 東大准教授に教わる「人工知能って、そんなことまでできるんですか?」 人工知能 人類最悪にして最後の発明 人工知能は人間を超えるか 脳・心・人工知能 数…

Beyond Interaction ―メディアアートのためのopenFrameworksプログラミング入門

最近、プログラミング教育という言葉をよく耳にするようになってきました。今を生きる若者にとって、読むこと、書くことと同等にプログラミングの素養があることが今後さらに重要になってくるような気がします。 プログラミング言語の勉強と聞くと、for文を…

Interactive Programming in Cの簡易化

「Interactive Programming in C « null program」では、実行中のプログラムを止めることなく、読み込んだ共有ライブラリに変更があったとき、ロードし直す方法が、ライフゲームを題材にして説明してあります。実際、やってみましたが、ライフゲームの実行中…

リーダブルコード

非常に読みやすい本で、ほとんど理解できた思います(多分)が、今すぐ書かれていること全てを実践に活かすほど自分の知識として定着していないと思います。時間をおいて何回か読み直し、少しずつでも本書で紹介されているようなコードが書けるようになること…

Problem 191

Project EulerのProblem 191(日本語)です。 「ProjectEuler Problem 191 - peanutsjamjamの日記」を参考に解いています。30bitの数をカウントしていくとき、3連続1の最後の位に1を足す方法は結構、効果的でした。Cでの実行時間で、3分強だったのが20秒程に短…

Problem 145

Project EulerのProblem 145(日本語)です。 力づくの方法でRubyで書いたのですが、なかなか実行が終りませんでした。Cで書くと30秒ほどで解が求まりますが、Fornumを見ると、pencil and paperで解答を導かれている方も多いですね。 145.rb 145.c

OpevCVで顔認識

Mac C

2010-11-01(Mon)にインストールしたOpenCVを使って顔認識をやってみました。こんな高度なことが自分にできるのだろうかと思いインストールをしてから半年も手をつけていませんでしたが,やってみると簡単でした。 face.c opencv.jp - OpenCV: 物体検出(Obje…

C++プログラミング入門

『C++プログラミング入門』を読み終えました。C++の本を読むのは15年ぶりくらいです。そのときは,途中で読むのを諦めてしまいました。今回も途中で読み進められなくなるのではと心配しましたが,最後まで読むことができました。 最後まで読むことができた理…

OpenCVのインストール

Mac C

今まで,画像処理にはあまり興味を持っていませんでしたが,OpenCVを使うと面白そうなことが出来そうということで,さっそくMac OS X環境にインストールしてみました。以下を見ると, http://hirokikana.blogspot.com/2008/09/mac-os-x-leopardopencv.html h…

安定結婚問題

『アルゴリズムC〈第3巻〉グラフ・数理・トピックス』の34章に安定結婚問題という面白そうな問題がありました。男性N人,女性N人がいて,男性も女性もそれぞれ異性に対して高感度をランキングし,その中で結婚相手を探しN組のカップルを決定するという問題で…

多倍長整数

平成21年秋季基本情報技術者試験の午後問題9では,多倍長整数の問題が出題されています。大学1年の頃のレポートの課題(言語はPascalだったと思う)であったなぁと懐かしくなったので,やってみました。というか,そのまま入力しました。 h21a_fe_pm9.c #inclu…

ジャンプテーブルについて

『Write Great Code〈Vol.2〉低いレベルで考え高いレベルで書く』の第14章を読んでいます。その中の「14.6.2 ジャンプテーブルと一連の比較」は,こんな書き出しで始まります。 switch/caseステートメントは,if..then..elseifのシーケンスよりも読みやすく…

OpenMP(2)

昨日に引き続き、OpenMPについて勉強してみました。Googleで調べてみると、結構、OpenMPについて参考になる文書が検索できます。昨日は、筑波大学のPDFファイルを、今日は、九州大学の以下のPDFファイルを参考にさせてもらいました。 OpenMP入門(1) 以下は、…

OpenMP

7/16の日記に、『まつもとゆきひろ コードの世界?スーパー・プログラマになる14の思考法』を読んだ感想として、「第10章 プログラムの高速化と並列化」が一番興味深かったと書きました。本章の最後に、「2つの法則」というコラムがあるのですが、その中で、…

構造体について

現在,『Write Great Code〈Vol.1〉ハードウェアを知り、ソフトウェアを書く』に引き続き,『Write Great Code〈Vol.2〉低いレベルで考え高いレベルで書く』を読んでいます。 全部で16章構成ですが,第9章の「配列データ型」まで読み進めてきました。読み進…

不思議なような不思議でない話

C

foo.c 以下をコンパイルして実行すると…, #include <stdio.h> int main(void) { char *str1 = "abcdefg"; char *str2 = "abcdefg"; char str3[] = "abcdefg"; char str4[] = "abcdefg"; printf("str1 = %p\n", str1); printf("str2 = %p\n", str2); printf("%d\n", s</stdio.h>…

コールグラフ

以前からコールグラフを書いてみたいと思っていたのですが,どうやって書けばいいのか,全く検討もつきませんでした。ところが,最近になって,小さな点となって散らばっていた知識が線となってつながり始めたような感じで,こうやればコールグラフが書ける…

Unable to build the vmhgfs module.

Mac OS X + VMware Fusion + Ubuntu 9.04な環境で,ファイル共有を行おうと,vmware-toolsのインストールをしたのですが,vmhgfsモジュールのコンパイルで失敗してしまいます。 googleで調べたところ,参考ページを見つけました。以下です。 http://communit…

メモリ階層を意識したソフトウェアの作成

現在,『Write Great Code〈Vol.1〉ハードウェアを知り、ソフトウェアを書く』を読んでいます。全部で12章構成ですが,何ヶ月もかけて,やっと,第11章の「メモリのアーキテクチャの構成」まで読み進めてきました。「11.8 メモリ階層を意識したソフトウェア…

たらい回し関数(続・続き…)

Mac C

2009年2月3日の日記に対して,nobsunさんから 実行速度の比較をするなら、一つのパラメータでの計算時間だけじゃなくて、パラメータを増加させながら、計算時間がどう変化するかを比較したほうがいいと思いますよ。tarai関数の場合メモ化するよりも、遅延評…

たらい回し関数(続き…)

Mac C

2009年1月30日の日記にたらい回し関数について書きました。Haskell, Scheme(Gauche)について書いたのですが,C言語ではどうかということで取り組んでみました。たらい回し関数のように,処理を次々にたらい回しにしていく関数を高速化するには, メモ化 遅延…

コラム8

『珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造』のコラム8は「アルゴリズムデザインのテクニック」です。 その中で,以下のような問題がありました。 今,n要素の浮動小数点数の配列xを入力とし,配列xの連続した要素(部分配列)でその和が…

mfcalc

http://d.hatena.ne.jp/rahaema/20080611 でつまずいていた http://www.mi.s.osakafu-u.ac.jp/~kada/course-kitami/j3_03/bison.pdf の「2.5 練習問題」(3)に再チャレンジ。 (3)初期化されていない変数について、値を書き込むのではなく、値を使おうとすると…

mfcalc

昨日に引き続き、bisonを学習。 http://www.mi.s.osakafu-u.ac.jp/~kada/course-kitami/j3_03/bison.pdf の「2.5 練習問題」をやってみました。(1),(2)は解けたのですが、 (3)初期化されていない変数について、値を書き込むのではなく、値を使おうとするとエ…

逆ポーランド記法電卓

今日は、趣を変えてbisonをやってみました。学生時代にやったことはあるのですが、すっかり忘れてしまっています。http://www.mi.s.osakafu-u.ac.jp/~kada/course-kitami/j3_03/bison.pdf を参考に、逆ポーランド記法電卓を作成しました。rpcalc.y /* 逆ポー…

CPUの数

C

CPUの数は,以下のようにして求めることができるんだそうです。 #include <stdio.h> #include <unistd.h> int main() { int cpu_cnt; cpu_cnt = sysconf(_SC_NPROCESSORS_CONF); printf("%d\n", cpu_cnt); return 0; } しかし,Linux上で, % man sysconf としてみても,_SC_NPR</unistd.h></stdio.h>…

n元1次方程式

C

H18年秋季基本情報技術者試験の午後の問3*1を解いてみました。 /* * H18秋午後 問3 */ #include <stdio.h> void gauss(int n, double *a[], double *b, double *x); void answer_print(int n, double *x); int main() { int i, j, n; double **a; double *b; double *</stdio.h>…

逆ポーランド記法

C

H15年春季基本情報技術者試験の午後の問4*1を解いてみました。 #include <stdio.h> #define TRUE 1 #define FALSE 0 #define MAX 128 double calc(char ex[], int lp); void push(double t); double pop(void); double stack[MAX]; int sp = 0; int main() { char buf</stdio.h>…

C C

昨日の結城浩さんの既約分数クイズ*1の続きです。昨日は、配列を用いて、プログラムを作成したが、あまりにもメモリ効率が悪いので、連結リストを用いたものを作成。 #include <stdio.h> #include <stdlib.h> typedef struct { int up; int down; } Fraction; typedef struct fr</stdlib.h></stdio.h>…