尝试学习六边形
Trying to Learn Hexagony
我正在努力研究编程语言 Hexagony。我看过一些示例程序,并尝试编写一个简单的程序来读取输入和打印 Hey [input]!
。这是我的。
, < . . C $
. . { . # . ;
. . . # . . 2 '
. . . . # C 3 < .
. # . # . . * . ; .
. E . . E . ; . . > /
= . . . } y . . 3 .
. . . . ; . . 3 .
. . . e $ . ; .
. . ; . . @ .
. H . . > &
如果没有输入,它会按预期打印 Hey !
。但是对于任何输入,它都会打印 EE!
。我很确定我的问题是我不明白内存指针如何在六角形网格上工作。我假设如果输入的字符串太多,我的代码会出现过度写入值的问题,但我目前还不关心这个问题。我对使用 {
和 }
命令选择边缘的确切规则以及 MP 的方向如何受此影响感到困惑。
如果有人能给我一个更明确的解释,说明内存是如何工作的,MP 是如何定向的,我们将不胜感激
这是内存移动命令如何工作的图表:
内存指针 (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。
我正在努力研究编程语言 Hexagony。我看过一些示例程序,并尝试编写一个简单的程序来读取输入和打印 Hey [input]!
。这是我的。
, < . . C $
. . { . # . ;
. . . # . . 2 '
. . . . # C 3 < .
. # . # . . * . ; .
. E . . E . ; . . > /
= . . . } y . . 3 .
. . . . ; . . 3 .
. . . e $ . ; .
. . ; . . @ .
. H . . > &
如果没有输入,它会按预期打印 Hey !
。但是对于任何输入,它都会打印 EE!
。我很确定我的问题是我不明白内存指针如何在六角形网格上工作。我假设如果输入的字符串太多,我的代码会出现过度写入值的问题,但我目前还不关心这个问题。我对使用 {
和 }
命令选择边缘的确切规则以及 MP 的方向如何受此影响感到困惑。
如果有人能给我一个更明确的解释,说明内存是如何工作的,MP 是如何定向的,我们将不胜感激
这是内存移动命令如何工作的图表:
内存指针 (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。