Pārlūkot izejas kodu

Adding solution for 2908

Vinicius Teshima 1 mēnesi atpakaļ
vecāks
revīzija
6f432ac743
1 mainītis faili ar 44 papildinājumiem un 0 dzēšanām
  1. 44 0
      Racket/2908.rkt

+ 44 - 0
Racket/2908.rkt

@@ -0,0 +1,44 @@
+#lang racket
+
+(define/contract (minimum-sum nums)
+  (-> (listof exact-integer?) exact-integer?)
+  (let ([nums_size (length nums)])
+    (if (< nums_size 3)
+      -1
+      (let _go ([m 153] [f nums] [s (cdr nums)] [t (cddr nums)])
+        ;(printf "m(~a) f(~a) s(~a) t(~a)\n" m f s t)
+        (if (< (length f) 3)
+          (if (= m 153) -1 m)
+          (if (< (length s) 2)
+            (_go m (cdr f) (cddr f) (cdddr f))
+            (if (pair? t)
+              (let* ([fv (car f)] [sv (car s)] [tv (car t)])
+                (if (and (< fv sv) (> sv tv))
+                  (_go (min (+ fv sv tv) m) f s (cdr t))
+                  (_go m f s (cdr t))
+                  )
+              )
+              (_go m f (cdr s) (cddr s))
+              )
+            )
+          )
+        )
+      )
+    )
+  )
+
+(define (main)
+  (define (r nums exp)
+    (printf
+      "(minimum-sum ~a) = ~a | Exp: ~a\n"
+      nums (minimum-sum nums) exp
+      )
+    )
+
+  (r '(8 6 1 5 3) 9)
+  (r '(5 4 8 7 10 2) 13)
+  (r '(6 5 4 3 4 5) -1)
+  (r '(49 50 48) 147)
+  )
+
+(main)