Allow incomplete ballots.

* When calling 'update-vote, a rank of #f will remove the associated
  alternative from the ranking.
main
Edward L Platt 2 years ago
parent a4c419b773
commit 688f1d0989

@ -211,8 +211,13 @@
;; A reordered copy of lst
;;
(define (reorder lst ranks)
(let ((pairs (zip lst ranks)))
(map car (sort pairs (lambda (a b) (< (cadr a) (cadr b)))))))
(let* ((pairs (zip lst ranks))
(ranked-pairs
(filter (lambda (pair) (not (eq? #f (cadr pair))))
pairs))
(sorted-pairs
(sort ranked-pairs (lambda (a b) (< (cadr a) (cadr b))))))
(map car sorted-pairs)))

@ -12,5 +12,5 @@
(define vote (a-run (spawn ^ranked-choice-vote delib ($ delib 'debug-alternatives))))
(define ballot (a-run ($ vote 'add-ballot)))
(define (rank312 alts) '(3 1 2))
(a-run ($ ballot 'update-vote rank312))
(define (rank31f alts) '(3 1 #f))
(a-run ($ ballot 'update-vote rank31f))

Loading…
Cancel
Save