[心得] 換頭術

看板Mathematica作者 (Hysterisis)時間12年前 (2012/12/03 19:52), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
NestWhile 跟 NestWhileList 的輸入長得一模一樣,只有輸出不同 i.e. 前者給的是 Last[後者] 以範例來講 NestWhile[#/2 &, 1234, EvenQ] 617 NestWhileList[#/2 &, 1234, EvenQ] {1234, 617} 於是我就想說 有沒有可能實作一個函數 g[n_][r_]:=func[#/2 &, n, EvenQ] 當r=1時func換成NestWhile, r=2時換成NestWhileList 實務上可以直接加個Last@ 結果一樣 不過這篇的重點是也有換掉函數的頭(Head)這種獵奇(?)作法 之一 g[n_][r_] := func[#/2 &, n, EvenQ] /. func -> Which[r == 1, NestWhile, r == 2, NestWhileList] 因為並沒有另外定義func,所以不換掉之前不會evaluate正好 之二 g[n_][r_] := Which[r == 1, NestWhile, r == 2, NestWhileList][#/2 &, n, EvenQ] 直接把Which[]一坨放前面,沒想到神奇的可以作用 寫成這樣似乎不必在意計算順序的問題,太好了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.121.239 ※ 編輯: jurian0101 來自: 140.112.121.239 (12/03 19:56)

12/03 21:19, , 1F
好酷...
12/03 21:19, 1F
文章代碼(AID): #1Gl9AMCK (Mathematica)
文章代碼(AID): #1Gl9AMCK (Mathematica)