gpt4 book ai didi

arrays - J 和 L 系统

转载 作者:行者123 更新时间:2023-12-02 06:32:57 24 4
gpt4 key购买 nike

我将创建一个可以从 L-system 生成字符串的程序语法。

Astrid Lindenmayer 用于模拟藻类生长的原始 L 系统是:

variables : A B  constants : none  axiom     : A  rules     : (A → AB), (B → A)

which produces:

iteration | resulting model        0 | A        1 | AB        2 | ABA        3 | ABAAB        4 | ABAABABA        5 | ABAABABAABAAB

that is naively implemented by myself in J like this:

   algae =: 1&algae : (([: ; (('AB'"0)`('A'"0) @. ('AB' i. ]))&.>"0)^:[) "1 0 1
(i.6) ([;algae)"1 0 1 'A'
┌─┬─────────────┐
│0│A │
├─┼─────────────┤
│1│AB │
├─┼─────────────┤
│2│ABA │
├─┼─────────────┤
│3│ABAAB │
├─┼─────────────┤
│4│ABAABABA │
├─┼─────────────┤
│5│ABAABABAABAAB│
└─┴─────────────┘

分步说明:

   ('AB' i. ]) 'ABAAB' NB. determine indices of productions for each variable
0 1 0 0 1
'AB'"0`('A'"0)@.('AB' i. ])"0 'ABAAB' NB. apply corresponding productions
AB
A
AB
AB
A
'AB'"0`('A'"0)@.('AB' i. ])&.>"0 'ABAAB' NB. the same &.> to avoid filling
┌──┬─┬──┬──┬─┐
│AB│A│AB│AB│A│
└──┴─┴──┴──┴─┘
NB. finally ; and use ^: to iterate

以此类推,这是 L-system that generates Thue–Morse sequence 第 4 次迭代的结果

   4 (([: ; (0 1"0)`(1 0"0)@.(0 1 i. ])&.>"0)^:[) 0
0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0

这是迄今为止我能做的最好的事情。我认为装箱-拆箱方法在这里是不够的。这是我第一次错过 J 中的链表 - 如果没有它们,编写语法就会困难得多。

我真正想的是:
a) 构建构建最终字符串的函数的动名词列表(在我的示例中,这些函数是像 'AB'"0 这样的常量,但在树建模函数中是海龟图形命令)并调用( `:6) 它,
或者我能够编码的东西:
b) 构建一串合法的 J 句子,构建最终字符串并执行 (".) 它。
但我不确定这些程序是否有效。

  • 您能告诉我更好的方法吗?

任何有关a)b)的提示和评论都将受到高度赞赏!

最佳答案

以下代码将用空格填充矩形数组:

   L=: rplc&('A';'AB';'B';'A')
L^:(<6) 'A'
A
AB
ABA
ABAAB
ABAABABA
ABAABABAABAAB

或者,如果您不需要填充:

   L&.>^:(<6) <'A'
┌─┬──┬───┬─────┬────────┬─────────────┐
│A│AB│ABA│ABAAB│ABAABABA│ABAABABAABAAB│
└─┴──┴───┴─────┴────────┴─────────────┘

显然,您需要检查 rplc/stringreplace 以了解幕后发生的情况。

关于arrays - J 和 L 系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974335/

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