1

これはCLojureにあります。最初は私のコードです:

;cell structure
(defstruct cell :x :y :highland :lowland :obstacle :ammo :tank)

;demension
(def dim 0)

(defn setdim [num]
  (def dim num))

;create world
(defn creatworld []
  (apply vector
         (map (fn [_]
                (apply vector (map (fn [_] (struct cell))
                                   (range dim))))
              (range dim)))) 

;initiate coordinate for structure in vector of vector
;this is not working
(defn inicoor [world]
  (map
   #(assoc % :x i :y j)
   world))

(defn inicoor [world]
  (dorun (for [i (range 0 dim)]
           (dorun (for [j (range 0 dim)] 
                    (map  
                    # (assoc (nth (nth world i) j) :x i :y j)))))))

つまり、私がやっていることは、構造の 2 次元ベクトルを使用して 2 次元の世界を作成しようとしていることです。ワールドを作成した後、最後の関数で試したように、xy 座標を実際の座標として開始したいと考えています。ただし、clojureは変数不変であるため、値を変更することはできません...また、新しいデータの2次元ベクトルを返しません...次に、マップを使用しようとしました...しかし、私は本当にclojureに慣れていません。 .. いくつか試してみてもうまくいきませんでした...

誰かがそれを行う方法を教えてもらえますか? どうもありがとう...

追加: ターゲット構造は次のようになります。

[  00 10 20 30 40 50   ]  (this is the first vector)
   01 11 21 31 41 51
   02 12 22 32 42 52
   03 13 23 33 43 53
   04 14 24 34 44 54
   05 15 25 35 45 55

そのため、最初はネストループを使用しました...これをJavaで行う最も一般的な方法は...

4

1 に答える 1