aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Wagner <shawnw.mobile@gmail.com>2023-02-20 08:58:30 -0800
committerShawn Wagner <shawnw.mobile@gmail.com>2023-02-20 08:58:30 -0800
commit3dae1a2b1bbf3762da3599a1d5db9044eace91f2 (patch)
tree811a7cb1b3c3c7bbe3f897eac5864c183b5ac5a1
parenta8851f754e8620a8fc8714f8e5bcc93263abd16b (diff)
downloadperlweeklychallenge-club-3dae1a2b1bbf3762da3599a1d5db9044eace91f2.tar.gz
perlweeklychallenge-club-3dae1a2b1bbf3762da3599a1d5db9044eace91f2.tar.bz2
perlweeklychallenge-club-3dae1a2b1bbf3762da3599a1d5db9044eace91f2.zip
Challenge 205.2 in Racket
-rw-r--r--challenge-205/shawn-wagner/racket/ch-2.rkt21
1 files changed, 21 insertions, 0 deletions
diff --git a/challenge-205/shawn-wagner/racket/ch-2.rkt b/challenge-205/shawn-wagner/racket/ch-2.rkt
new file mode 100644
index 0000000000..2d8d88e5b8
--- /dev/null
+++ b/challenge-205/shawn-wagner/racket/ch-2.rkt
@@ -0,0 +1,21 @@
+#lang racket/base
+
+(require racket/list racket/match)
+(define (solution nums)
+ (for/fold ([num1 -1]
+ [num2 -1]
+ [max-xor 0])
+ ([pair (in-combinations nums 2)])
+ (match-let ([(list p1 p2) pair])
+ (let ([xor (bitwise-xor p1 p2)])
+ (if (> xor max-xor)
+ (values p1 p2 xor)
+ (values num1 num2 max-xor))))))
+
+(define (demo n nums)
+ (let-values ([(n1 n2 xor) (solution nums)])
+ (printf "Example ~A: The maximum result of ~A xor ~A = ~A~%" n n1 n2 xor)))
+
+(demo 1 '(1 2 3 4 5 6 7))
+(demo 2 '(2 4 1 3))
+(demo 3 '(10 5 7 12 8))