;; Only & non-null term on the row 1, namely a 1 in column 1.
;; Two non-null terms in row 2, 4 in row 4, the row 3 is null.
;; Travelling in a matrix is conveniently done by P-DISP.
;; Going to the first fake-term of LEFTCOL :
;; means it is a term in position 1-0, it is fake (nil).
;; the "lefthand" term is in position 1-1, its value is 1:
;; the above term is in position 0-0, it is fake.
;; Create a random matrice 4 x 6 of "density" 0.3 with |terms| <= 10:
========== MATRIX 4 row(s) + 6 column(s) ===== R1=[C1=1] R2=[C1=-3][C5=9] R3= R4=[C2=4][C3=3][C4=-8][C5=-7] ========== END-MATRIX
;; Only & non-null term on the row 1, namely a 1 in column 1. ;; Two non-null terms in row 2, 4 in row 4, the row 3 is null. ;; Travelling in a matrix is conveniently done by P-DISP. ;; Going to the first fake-term of LEFTCOL :
CL-USER(6): (disp-p (setf p (aref (leftcol mtrx) 1))) ((1 0 NIL) (1 1 1) (0 0 NIL))
;; means it is a term in position 1-0, it is fake (nil). ;; the "lefthand" term is in position 1-1, its value is 1: ;; the above term is in position 0-0, it is fake.
;; going to the term in position 1-1:
;; the term is in position 1-1, its lefthand term is the ;; starting point in position 1-0, the above term is ;; in position 0-1, it is fake.
;; Running through the row 4 :
;; We are back to the fake term in position 4-0
;; Running through the column 5:
;; "Both" terms in position 0-0 are the same and are fake.
;; it's one of the standard structures to implement ;; sparse matrices.