Дано конкретное число 111222. Требуется распечатать все перестановки цифр этого числа. Очевидно, что это можно сделать и в уме. Но как это сделать если цифры будут иными? То есть нужна программа.
Мне не удалось решить эту задачу, но я решил другую, ей подобную, когда цифры не повторяются и предлагаю эту программу взять за основу. Впрочем если вы найдете иное, с вашей точки зрения более простое решение, то меня это устроит...
Код:
DECLARE SUB SWEP (i!, j!)
DECLARE SUB P (k!)
CLS
DIM SHARED n
DIM SHARED x AS STRING
x = "1234"
n = LEN(x)
CALL P(1)
END
SUB P (k)
IF k = n THEN
PRINT x
ELSE
FOR i = k TO n
SWEP k, i
CALL P(k + 1)
SWEP k, i
NEXT i
END IF
END SUB
SUB SWEP (i, j)
DIM a AS STRING
DIM b AS STRING
a = MID$(x, i, 1)
b = MID$(x, j, 1)
MID$(x, i, 1) = b
MID$(x, j, 1) = a
END SUB