#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)