codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; gray code neighbors (define (logand a b) (if (or (zero? a) (zero? b)) 0 (+ (* (logand (floor (/ a 2)) (floor (/ b 2))) 2) (if (or (even? a) (even? b)) 0 1)))) (define (logxor a b) (cond ((zero? a) b) ((zero? b) a) (else (+ (* (logxor (floor (/ a 2)) (floor (/ b 2))) 2) (if (even? a) (if (even? b) 0 1) (if (even? b) 1 0)))))) (define (neighbors? a b) (let ((x (logxor a b))) (= (logand x (- x)) x))) (display (neighbors? 88 72)) (newline) ; true, 16-bit (display (neighbors? 88 89)) (newline) ; true, 1-bit (display (neighbors? 88 90)) (newline) ; true, 2-bit (display (neighbors? 88 91)) (newline) ; false, 1-bit and 2-bit
Private
[
?
]
Run code
Submit