diff --git a/bundle/bundle--ux.el b/bundle/bundle--ux.el index f52f5013..02feec60 100644 --- a/bundle/bundle--ux.el +++ b/bundle/bundle--ux.el @@ -328,18 +328,20 @@ (cond ((null sym) tbl) (t (ux:filter-tbl (cdr sym) (ux:filtered-tbl (car sym) tbl))))) -(defun ux:sus-calc-stats (result) - (cond ((cl-oddp (car result)) - (mapcar (lambda (x) (1- x)) (car (last result)))) - ((cl-evenp (car result)) - (mapcar (lambda (x) (- 5 x)) (car (last result)))))) +(defun ux:transpose (lst) + (if (memq nil lst) + nil + (cons (mapcar #'car lst) + (ux:transpose (mapcar #'cdr lst))))) -(defun ux:sus-sum-cols (table) - (let ((n (length (car table)))) - (mapcar (lambda (i) - (apply '+ (mapcar (lambda (row) (nth i row)) table))) - (number-sequence 0 (1- n))))) +(defun ux:sus-calc-score (lst) + (let ((counter 0)) + (mapcar (lambda (x) + (setq counter (1+ counter)) + (if (= 0 (% counter 2)) + (- 5 x) + (1- x))) + lst))) -(defun ux:calc-sus-score (results-tbl) - (let ((tbl (ux:sus-sum-cols (mapcar #'ux:sus-calc-stats results-tbl)))) - (/ (apply #'+ (mapcar (lambda (x) (* x 2.5)) tbl)) (length tbl)))) +(defun ux:sus-calc-score-per-row (lst) + (* (apply '+ (ux:sus-calc-score lst)) 2.5))