| |
|
|
| XPSE kann en el 1. Proc global angelegte Variables erkennen. Ruft el Proc aber una otro Proc en, folgt el Warnung "Varibale undeklariert". Ein más Produkt con X vorne motzt hier no. Mach Yo qué falso? |
|
|
| |
|
|
|
| Ach así sí: Hier lo el con XPSE no voluntad. Yo sería lo sí später aber gern con nProcs beschleunigen, aber wenn's así ya no klappt? KompilierenMarcaSeparaciónWindowTitle "Lexikographisch aufsteigende Permutationen eingegebener Wortstrings"
Font 2:randomize:cls rnd(8^8)
print " Trenner = Leerzeichen oder |, Durch negative Zahlen"
print " (zB. -9) werden Indexfolgen 0|1|2|3|4|5|6|7|8 permutiert."
print
' Interpreter: 9 Elemente 362880 mal permutiert in 148.81 Sek (ohne Ausgeben)
' XPIA: - '' - in 28.55 Sek
' ProfComp in 27.33 Sek
' $MAKE CLE
{$cleq}
Declare t$,z&,tt$[],n&,tm&,ts$
var ausgeben%=0
Restart:
print " Zu permutieren (Leer oder | als Trenner):\n\n ";
input t$
t$=trim$(t$)
t$=translate$(t$," "," ")
case instr("|",t$):q$="|"
t$=translate$(t$," ","|")
if val(t$)<0
setSize tt$[],-1*val(t$)
tt$[]=str$(&Index)
else
tt$[]=explode(t$,"|")
Endif
n&=SizeOf(tt$[])
if n&<2
z&=0
Goto "Skip"
endif
cls rnd(8^8)
print " Permutation läuft..."
tm&=&gettickcount
z&=PERM()' PERM ruft DOSOMETHINGWITHRESULTS auf!
' und verwendet dann NEXTPERM
tm&=&gettickcount-tm&
cls
print
ts$=" In "+str$(tm&)+" ms"
Skip:
ts$=ts$+" "+str$(z&)+" Permutationen erzeugt."
ClearClip
PutClip ts$
Print ts$
Print " Benchwerte in Zwischenablage verfügbar."
beep
WaitInput
CLS rnd(8^8)
Goto "Restart"
End
Proc DOSOMETHINGWITHRESULTS
' Hier: Ausgeben
casenot ausgeben%:return
case %csrlin>21: locate 1,1
WhileLoop n&
print tt$[&Loop-1];
case &Loop=n&:continue
print q$;
EndWhile
print
EndProc
PROC PERM
Declare k&,j&,u&,v&,e%,z&,q$
e%=1
z&=0
q$="|"
While e%
inc z&
DOSOMETHINGWITHRESULTS
NEXTPERM
EndWhile
return z&
ENDPROC
proc NEXTPERM
'erzeugt die jeweils nächste lexikalische Permutation
k&=n&-2
While tt$[k&]>=tt$[k&+1]
Dec k&
case k&<0:break
EndWhile
if k&<0
e%=0
else
j&=n&-1
While tt$[j&]<=tt$[k&]
dec j&
EndWhile
t$=tt$[k&]
tt$[k&]=tt$[j&]
tt$[j&]=t$
u&=k&+1
v&=n&-1
While u&<v&
t$=tt$[u&]
tt$[u&]=tt$[v&]
tt$[v&]=t$
inc u&
dec v&
EndWhile
href='./../../function-references/XProfan/endif/'>endif
endProc
|
|
|
| |
|
|
|
| XPSE kann algo el XProfan incluso no macht: Lexikalische Variables Sichtbarkeit ( [...] )
So es danach folgendes potentiell falso: KompilierenMarcaSeparación sin embargo correcto: KompilierenMarcaSeparación Sowieso, nProcs son como incluso todavía una Stückchen strenger como hay überhaupt no Variablensichtbarkeitsvererbung existiert auch así nProcs siempre Hilo-Seguro son. So gibts en nProcs absichtlich sólo el en él deklarierten y como Parámetro y por Global deklarierten Variables pero no de otro nProcs oder Procs.
PS: Codes Por favor, en Code-Tags conjunto. |
|
|
| |
|
|
|
Nico Madysa | Yo war así frei, lo el Leserlichkeit a liebe a bearbeiten. |
|
|
| |
|
|