From 36b3bd1009e5cbd8545b6abbb5988c00d7274c15 Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Thu, 13 Nov 2025 16:14:07 +0100 Subject: Factor out average-crop-requirement-nutrient-values. --- models/crop-requirement.rkt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'models') diff --git a/models/crop-requirement.rkt b/models/crop-requirement.rkt index 4faa6bb..23740e7 100644 --- a/models/crop-requirement.rkt +++ b/models/crop-requirement.rkt @@ -143,3 +143,20 @@ (query-exec (current-conn) (delete #:from crop_requirements #:where (= id ,id)))) + + +;; Helpers + +(define (average-crop-requirement-nutrient-values mix) + (define average-values + (for/fold ([acc (hash)]) ([pair (in-list mix)]) + (define crop-requirement (car pair)) + (define percentage (/ (cdr pair) 100)) + (for/fold ([acc acc]) + ([nv (in-list (get-crop-requirement-values crop-requirement))]) + (match-define (cons n v) nv) + (hash-update acc n + (λ (old) (+ old (* v percentage))) + (λ () (* v percentage)))))) + (for/list ([(n v) (in-hash average-values)]) + (cons n v))) -- cgit v1.2.3