diff options
author | HJ <thechairman@thechairman.info> | 2023-01-17 12:46:04 -0500 |
---|---|---|
committer | HJ <thechairman@thechairman.info> | 2023-01-17 12:46:04 -0500 |
commit | fafbeaf9e3c09ba7a5bea7e47d5736001f8a5aa1 (patch) | |
tree | d586a28650cbbfb20ece931a85bcce4c29e5e40b /leetcode/lc-1700-students-unable-to-eat.rkt | |
parent | bc5387512ba529072338648d6337ddab731b8b8c (diff) | |
download | gleam_aoc-fafbeaf9e3c09ba7a5bea7e47d5736001f8a5aa1.tar.gz gleam_aoc-fafbeaf9e3c09ba7a5bea7e47d5736001f8a5aa1.zip |
adding old leetcode solutions
Diffstat (limited to 'leetcode/lc-1700-students-unable-to-eat.rkt')
-rw-r--r-- | leetcode/lc-1700-students-unable-to-eat.rkt | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/leetcode/lc-1700-students-unable-to-eat.rkt b/leetcode/lc-1700-students-unable-to-eat.rkt new file mode 100644 index 0000000..75cc243 --- /dev/null +++ b/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)) |