با سلام
تعداد این حالت ها رو می شه به این صورت محاسبه کرد:
شما abc رو به صورت axbxc در نظر بگیرین. حالا برای متغیر x دو حالت وجود داره؛ یا مقدار اون . هست یا وجود نداره و چون هر یک از x ها ۲ حالت دارن، پس طبق اصل ضرب تعداد کل حالت ها می شه ۲×۲. (البته اگه حالت بدون هیچ نقطه رو نخواین در نظر بگیرین، می شه ۲×۲ − ۱)
در حالت کلی هم می شه گفت، تعداد این حالت ها ۲ به توان n-1 هستش که n تعداد حروف های کلمه است. (و در نتیجه n-1 می شه تعداد فاصله ی بین حروف)
یا اگه خود کلمه رو حساب نکنین می شه:
2^(n-1) - 1
برای نوشتن این حالات من نرم افزار آماده ای نمی شناسم ولی می تونین خیلی ساده برنامه اش رو بنویسین. برای مثال در پایتون :
#!/usr/bin/env python3
def permutation(string):
combination = set([string])
for i in range(1, len(string)):
for first in permutation(string[:i]):
for end in permutation(string[i:]):
combination.add(first + '.' + end)
return combination
print(permutation('Danoosh'))
که خروجی زیر رو می ده:
{'D.an.oosh', 'Dan.oo.s.h', 'D.a.noo.s.h', 'Da.no.o.sh', 'D.a.n.o.osh', 'D.a.n.o.os.h', 'Da.no.o.s.h', 'Dan.o.os.h', 'D.a.n.oos.h', 'Da.n.oo.s.h', 'Danoosh', 'D.a.n.oo.sh', 'D.an.o.o.sh', 'D.anoos.h', 'D.a.noos.h', 'Da.noos.h', 'Da.n.o.o.s.h', 'Dan.oosh', 'Dan.oo.sh', 'Dano.osh', 'Dano.o.s.h', 'Danoo.sh', 'Da.n.o.o.sh', 'D.a.no.osh', 'D.a.noo.sh', 'Dan.oos.h', 'Da.no.osh', 'D.an.oo.sh', 'D.a.n.o.o.s.h', 'D.anoo.sh', 'Dan.o.o.s.h', 'Da.noosh', 'D.anoosh', 'D.ano.osh', 'Da.noo.s.h', 'Dano.o.sh', 'D.ano.o.sh', 'D.a.no.o.sh', 'Danoos.h', 'D.anoo.s.h', 'D.an.o.o.s.h', 'D.a.no.os.h', 'D.a.no.o.s.h', 'Da.n.o.osh', 'Dano.os.h', 'D.an.oos.h', 'D.an.o.os.h', 'Da.n.oosh', 'Da.noo.sh', 'Da.n.oos.h', 'D.a.n.o.o.sh', 'Da.no.os.h', 'Dan.o.o.sh', 'D.ano.o.s.h', 'Da.n.oo.sh', 'Da.n.o.os.h', 'D.a.n.oo.s.h', 'D.an.oo.s.h', 'Danoo.s.h', 'D.ano.os.h', 'D.an.o.osh', 'Dan.o.osh', 'D.a.noosh', 'D.a.n.oosh'}
و تعداد اون رو می شه به صورت زیر چک کرد :
print(len(permutation('Danoosh')))
که جواب ۶۴ هستش که با محاسبه ی ریاضی که اول انجام داده بودیم، یعنی ۲ به توان (۷−۱) هم، همخوانی داره.