Forum de l’article
Accélération d’algorithme
Accélération d’algorithme
Meir Faraj - le 25 juin 2006
solution proposer a la dernier On 1 qui n’utilise que le tableau b
qu’on pourais egalement remplacer par 2 variable pour optimiser l’utilisation de la memoire.
(define (accel_CreateSegment fp_segmentStart fp_segmentEnd fp_SegmentValue)
-
(let (
- (result (make-vector 4)))
(vector-set ! result 0 "segment")
(vector-set ! result 1 fp_segmentStart)
(vector-set ! result 2 fp_segmentEnd)
(vector-set ! result 3 fp_SegmentValue)
result
- (result (make-vector 4)))
)
)
(define (accel_segment ? fp_segment)
-
(and (vector ? fp_segment)
-
(= (vector-length fp_segment) 4)
(string ? (vector-ref fp_segment 0))
(string= ? (vector-ref fp_segment 0) "segment")
-
(= (vector-length fp_segment) 4)
)
)
(define (accel_GetValueForSegment fp_segment)
-
(if (accel_segment ? fp_segment)
-
(vector-ref fp_segment 3)
#unspecified
-
(vector-ref fp_segment 3)
)
)
(define (accel_GetMaxSegmentsOn1Perso2 fp_hydrophobicityCoefsList)
-
(let* (
-
(segment (accel_CreateSegment 0 0 (vector-ref fp_hydrophobicityCoefsList 0)))
(listLength (vector-length fp_hydrophobicityCoefsList))
(B (make-vector (+ listLength 1) 0))
(idebut 0)
-
(segment (accel_CreateSegment 0 0 (vector-ref fp_hydrophobicityCoefsList 0)))
)
(do ((i 1 (+ i 1)))
-
((> i listLength) segment)
(vector-set ! B i (+ (vector-ref B (- i 1)) (vector-ref fp_hydrophobicityCoefsList (- i 1))))
(if (< (vector-ref B i) 0)-
(vector-set ! B i 0)
-
(vector-set ! B i 0)
)
(if (and (= (vector-ref B (- i 1)) 0) (not (= (vector-ref B i) 0)))
-
(set ! idebut (- i 1))
)
(if (> (vector-ref B i) (accel_GetValueForSegment segment))
-
(set ! segment (accel_CreateSegment idebut (- i 1) (vector-ref B i)))
)
)
)
)