| |
|
|
p.specht
| il y a gefinkelte Such- et Sortieralgorithmen, qui près de simplen Suchvektoren aussi qui Inhalte qui Datenfelder selbst berücksichtigen. si un homme z.B. un annuaire aufschlägt um un mot avec "Z..." trop chercher, wird il probablement pas vorne, pas mittig, sonder plutôt large hinten trop chercher commencer. Algorithmen comment z.B. "FastSearch" rendez-vous dans XProfan mais sur deux Probleme: Anders comme dans C++ ou bien dans Assembler peut Cordes pas vite et simple comme Zahlenwerte ausgelesen volonté. qui zweite difficulté stellt dabei aussi cela dans PCs verwendete "verkehrte" INTEL-Zahlenformat dar. Mag son, qui es là Tricks gibt, qui mir encore pas bekannt sommes. dans Vorbereitung pour den Fastsearch-Algorithmus (pour vorsortierte, gleichverteilte Fichiers) habe je mir einstweilen folgendermaßen beholfen:
Titre de la fenêtre "Distanzen entre String-Anfängen (erste 4 marque) ermitteln."
'(DW) Demoware/Testware 2015-01 by P.Specht, vienne (AT); sans chacun Gewähr!
Fenêtre Style 24:Fenêtre 0,0-%maxx,%maxy-40:randomize
var n&=40
declare stra$[n&-1],tmp$,i&,j&,vec&,su$,tmp&
imprimer "\n son Basiswort (z.B. 1-4 marque ihres Vornamens) s'il te plaît: ";
input su$:su$=lower$(su$)
imprimer "\n Generierung de ";n&;" alphabetischen Zufalls-Cordes qui Longueur [1..8], ... ";
whileloop 0,n&-1:tmp$=»:whileloop 1+rnd(6):tmp$=tmp$+chr$(97+rnd(26))
endwhile :stra$[&Boucle]=tmp$:endwhile
Imprimer "\n qui zwecks Überprüfbarkeit eh bien pour Stringdistanzwerten sortiert volonté."
whileloop 0,n&-1:i&=&Boucle
whileloop 0,n&-1:j&=&Boucle
si ASC4(stra$[i&]) < ASC4(stra$[j&])' si stra$[i&] < stra$[j&] 'Sort-Test
tmp$=stra$[i&]:stra$[i&]=stra$[j&]:stra$[j&]=tmp$
endif
endwhile
endwhile
' Ausgabe:
whileloop 0,n&-1:j&=&Boucle
imprimer tab(3);chr$(34)+stra$[j&]+chr$(34);\
tab(14);" ist de ";chr$(34)+su$+chr$(34);tab(35);str$(int( ASC4(stra$[j&])-ASC4(su$)));\
tab(50);" mögliche 4-Ketten entfernt."
endwhile
waitinput
end
proc ASC4 :parameters x$
'Stringwert qui ersten quatre ASCII-marque ermittlen (passen dans un Long-Variable)
declare x&',xl&:xl&=if(len(x$)<4,len(x$),4)
sélectionner si(len(x$)<4,len(x$),4)
caseof 0:x&=0
caseof 1:x&=byte(addr(x$),0)<<23
caseof 2:x&=byte(addr(x$),1)<<15 | byte(addr(x$),0)<<23
caseof 3:x&=byte(addr(x$),2)<<7 | byte(addr(x$),1)<<15 | byte(addr(x$),0)<<23
caseof 4:x&=byte(addr(x$),3)>>1 | byte(addr(x$),2)<<7 | byte(addr(x$),1)<<15 | byte(addr(x$),0)<<23
otherwise :imprimer "select error"
endselect :return x&
endproc
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 12.05.2021 ▲ |
|
|
|