From 8777ff071f7bb37631baa7b6717ad29961e50911 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Wed, 9 Oct 2024 11:36:55 -0400 Subject: sorting by language --- racket/leetcode/lc-1700-students-unable-to-eat.rkt | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 racket/leetcode/lc-1700-students-unable-to-eat.rkt (limited to 'racket/leetcode/lc-1700-students-unable-to-eat.rkt') diff --git a/racket/leetcode/lc-1700-students-unable-to-eat.rkt b/racket/leetcode/lc-1700-students-unable-to-eat.rkt new file mode 100644 index 0000000..75cc243 --- /dev/null +++ b/racket/leetcode/lc-1700-students-unable-to-eat.rkt @@ -0,0 +1,36 @@ +#lang racket +(define/contract (count-students students sandwiches) + (-> (listof exact-integer?) (listof exact-integer?) exact-integer?) + (for/fold ([sandwich-pile sandwiches] + [student-line students] + [remaining-students (length students)] + [break? #false] + #:result remaining-students) + ([i (in-naturals)] + #:break break?) + (cond [(and (empty? sandwich-pile) + (empty? student-line)) + (values void + void + remaining-students + #true)] + [(equal? (car sandwich-pile) + (car student-line)) + (values (cdr sandwich-pile) + (cdr student-line) + (sub1 remaining-students) + #false)] + [(and (not (equal? (list (car sandwich-pile)) + (remove-duplicates student-line))) + (= 1 (length (remove-duplicates student-line)))) + (values void + void + remaining-students + #true)] + [else + (values sandwich-pile + (append (cdr student-line) (list (car student-line))) + remaining-students + #false)]))) + +(count-students '(1 1 0 0) '(0 1 0 1)) -- cgit v1.2.3