27 lines
1,001 B
Racket
27 lines
1,001 B
Racket
(define (wikipedia-test)
|
|
(define t (kdtree 0 2 '(#(2 3) #(5 4) #(9 6) #(4 7) #(8 1) #(7 2))))
|
|
(reset-visits)
|
|
(define n (nearest-neighbor #(9 2) t 2))
|
|
(displayln "Wikipedia Test")
|
|
(displayln (~a "Nearest neighbour to (9,2) is: " n))
|
|
(displayln (~a "Distance: " (dist n #(9 2))))
|
|
(displayln (~a "Visits: " visits "\n")))
|
|
|
|
(define (test k n)
|
|
(define (random!) (for/vector ([_ k]) (random)))
|
|
(define points (for/list ([_ n]) (random!)))
|
|
(define t (kdtree 0 k points))
|
|
(reset-visits)
|
|
(define target (for/vector ([_ k]) 0.75))
|
|
(define nb (nearest-neighbor target t k))
|
|
(define nb-control (argmin (λ (p) (dist p target)) points))
|
|
(displayln (~a n " points in R^3 test"))
|
|
(displayln (~a "Nearest neighbour to " target " is: \n\t\t" nb))
|
|
(displayln (~a "Control: \t" nb-control))
|
|
(displayln (~a "Distance: \t" (dist nb target)))
|
|
(displayln (~a "Control: \t" (dist nb-control target)))
|
|
(displayln (~a "Visits: \t" visits)))
|
|
|
|
(wikipedia-test)
|
|
(test 3 1000)
|
|
(test 3 1000)
|