|
|
@@ -0,0 +1,29 @@
|
|
|
+#lang racket
|
|
|
+
|
|
|
+(define/contract (distinct-difference-array nums)
|
|
|
+ (-> (listof exact-integer?) (listof exact-integer?))
|
|
|
+ (let
|
|
|
+ ([len (length nums)])
|
|
|
+ (for/list
|
|
|
+ ([i (in-range len)])
|
|
|
+ (let
|
|
|
+ ([head (remove-duplicates (take nums (+ i 1)))]
|
|
|
+ [tail (remove-duplicates (drop nums (+ i 1)))])
|
|
|
+ (- (length head) (length tail))
|
|
|
+ )
|
|
|
+ )
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
+(define (main)
|
|
|
+ (define (r l e)
|
|
|
+ (printf
|
|
|
+ "(distinct-difference-array ~a) = ~a | Exp: ~a\n"
|
|
|
+ l (distinct-difference-array l) e
|
|
|
+ )
|
|
|
+ )
|
|
|
+ (r '(1 2 3 4 5) '(-3 -1 1 3 5))
|
|
|
+ (r '(3 2 3 4 2) '(-2 -1 0 2 3))
|
|
|
+ )
|
|
|
+
|
|
|
+(main)
|