2017-09-14 115 views
2

我想圍繞編程語言Hexagony包圍我的頭。我看了幾個示例程序,並試圖編寫一個簡單的程序來讀取輸入並打印Hey [input]!。這是我的。試圖學習六角形

 , < . . C $ 
    . . { . # . ; 
    . . . # . . 2 ' 
    . . . . # C 3 < . 
. # . # . . * . ; . 
. E . . E . ; . . >/
= . . . } y . . 3 . 
    . . . . ; . . 3 . 
    . . . e $ . ; . 
    . . ; . . @ . 
    . H . . > & 

Try it online!

如果沒有輸入它打印Hey !預期。但隨着任何輸入它打印EE!。我很確定我的問題是我不明白內存指針如何在六角網格上工作。我假設我的代碼在寫入值時遇到了問題,如果輸入的字符串太多,但我並不關心它。我對{}命令選擇邊緣的確切規則以及MP的方向如何受此影響感到困惑。

如果任何人都可以給我的記憶是如何工作的MP的方向如何與將不勝感激的記憶運動命令的工作示意圖

+0

爲了記錄,我設法得到了一個工作程序並縮小了它的大小:'H; e; .i .... 7 .... y; * 32; \ @><.....>,<。$ .. ' –

+0

您可以放棄最後2個時期。在六角形尾隨時期通常是不必要的。另外'* 32;'太長了,'i6;'也適用。 – user202729

+0

[28個字節](https:// tio。運行/ ## y0itSEzPz6v8/9/DOlVPL8Y8U1 @ VRK/PQC @ 60jrTzDomXk9PX8fm /// EpGQA)。 – user202729

回答

3

這裏有一個轉變更加明確的解釋:

enter image description here存儲器指針(MP)具有位置(其是存儲器網格的邊緣)和沿着該邊緣的方向。在該圖中,MP的初始位置標有紅色箭頭,因此它現在指向北方。

MP移動命令總是相對於MP的當前位置和方向。我已經根據哪個命令讓你在那裏註釋了四個相鄰的邊緣。例如,{將MP向前移動到左側,'將其向後移動到右側。

爲了弄清楚它的新方向,你可以把這個運動看作是圍繞一個相鄰的六邊形旋轉MP 60度。所以根據所選擇的命令,則MP將在以下方向指向用於上述圖:

Cmd Orientation 
{  north west 
}  north east 
"  north east 
'  north west 

此外,萬一這是混亂的一部分,請記住,存儲器網格是獨立於源網格的(所以這些不是包含命令的網格的邊緣......它只是一個單獨的,無限的六邊形網格)。

至於你的實際程序,它似乎有比內存佈局更大的問題。最重要的是,我不確定那些#在那裏做什麼:#根據當前內存值模6切換到6個IP之一。假設你的輸入是任意的,這基本上將你切換到一個隨機IP,可能不是你想要的。

我強烈建議嘗試Timwi的EsotericIDE(我也用它來生成上圖),它允許您單步執行程序幷包含內存網格的可視化。

如果您對該語言有任何疑問,我也很樂意幫助您in this SE chat room

+0

謝謝!我正在尋找的答案!就上述程序的功能而言,我想我誤解了'#'的工作原理。我問這個問題已經有一段時間了,所以我必須回顧一下這個問題,但是我會在聊天室裏找你! –