Task

Write a program that generates all   permutations   of   n   different objects.   (Practically numerals!)



Related tasks
 
   Find the missing permutation
   Permutations/Derangements



 The number of samples of size k from n objects.


With   combinations and permutations   generation tasks. 






 Order Unimportant

 Order Important


 Without replacement








(


n
k


)




=

n



C

k


=



n
(
n
−
1
)
…
(
n
−
k
+
1
)


k
(
k
−
1
)
…
1





{\displaystyle {\binom {n}{k}}=^{n}\operatorname {C} _{k}={\frac {n(n-1)\ldots (n-k+1)}{k(k-1)\dots 1}}}










n



P

k


=
n
⋅
(
n
−
1
)
⋅
(
n
−
2
)
⋯
(
n
−
k
+
1
)


{\displaystyle ^{n}\operatorname {P} _{k}=n\cdot (n-1)\cdot (n-2)\cdots (n-k+1)}




Task: Combinations

Task: Permutations


 With replacement








(



n
+
k
−
1

k


)




=

n
+
k
−
1



C

k


=



(
n
+
k
−
1
)
!


(
n
−
1
)
!
k
!





{\displaystyle {\binom {n+k-1}{k}}=^{n+k-1}\operatorname {C} _{k}={(n+k-1)! \over (n-1)!k!}}








n

k




{\displaystyle n^{k}}




Task: Combinations with repetitions

Task: Permutations with repetitions



  #COMPILE EXE
  #DIM ALL
  GLOBAL a, i, j, k, n  AS INTEGER
  GLOBAL d, ns, s AS STRING 'dynamic string
  FUNCTION PBMAIN () AS LONG
  ns = INPUTBOX$("   n =",, "3") 'input n
  n = VAL(ns)
  DIM a(1 TO n) AS INTEGER
  FOR i = 1 TO n: a(i)= i: NEXT
  DO
    s = " "
    FOR i = 1 TO n
      d = STR$(a(i))
      s = BUILD$(s, d) '  s & d concatenate
    NEXT
    ? s  'print and pause
    i = n
    DO
     DECR i
    LOOP UNTIL i = 0 OR a(i) < a(i+1)
    j = i+1
    k = n
    DO WHILE j < k
      SWAP a(j), a(k)
      INCR j
      DECR k
    LOOP
    IF i > 0 THEN
      j = i+1
      DO WHILE a(j) < a(i)
        INCR j
      LOOP
      SWAP a(i), a(j)
    END IF
  LOOP UNTIL i = 0
  END FUNCTION