Gauche 穴掘り法で迷路作成
穴掘り法という迷路作成アルゴリズムを使って、迷路を作成するプログラムを Gauche で作ってみた。 (use gauche.sequence) ; for-each-with-index (use srfi-27) ; random-source-randomize! (use srfi-19) ; date-nanosecond (use math.mt-random) ; <merse…続きを読む
穴掘り法という迷路作成アルゴリズムを使って、迷路を作成するプログラムを Gauche で作ってみた。 (use gauche.sequence) ; for-each-with-index (use srfi-27) ; random-source-randomize! (use srfi-19) ; date-nanosecond (use math.mt-random) ; <merse…続きを読む
4.3 の電卓プログラムを修正する。 演習4-10 getch, ungetch での処理を読込行文字配列のインデックスのインクリメント・デクリメントで行う。 読み込み行を外部変数 line に、読み込み文字位置を line_pos に保持する。 /* 省略 */ #define MAXLINE 1024 /* 省略 */ static char line[MAXLINE]; static int…続きを読む
フリーの PDF ファイル作成ソフトウェアの PrimoPDF を インストールして、文書を PDF 化する方法のメモ。 インストール方法 PrimoPDFのサイト からセットアップファイルをダウンロードし、ダブルクリックして実行する。 セットアップ・ウィザードが表示されるので『次へ(N) >』をクリックして続行する。 使用許諾契約に同意して『次へ(N) >』をクリックする。 インスト…続きを読む
最短経路探索プログラム Gauche 版 を "「人材獲得作戦・4 試験問題ほか」を解いてみた(2) | 山本隆の開発日誌" で紹介されていた "通った経路に文字を埋めてゆく方法" で書いてみた。 今回はマップのデータを文字のリストから成る行リストで作る。 隣接する座標に一歩づつ移動して経路を記録して文字を埋めてゆき、ゴールが見つかった時点で call/cc…続きを読む
演習4-9 #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFSIZE 100 static int buf[BUFSIZE]; /* ungetch 用のバッファ */ static int bufp = 0; /* buf 中の次の空き位置 */ static int …続きを読む
最短経路探索プログラムの問題を、今度は Gauche で解いてみた。 こちらは、スタートからの移動距離を記録してゆき、ゴールから戻るかたちで最短経路にマークを付けてゆく方法で作った。 マップ座標(x, y)をキーにするハッシュテーブルでマップデータを作り、マップ上の "文字"、移動先の"座標リスト"、スタートからの"移動距離" を値とした…続きを読む
演習4-8 char buf; /* ungetch 用のバッファ */ int getch(void) /* (押し戻された可能性もある)1文字をとってくる */ { char c = buf ? buf : getchar(); buf = ‘\0’; return c; } void ungetch(int c) { buf = c; } プログラミング言語C 第2版 ANSI規格準拠 po…続きを読む
以前読んだブログに、とある求人の際のプログラミングの実技試験についての記事(人生を書き換える者すらいた。: 人材獲得作戦・3)があった。 その時は問題内容については、『ちょっとしたパズル』としか書かれていなかったが、記事の続編が投稿されたようで、試験問題の内容が公開されていた。 人生を書き換える者すらいた。: 人材獲得作戦・4 試験問題ほか 試験問題は迷路の最短経路探索プログラム。 最初、アルゴリ…続きを読む
演習4-7 #include <stdio.h> #include <string.h> #define BUFSIZE 100 char buf[BUFSIZE]; /* ungetch 用のバッファ */ int bufp = 0; /* buf 中の次の空き位置 */ int getch(void); void ungetch(int c); void ungets(…続きを読む
4.3 の電卓プログラムを修正する。 演習4-6 A-Z の各文字を変数とする。R は最近に印字された値を保存する特別な読込専用変数とする。 main 関数に変数を扱う処理を追加する。 /* 省略 */ case ‘w’: /* write variable */ push(type); break; case ‘r’: /* read variable */ push(type); break;…続きを読む