迭代朱莉娅的所有可能性

duk*_*reg 2 julia

如果我想在每对字母上做一些事情,它可能在朱莉娅看起来像这样:

for l1 in 'a':'z'
    for l2 in 'a':'z'
        w = l1*l2
        # ... do something with w ...
    end
end
Run Code Online (Sandbox Code Playgroud)

我希望将此概括为任意长度的单词,给定一个n指定所需字母数的值.我如何在朱莉娅中做到最好?

Bog*_*ski 5

您可以使用:

for ls in Iterators.product(fill('a':'z', n)...))
    w = join(ls)
    # ... do something with w ...
end
Run Code Online (Sandbox Code Playgroud)

特别是如果你想在数组中收集它们,你可以写:

join.(Iterators.product(fill('a':'z', n)...))
Run Code Online (Sandbox Code Playgroud)

或将其展平为矢量

vec(join.(Iterators.product(fill('a':'z', n)...)))
Run Code Online (Sandbox Code Playgroud)

但请注意,在大多数情况下,这不是必需的,对于更大的情况n,最好不要实现输出,而只是按照上面的建议迭代它.