IDs stats.

This commit is contained in:
Dominik Pantůček 2023-03-20 18:34:48 +01:00
parent a21de657d0
commit c94d8f4184
5 changed files with 44 additions and 4 deletions

View file

@ -36,6 +36,8 @@
members-base-stats
print-members-base-info
print-members-base-stats
get-free-members-ids
print-members-ids-stats
members-base-tests!
)
@ -340,6 +342,31 @@
(print month " " (string-intersperse (map number->string vals) " "))
(loop (cdr rows)))))))
;; Returns all free ids
(define (get-free-members-ids mb)
(let ((ids (list-members-ids mb)))
(filter
(lambda (id)
(not (member id ids)))
(gen-all-4digit-primes))))
;; Prints statistics about allocated and unused valid/invalid IDs.
(define (print-members-ids-stats MB)
(print "Allocated IDs: "
(length (list-members-ids MB))
"/"
(length (gen-all-4digit-primes))
" ("
(length (get-free-members-ids MB))
" free)")
(let ((iids (filter (compose not is-4digit-prime?) (list-members-ids MB))))
(when (not (null? iids))
(print " Invalid: "
(length iids)
" ("
(string-intersperse (map number->string iids) ", ")
")"))))
;; Performs self-tests of this module.
(define (members-base-tests!)
(run-tests