Permutations: Difference between revisions

Content added Content deleted
m (→‎{{header|Sidef}}: removed an unneeded semicolon)
Line 7: Line 7:
'''See Also:'''
'''See Also:'''
{{Template:Combinations and permutations}}
{{Template:Combinations and permutations}}
=={{header|360 Assembly}}==
{{trans|Liberty BASIC}}
<lang 360asm>
* Permutations 26/10/2015
PERMUTEX CSECT
USING PERMUTEX,R15 set base register
LA R9,TMP-A n=hbound(a)
SR R10,R10 nn=0
LOOPUI0 LA R10,1(R10) nn=nn+1
LA R11,PG pgi=@pg
LA R6,1 i=1
LOOPI1 CR R6,R9 do i=1 to n
BH ELOOPI1
LR R1,R6 i
LA R2,A-1(R1) @a(i)
MVC 0(1,R11),0(R2) output a(i)
LA R11,1(R11) pgi=pgi+1
LA R6,1(R6) i=i+1
B LOOPI1
ELOOPI1 XPRNT PG,80
LR R6,R9 i=n
LOOPUIM BCTR R6,0 i=i-1
C R6,=F'0' until i=0
BE ELOOPUIM
LR R1,R6 i
LA R2,A-1(R1) @a(i)
LA R3,A(R1) @a(i+1)
CLC 0(1,R2),0(R3) or until a(i)<a(i+1)
BNL LOOPUIM
ELOOPUIM LR R7,R6 j=i
LA R7,1(R7) j=i+1
LR R8,R9 k=n
LOOPWJ CR R7,R8 do while j<k
BNL ELOOPWJ
LA R2,A-1(R7) r2=@a(j)
LA R3,A-1(R8) r3=@a(k)
MVC TMP,0(R2) tmp=a(j)
MVC 0(1,R2),0(R3) a(j)=a(k)
MVC 0(1,R3),TMP a(k)=tmp
LA R7,1(R7) j=j+1
BCTR R8,0 k=k-1
B LOOPWJ
ELOOPWJ LTR R6,R6 if i>0
BNP ILE0
LR R7,R6 j=i
LA R7,1(R7) j=i+1
LOOPWA LA R2,A-1(R7) @a(j)
LA R3,A-1(R6) @a(i)
CLC 0(1,R2),0(R3) do while a(j)<a(i)
BNL AJGEAI
LA R7,1(R7) j=j+1
B LOOPWA
AJGEAI LA R2,A-1(R7) r2=@a(j)
LA R3,A-1(R6) r3=@a(i)
MVC TMP,0(R2) tmp=a(j)
MVC 0(1,R2),0(R3) a(j)=a(i)
MVC 0(1,R3),TMP a(i)=tmp
ILE0 C R6,=F'0' until i<>0
BNE LOOPUI0
XR R15,R15 set return code
BR R14 return to caller
A DC C'ABCD'
TMP DS C
PG DC CL80' '
XD DS CL12
YREGS
END PERMUTEX
</lang>
{{out}}
<pre style="height:40ex;overflow:scroll">
ABCD
ABDC
ACBD
ACDB
ADBC
ADCB
BACD
BADC
BCAD
BCDA
BDAC
BDCA
CABD
CADB
CBAD
CBDA
CDAB
CDBA
DABC
DACB
DBAC
DBCA
DCAB
DCBA
</pre>

=={{header|ABAP}}==
=={{header|ABAP}}==
<lang ABAP>data: lv_flag type c,
<lang ABAP>data: lv_flag type c,