March 12Mar 12 all columns, rows, diagonals in a list... ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun all-magic-square-lines (n) (let ((alist (magic-square n))) (append alist (loop for x from 0 to (1- (length (car alist))) collect (loop for i in alist collect (nth x i))) (list (loop for i in alist with cnt = 0 collect (nth cnt i) do (incf cnt))) (list (loop for i in alist with cnt = (1- (length (car alist))) collect (nth cnt i) do (decf cnt)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (all-magic-square-lines 3) => ((8 1 6) (3 5 7) (4 9 2) (8 3 4) (1 5 9) (6 7 2) (8 5 2) (6 5 4)) (all-magic-square-lines 4) => ((16 5 9 4) (2 11 7 14) (3 10 6 15) (13 8 12 1) (16 2 3 13) (5 11 10 8) (9 7 6 12) (4 14 15 1) (16 11 6 1) (4 7 10 13)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; test (loop for i in (all-magic-square-rows 7) collect (sum i)) => (175 175 175 175 175 175 175 175 175) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;(all-magic-square-lines 3)
Create an account or sign in to comment