aUCBLogo Demos and Tests / imm


to imm   ;invertMatrixMovie
   
init
   
tabl
   
setcursor se 3 4
   
type [original]
   
display :a 3 3
   
invert :a
   
display :a 3 12
   
setcursor se 3 13
   
type [inverse]
   
setCursor list 0 23
end

to init
   
make "a {{1 2 3 4 4 1 3 3}{4 5 6 7 2 3 3 1}{2 2 3 4 1 2 1 2}
            
{1 2 5 1 3 1 5 2}{3 0 4 4 6 1 4 1}{4 1 6 5 1 3 .7 3}
            
{3 2 5 1 3 3 9 1}{1 4 3 2 1 3 1 1}}
end

to tabl
   
ct
   
setTextFont [Courier New]
   
insertMode
   
for [1 80][type "-]
   
(pr)
   
for [1 21][pr "|]
   
for [1 21][setcursor se 79 :i type "|]
   
setcursor [1 22]
   
for [1 78][type "-]
   
overwriteMode
end

to display :a :b :c
   
make "n count :a
   
for [:n]
   
[   for [:n]
      
[   make "aa mditem se :i :j :a
         
setcursor se :b:j*:i:c
         
type form :aa 7 2
         
setcursor se 3 5
      
]
   
]
end

to invert :a
   
make "det 1
   
for [:n]
   
[   make "x mditem (se :l :l:a
      
make "det :det:x
      
ifelse :x==0
      
[   pr [singular matrixstop
      
]
      
[   mdsetitem (se :l :l:a 1
         
for [:n 1]
         
[   make "k mditem (se :l :j:a
            
make "k :k:x
            
mdsetitem (se :l :j:a :k
         
]
         
for [:n]
         
[   ifelse :i==:l
            
[   type "
            
]
            
[   make "x mditem (se :i :l:a
               
mdsetitem (se :i :l:a 0
               
for [:n]
               
[   make "aa mditem (se :i :j:a
                  
make "bb mditem (se :l :j:a
                  
make "bb :bb:x
                  
make "bb :aa:bb
                  
mdsetitem (se :i :j:a :bb
                  
setcursor se 3:j*8 12:i
                  
type form :bb 7 2 setcursor se 2 5
                  
wait 2
               
]
            
]
         
]
      
]
   
]
end