diff --git a/sudoku.lispbm b/sudoku.lispbm index 614e981..c42eebc 100644 --- a/sudoku.lispbm +++ b/sudoku.lispbm @@ -8,5 +8,19 @@ (foldr (lambda (y z) (if (<= y 1) z nil)) t (map (lambda (y) (amount y x)) nums)) - nil - )) + nil)) + +(defun getRow (grid x) (ix grid x)) + +(defun transpose (grid) + (match grid + (nil nil) + (((? x)) + (map (lambda (y) (list y)) x)) + (((? x) . (? xs)) + (zipWith + cons + x + (transpose xs))))) + +(defun getCol (grid x) (getRow (transpose grid) x))