gpt4 book ai didi

math - 如何在 AEM Sightly 中实现汉诺塔

转载 作者:行者123 更新时间:2023-12-03 22:25:56 25 4
gpt4 key购买 nike

我正在尝试实现递归算法解决汉诺塔
Sightly 中的问题。我知道这种方法可能没有很多明显的
实际应用,我把它当作一个谜。我最终得到了一些东西
像这样:

<sly data-sly-template.step="${@ n, src, aux, dst}" data-sly-unwrap>
<sly data-sly-test="${n > 0}" data-sly-unwrap>
<sly data-sly-call="${step @ n = (n-1), src = src, aux = dst, dst = aux}" data-sly-unwrap/>
${src} -> ${dst}<br/>
<sly data-sly-call="${step @ n = (n-1), src = aux, aux = src, dst = dst}" data-sly-unwrap/>
</sly>
</sly>

<sly data-sly-call="${step @ n = 3, src = 'A', aux = 'B', dst = 'C'}" data-sly-unwrap/>

但是,它无法编译,因为 Sightly 不支持算术
运营商如 - .我不需要从 3 数到 0,我们可以这样做
相反的方式,因为方向在这里并不重要。我只需要一些
一种具有以下功能的计数器:
  • 我们可以增加或减少它,
  • 我们可以检查是否等于零或某个常数。

  • 我想过使用字符串。空字符串为零,'x' 为
    1,'xx' 将是 2,依此类推。我们可以检查一个字符串是否等于
    号码 ( n == 'xxxx' )。我们甚至可以增加它,使用 Sightly stringformatter :
    ${'x{0}' @ format = [n]}

    但是,上面的表达式不能用作参数 data-sly-call或在 data-sly-test .我们只能显示它
    立即且无法进行进一步处理。

    如果有我可以使用的计数器,你有什么其他想法吗?

    最佳答案

    使用空嵌套数组:[]是 0, [[]]是 1, [[[]]]是 2,等等。
    n是一个数字:

  • n[0]递减它(当我们得到内部数组时),
  • [n]增加它(因为我们用一个新数组包裹 n),
  • data-sly-test将接受所有 n > 0(至少两个左括号)。

  • n=3 的工作代码如下所示:
    <sly data-sly-template.step="${@ n, src, aux, dst}" data-sly-unwrap>
    <sly data-sly-test="${n}" data-sly-unwrap>
    <sly data-sly-call="${step @ n = n[0], src = src, aux = dst, dst = aux}" data-sly-unwrap/>
    ${src} -> ${dst}<br/>
    <sly data-sly-call="${step @ n = n[0], src = aux, aux = src, dst = dst}" data-sly-unwrap/>
    </sly>
    </sly>

    <sly data-sly-call="${step @ n = [[[[]]]], src = 'A', aux = 'B', dst = 'C'}" data-sly-unwrap/>

    有趣的是,这种整数的构造与 set-theoretic definition of natural numbers 非常相似。 .看来数学毕竟在网络开发中很有用!

    关于math - 如何在 AEM Sightly 中实现汉诺塔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544676/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com