Search NKS | Online
    1 - 5 of 5 for     Throw
    

Implementation [of conserved quantity test]
Whether a k -color cellular automaton with range r conserves total cell value can be determined from
Catch[Do[ (If[Apply[Plus, CAStep[rule, #] - #] ≠ 0, Throw[False]] &)[ IntegerDigits[i, k, m]], {m, w}, {i, 0, k m - 1}]; True]
where w can be taken to be k 2r , and perhaps smaller. 
      
            
            First, they can just throw away details in which we are not interested. 
      
            
            This can be done for blocks up to length n in a 1D cellular automaton with k colors using
ReversibleQ[rule_, k_, n_] := Catch[Do[ If[Length[Union[Table[CAStep[rule, IntegerDigits[i, k, m]], {i, 0, k m - 1}]]] ≠ k m , Throw[False]], {m, n}]; True]
For k = 2 , r = 1 it turns out that it suffices to test only up to n = 4 (128 out of the 256 rules fail at n = 1 , 64 at n = 2 , 44 at n = 3 and 14 at n = 4 ); for k = 2 , r = 2 it suffices to test up to n = 15 , and for k = 3 , r = 1 , up to n = 9 . 
      
            
            {s[e], u_}  Throw[u]; # =!
      
            
            = d 〚 j + k 〛 , Throw[k]], {k, 0, m}]; m + 1]]
The process of encoding can be made considerably faster by keeping a dictionary of previously encountered subsequences. 
     
