Gauche:2次元配列のプログラムの移植

Gauche:2次元配列のプログラムの移植

2次元配列のプログラムの移植

<元ソース>

#include <stdio.h>
#define MW 10
#define MH 10
int mdata[MH][MW];
int main(void) {
    int x, y;
    for (y = 0; y < MH; y++) {
        for (x = 0; x < MW; x++) {
            mdata[y][x] = y * MW + x;
            printf("%2d ", mdata[y][x]);
            if (x == MW - 1) printf("\n");
        }
    }
    return 0;
}

<移植後>

(define mw 10)
(define mh 10)
(define mdata (make-vector (* mw mh) 0))
(define (pt x y) (+ (* y mw) x))
(let loop ((x 0) (y 0))
  (set! (~ mdata (pt x y)) (+ (* y mw) x))
  (display (format "~2d " (~ mdata (pt x y))))
  (if (= x (- mw 1)) (newline))
  (cond
   ((< x (- mw 1)) (loop (+ x 1) y))
   ((< y (- mh 1)) (loop 0 (+ y 1)))))

hamayama(2017/08/12 10:19:04 UTC)(2017/08/13 04:02:16 UTC)(2017/08/15 13:10:02 UTC)

More ...