23 lines
783 B
Plaintext
23 lines
783 B
Plaintext
ClearAll[SpacesDistributeOverN, Possibilities]
|
|
SpacesDistributeOverN[s_, p_] :=
|
|
Flatten[
|
|
Permutations /@ (Join[#, ConstantArray[0, p - Length[#]]] & /@
|
|
IntegerPartitions[s, p]), 1]
|
|
Possibilities[hint_, len_] :=
|
|
Module[{p = hint, l = len, b = Length[hint], Spaces, out},
|
|
Spaces = # + (Prepend[Append[ConstantArray[1, b - 1], 0],
|
|
0]) & /@ (SpacesDistributeOverN[l - Total@p - (b - 1), b + 1]);
|
|
out = Flatten /@ (
|
|
Riffle[#, Map[Table[1, {#}] &, p, {1}]] & /@
|
|
Map[Table[0, {#}] &, Spaces, {2}]);
|
|
StringJoin @@@ (out /. {0 -> ".", 1 -> "#"})
|
|
]
|
|
Possibilities[{}, len_] := Module[{},
|
|
{StringJoin[ConstantArray[".", len]]}
|
|
]
|
|
Possibilities[{2, 1}, 5]
|
|
Possibilities[{}, 5]
|
|
Possibilities[{8}, 10]
|
|
Possibilities[{2, 3, 2, 3}, 15]
|
|
Possibilities[{2, 3}, 5]
|