Re: [問題] 如何設定一個會變動的Parameter

看板Ruby作者 (Schelfaniel)時間16年前 (2009/06/21 19:54), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串4/4 (看更多)
※ 引述《makoto63215 (隱匿的老頭)》之銘言: : ※ 引述《makoto63215 (隱匿的老頭)》之銘言: : : 環境: : 抱歉 的確說得不清楚 : 下面這些程式碼是要模擬一個假想情況: : 在一個邊長2公里的正方形空地,亂數分佈100個人 : 每個人身上都有一個ID供辨認,然後每個人一開始都帶有固定的能量 : 然後每一次每個人動作不同, : 動作有站著不動2分鐘,原地跑步2分鐘,青蛙跳20下,伏地挺身20下..等 : 所以每個人每次消耗的能量也不一樣 根據下面的if敘述來決定做哪一種動作 : 我的用意就是要設定一個變數 找出每一次每個人身上所剩餘的能量 : 那個變數名稱是Capacity_cur 說實在我看不懂,不過我猜一下,以下程式是 clojure 就是了。 你看一下和你目前需要的差多少.... (def *initial-capacity* 40000) (defn make-playground [size] (reduce (fn [prev id] (assoc prev id {:id id :capacity *initial-capacity*})) {} (reverse (range size)))) (defn new-capacity [playground] ; 這邊計算公式先用 0 - 999 亂數 來算 capacity 的消耗 (let [old-capacity (:capacity playground) new-capacity (- old-capacity (rand-int 1000))] (printf "No %d, old-capacity %d, new-capacity %d\n" (:id playground) old-capacity new-capacity) new-capacity)) (defn simulate-playground [max-round size] (loop [playground (make-playground size), round 1] (when (<= round max-round) (printf "Round %d\n" round) (recur (reduce (fn [prev curr] (assoc-in prev [curr :capacity] (new-capacity (get prev curr)))) playground (keys playground)) (inc round))))) 執行結果,以 4 回合 4 個人來看 user=> (simulate-playground 4 4) Round 1 No 0, old-capacity 40000, new-capacity 39836 No 1, old-capacity 40000, new-capacity 39529 No 2, old-capacity 40000, new-capacity 39007 No 3, old-capacity 40000, new-capacity 39011 Round 2 No 0, old-capacity 39836, new-capacity 39032 No 1, old-capacity 39529, new-capacity 39137 No 2, old-capacity 39007, new-capacity 38351 No 3, old-capacity 39011, new-capacity 38935 Round 3 No 0, old-capacity 39032, new-capacity 38196 No 1, old-capacity 39137, new-capacity 38274 No 2, old-capacity 38351, new-capacity 37617 No 3, old-capacity 38935, new-capacity 38610 Round 4 No 0, old-capacity 38196, new-capacity 38195 No 1, old-capacity 38274, new-capacity 37643 No 2, old-capacity 37617, new-capacity 36654 No 3, old-capacity 38610, new-capacity 38197 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.74.159 ※ 編輯: Schelfaniel 來自: 114.32.74.159 (06/21 19:59)

06/21 21:17, , 1F
你又來了.... 這樣我很為難耶 XD
06/21 21:17, 1F

06/21 21:47, , 2F
就當閒聊文??
06/21 21:47, 2F
文章代碼(AID): #1AFXzl0R (Ruby)
文章代碼(AID): #1AFXzl0R (Ruby)