# 7c2948c7ec11

`Problem 9`
author Steve Losh Sun, 10 Apr 2016 19:31:21 +0000 20c03264a55e d4b651730553 (none) euler.lisp

## Changes

```--- a/euler.lisp	Sun Apr 10 19:17:38 2016 +0000
+++ b/euler.lisp	Sun Apr 10 19:31:21 2016 +0000
@@ -134,6 +134,16 @@
(loop :for window :in (n-grams 13 digits)
:maximize (apply #'* window))))

+(defun problem-9 ()
+  (flet ((pythagorean-triplet-p (a b c)
+           (= (+ (square a) (square b))
+              (square c))))
+    (block search
+      (loop :for c :from 998 :downto 1 ; they must add up to 1000, so C can be at most 998
+            :do (loop :for a :from (- 999 c) :downto 1 ; A can be at most 999 - C (to leave 1 for B)
+                      :for b = (- 1000 c a)
+                      :when (pythagorean-triplet-p a b c)
+                      :do (return-from search (* a b c)))))))

;;;; Tests
(def-suite :euler)
@@ -147,6 +157,7 @@
(test p6 (is (= 25164150 (problem-6))))
(test p7 (is (= 104743 (problem-7))))
(test p8 (is (= 23514624000 (problem-8))))
+(test p9 (is (= 31875000 (problem-9))))

; (run! :euler)```