Gauche でファイルを読み込み、1行 or 1文字毎に処理を行う
;;; reader を使ってデータを読み込み、fn で処理を行う (define (read-with-function reader fn) (lambda () (let loop ((val (reader))) (cond ((eof-object? val) ‘()) (else (fn val) (loop (reader))))))) ;;; ファイルを読み込み、1行毎に処理 fn…続きを読む
;;; reader を使ってデータを読み込み、fn で処理を行う (define (read-with-function reader fn) (lambda () (let loop ((val (reader))) (cond ((eof-object? val) ‘()) (else (fn val) (loop (reader))))))) ;;; ファイルを読み込み、1行毎に処理 fn…続きを読む
穴掘り法という迷路作成アルゴリズムを使って、迷路を作成するプログラムを 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 版 を "「人材獲得作戦・4 試験問題ほか」を解いてみた(2) | 山本隆の開発日誌" で紹介されていた "通った経路に文字を埋めてゆく方法" で書いてみた。 今回はマップのデータを文字のリストから成る行リストで作る。 隣接する座標に一歩づつ移動して経路を記録して文字を埋めてゆき、ゴールが見つかった時点で call/cc…続きを読む
最短経路探索プログラムの問題を、今度は Gauche で解いてみた。 こちらは、スタートからの移動距離を記録してゆき、ゴールから戻るかたちで最短経路にマークを付けてゆく方法で作った。 マップ座標(x, y)をキーにするハッシュテーブルでマップデータを作り、マップ上の "文字"、移動先の"座標リスト"、スタートからの"移動距離" を値とした…続きを読む
"Latest topics > カード配り問題 – outsider reflex" や "10分プログラミング – hogehoge" を見て、自分も "10分でコーディング|プログラミングに自信があるやつこい!!" をやってみた。 カード枚数が足りない場合を考えていたら20分かかってしまった・・・ var d…続きを読む
Impromptu: Scheme ベースのライブコーディング環境 – Radium Software Scheme でリアルタイムにコードを書きながら音楽を作っている。 ryukyu がいい。 おもしろいな。
CSV ファイルのレコードに重複するカラムがある場合に、そのレコードを削除する Gauche スクリプト。 以下のコードでは *check-column-index* を定義して2番目のカラムでの重複をチェックしている。 (use text.csv) (use gauche.collection) (use srfi-13) (define *check-column-index* 1) (def…続きを読む
Gauche でクイックソートを利用して CSV 形式のデータをソートする。 クイックソートについては、"M.Hiroi’s Home Page / お気楽 Scheme プログラミング入門" を参考にした。 この例では、CSV ファイルの読み込みは省略して、リスト化されたダミーデータを定義して使っている。 CSV ファイルの読み込みについては、"Gauc…続きを読む
make-csv-reader で、入力ポートを引数とする手続きを作る。 この手続きはポートからレコードを1つ読み込み、フィールドのリストを返す。 port->list を使って、返されたフィールドのリストをリストに追加していく。 (use text.csv) (define (read-csv file) (let ((reader (make-csv-reader #\,))) (cal…続きを読む
file.util モジュールを使って、いろいろなディレクトリ操作をする。 (use file.util) ホームディレクトリを調べる (home-directory) gosh> "/Users/hoge" カレントディレクトリを調べる (current-directory) gosh> "/Users/hoge" ディレクトリを移動する 移動…続きを読む