Given a list of letters,
letters = { "A", "B", ..., "F" }
is it possible to get Mathematica to generate all ‘words’ (in this example, 6 letter words), if only one letter can be used one time only, e.g. ABCDEF, ABCDFE, …? TIA.
Mathematica Stack Exchange is a question and answer site for users of Wolfram Mathematica. It only takes a minute to sign up.
Sign up to join this communityGiven a list of letters,
letters = { "A", "B", ..., "F" }
is it possible to get Mathematica to generate all ‘words’ (in this example, 6 letter words), if only one letter can be used one time only, e.g. ABCDEF, ABCDFE, …? TIA.
Pemutations will do it:
letters = {"a", "b", "c"};
Permutations[letters, {3}]
{{"a", "b", "c"}, {"a", "c", "b"}, {"b", "a", "c"},
{"b", "c", "a"}, {"c", "a", "b"}, {"c", "b", "a"}}
To get all six-letter words:
letters = {"a", "b", "c", "d", "e", "f"};
perms = Permutations[letters, {6}];
StringJoin /@ perms
{"abcdef", "abcdfe", "abcedf", "abcefd", "abcfde" ... etc.
there are a lot of them.
You can create permutations with all of the letters as strings with:
StringJoin /@ Permutations[letters]
If you want lists of the individual letters just use:
Permutations[letters]
Check the documentation of Permutations to learn about permutations with subsets of letters. If you want to use each letter more than once, look at the documentation for Tuples.
If I follow the OP's question, I think they want the following:
letters = {"a", "b", "c"};
p = Permutations[letters, {#}] & /@ Range[Length[letters]];
(StringJoin[#] & /@ #) & /@ p
{{a, b, c}, {ab, ac, ba, bc, ca, cb}, {abc, acb, bac, bca, cab, cba}}
Map@StringJoin/@p
or Map[StringJoin, p, {2}]
.
$\endgroup$
– Doorknob
Mar 24 '19 at 22:48