Que penses-tu des fonctions suivantes?
;short *first_permut(short *buffer,short number)
;(C) 2001 Kevin Kofler
;Please give me credit in the documentation of your program if you use my routine!
;DISCLAIMER OF WARRANTIES: I HAVE DONE MY BEST NOT TO INSERT BUGS IN MY ROUTINES, BUT I CANNOT BE HELD RESPONSIBLE IF THERE ARE SOME, EVEN IF ANY DAMAGES TO YOUR CALCULATOR OR THE DATA ON IT RESULT OF THOSE BUGS!
;JE NE PEUX ÊTRE TENU RESPONSABLE POUR D'ÉVENTUELS DÉGATS CAUSÉS À VOTRE CALCULATRICE OU AUX DONNÉES ENREGISTRÉES DESSUS PAR D'ÉVENTUELS BOGUES DE CETTE ROUTINE!
first_permut:
movea.l 4(a7),a0
move.w 8(a7),d0
movea.l a0,a1
subq.w #1,d0
next:
move.w d0,(a1)
addq.w #1,(a1)+
dbra.w d0,next
rts
;short *next_permut(short *permut,short number)
;(C) 2001 Kevin Kofler
;Please give me credit in the documentation of your program if you use my routine!
;DISCLAIMER OF WARRANTIES: I HAVE DONE MY BEST NOT TO INSERT BUGS IN MY ROUTINES, BUT I CANNOT BE HELD RESPONSIBLE IF THERE ARE SOME, EVEN IF ANY DAMAGES TO YOUR CALCULATOR OR THE DATA ON IT RESULT OF THOSE BUGS!
;JE NE PEUX ÊTRE TENU RESPONSABLE POUR D'ÉVENTUELS DÉGATS CAUSÉS À VOTRE CALCULATRICE OU AUX DONNÉES ENREGISTRÉES DESSUS PAR D'ÉVENTUELS BOGUES DE CETTE ROUTINE!
next_permut:
movea.l 4(a7),a0
invalid_permut:
move.w 8(a7),d0
movea.l a0,a1
move.l d0,d1
check_again:
cmp.w (a1),d0
bne.s no_clear
move.w #1,(a1)+
subq.w #1,d1
tst.w d1
beq.s error
bra.s check_again
no_clear:
addq.w #1,(a1)
subq.w #2,d0
next_cmp_1:
lea.l 2(a0,d0.w),a1
move.w 0(a1,d0.w),d2
movea.l a0,a1
move.w d0,d1
next_cmp_2:
cmp.w (a1)+,d2
beq.s invalid_permut
dbra.w d1,next_cmp_2
dbra.w d0,next_cmp_1
rts
error:
suba.l a0,a0
rts
[edit]Edité par Kevin Kofler le 03-08-2001 à 03:14:55[/edit]