# Question:How to generate words form a NL-letter alphabet?

## Question:How to generate words form a NL-letter alphabet?

Maple

Hi

It want to generate all the words from a NL-letter alphabet and whose lengths are at most LW.

I could not find any function in the combinat package do to that (at least without combining some of them, I'm using Maple 2015 right now); maybe the Iterator package has some features do to that?

For the moment I use this procedure (which generates a few words of length LW+1 I have to suppress)

```restart:
G := proc(d)
local n, wo:
global W:
while max(length~(W)) < d do
wo := copy(W):
for n from 1 to nops(L) do
W := {W[], cat~(wo, L[n])[]};
end do:
thisproc(d)
end do:
end proc:

# Words of length not larger than LW which are made of at most NL letters

NL := 3:
L  := StringTools:-Char~([\$65..65+NL-1]);
W  := L:
LW := 3:

G(3):
w3 := W;
["A", "B", "C"]

{"A", "AA", "AAA", "AAB", "AAC", "AB", "ABA", "ABB", "ABC", "AC",

"ACA", "ACB", "ACC", "B", "BA", "BAA", "BAB", "BAC", "BB",

"BBA", "BBB", "BBC", "BC", "BCA", "BCB", "BCC", "C", "CA",

"CAA", "CAB", "CAC", "CB", "CBA", "CBB", "CBC", "CC", "CCA",

"CCB", "CCC"}

W  := L:
CodeTools:-Usage( G(12) ):
numelems(W);

memory used=0.62GiB, alloc change=422.58MiB, cpu time=13.70s, real time=8.37s, gc time=8.08s
797160
```

Words_Generator.mw

Do you have any idea to improve it from memory used and cpu time points of view)?