xbmc file upload / playlist insert example
[clinton/scratch.git] / distance.scm
CommitLineData
2d6a241e
CE
1(use-modules (srfi srfi-1))
2
3(define distance (a b)
4 (abs (- a b)))
5
6(define (distance-change bpm_c bpm_n bpm_n+1)
7 (- (abs (distance bpm_c bpm_n) (distance bpm_c bpm_n+1))
8 (distance bpm_a bpm_b)))
9
10(define (insert-song song playlist)
11 (let ((last
12 (let find-minimum ((current-minimum (inf))
13 (min-cons '())
14 (plist playlist))
15 (cond
16 ((null? (cdr rest))
17 '())
18 ((< (distance-change song (first plist) (second plist))
19 current-minimum)
20 (find-minimum (distance-change song (first plist) (second plist))
21 (first plist)
22 (rest plist)))
23 (else (find-minimum current-minimum min-cons (rest plist)))))))
24 (let insert-copy ((old-list playlist))
25 (cond ((eq? last old-list)
26 ;; (list... (car old-list) song (cdr old-list))
27 (cons* (car old-list) song (cdr old-list)))
28 (else (cons (car old-list) (insert-copy (cdr old-list))))))))
29