Befunge詳解
09-11
Befunge詳解
之後呢,將!dlrow ,olleH裝入棧,這時你的棧就有了一個反著的HW複製H後進入_,此時棧如下
之後只要頂上那個傢伙不是0,就彈出一個值(_的比較)
來自專欄編程語言專欄
你無法相信這是一個隨機數生成器代碼
v>>>>>v 12345 ^?^ > ? ?^ v?v 6789 >>>> v^ .<
之前看不懂的代碼是天書,這次怎麼變天圖了?
來來來,莫驚慌指針?
由於這是個二維代碼,就需要代碼指針瘋狂的走圖(利用一個指針將代碼掃過一遍運行)。在這裡,我們假設有一個沙雕指針po走圖,這時,指針符派上了用場> 讓po往右走< 讓po往左走
^ 讓po往上走
v 讓po往下走
? 讓po隨機走
_ 在棧中彈出a,若a=0則往右,否則往左
| 同上,但a=0時往下走,否則往上走
當然,整個代碼從左上角開始,且po一開始都是往右走的運算?
當然,加減這些東西是不能少的假設現在從棧(又是它!)中依次彈出a,b,那麼將下面的結果壓入棧:+ a+b- b-a
* a*b
/ b/a(四捨五入到個位數)
% b%a(不懂取模的出門左轉OK?)
比較?
那個,比較是不可少的! 彈出a,若它不是0壓入1,否則壓入0` 依次彈出a,b,若b>a壓入1,否則壓入0
丟入?
不把東西丟進棧里你還能計算?"" 中間是字元串,進入了"就按方向依次收集字元並將ASCII壓入棧,到另一個"為止 0-9 識別數字,只識別一個就將值壓入棧
棧頂?
為棧頂元素奮鬥: 將棧頂元素複製一份又丟到棧頂
交換棧頂的兩個元素
$ 彈出棧頂元素後直接不管它
修改?
如何修改代碼(驚)?這裡假設代碼長這樣0,0 0,1 0,21,0 1,1 1,2
2,0 2,1 2,2
之後p 依次彈出y,x,v後將代碼x,y改為字元v
g 依次彈出y,x後壓入代碼x,y的字元
IO?
輸入輸出是必須的. 輸出棧頂元素的值並彈出, 輸出棧頂元素所對應的ASCII字元並彈出
& 輸入一個整數並壓入棧
~ 輸入一個字元並將ASCII值壓入棧
其他?
#和 (<<這是個空格) 按現在的方向走,不回頭~@ 結束程序吧!程序猿:什麼?
例子?
先看看HW>25*"!dlrow ,olleH":v v:,_@ > ^
之後呢,將!dlrow ,olleH裝入棧,這時你的棧就有了一個反著的HW複製H後進入_,此時棧如下
頭
H --- H --- e --- l --- l --- o --- , --- (空格) --- w --- o --- r --- l --- d --- ! ---之後只要頂上那個傢伙不是0,就彈出一個值(_的比較)
之後再彈出一個值並輸出ASCII字元
於是這一個字元就被輸出和清空了然後,再將下一個字元複製一遍,重複循環,就可以輸出Hello, world!感覺很好玩
自己去試一試理解隨機數生成器吧!推薦閱讀:
※九連環的數學分析
※教案推薦:中班數學《有趣的數字》
※關於公文數學的問題?
※Axure變數函數就那麼簡單
※三角與數列的結合
TAG:數學 |