On Sun, 06 Nov 2005 16:03:00 -0500, John H wrote:
>Has anyone written a permutations macro for vedit?
I've done it. Yet this night ;-) Just for fun.
It works, but needs some translation, some more documentation and much
more comfort...
But now it's really too late for more playing around!
Christian
//
// Permutationen Ch.Ziemski 06.11.2005
//
//
// e = Elemente 10 0..9
// n = Anzahl 3
//
// Permutationen = n ^ e 1000 000..999
//
// Speicher für n = 1..9
// jeder Speicher kann Werte von 0..e enthalten
// x zeigt auf den gerade zu prüfenden Speicher
#1=0
#2=0
#3=0
#4=0
#5=0
#6=0
#7=0
#8=0
#9=0
// Strings als Ausgabe
Reg_Set(10,"A")
Reg_Set(11,"B")
Reg_Set(12,"C")
Reg_Set(13,"D")
Reg_Set(14,"E")
Reg_Set(15,"F")
Reg_Set(16,"G")
Reg_Set(17,"H")
Reg_Set(18,"I")
Reg_Set(19,"J")
#90=1 // x
#91=3 // n
#92=10 // e
do {
do {
for (#99=#91; #99>0; #99--) { Reg_Ins(#@99+10) } Ins_Newline(1)
#103=#90 Call("add1")
} while (#104)
do {
#90++ // nächst höhere Stelle versuchen
#103=#90 Call("add1")
if (#104) { // bei Erfolg ...
#90=1 // ... wieder bei niedrigster Stelle weitermachen
break
}
} while (#90<#91) // solange noch nicht höchste Stelle erreicht
} while (#90<#91)
return
//-------------------------------------------------------------------
:add1:
// IN: #103 x
// OUT: #104 1=o.k.
// MOD: #@103
#104=0
if (#@103 < (#92-1)) {
#@103++
#104=1
} else {
#@103=0
}
return