Re: Searching for embedded zeros in list

*To*: mathgroup at smc.vnet.net*Subject*: [mg32145] Re: [mg32136] Searching for embedded zeros in list*From*: Andrzej Kozlowski <andrzej at tuins.ac.jp>*Date*: Sat, 29 Dec 2001 18:00:23 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

Since you do not let us know your "inelegant" code I can't be sure that you will consider mine more elegant. However, here it is: In[1]:= EmbeddedZeros[l_List]:= Module[{u=N[l]}, ReplaceList[ u,{___,x_,v:Repeated[0.0],y_,___}:> RuleCondition[{x,v,y},xâ? 0&&yâ? 0]]] In[2]:= a={0.75,0.,0,0.42,0.10,0.0,0.03}; In[3]:= b={0.0,0.90,0.75,0.42,0.25,0.0}; In[4]:= EmbeddedZeros[a] Out[4]= {{0.75,0.,0.,0.42},{0.1,0.,0.03}} In[5]:= EmbeddedZeros[b] Out[5]= {} Andrzej Kozlowski Toyama International University JAPAN http://platon.c.u-tokyo.ac.jp/andrzej/ On Saturday, December 29, 2001, at 02:46 PM, Coleman, Mark wrote: > Greetings, > > Can anyone suggest an efficient/elegant way of checking a list for > 'embedded' zeros. By embedded I mean the occurence of one or more zeros > between two non-zero elements (note: zeros at the ends of the list are > not relevant). For instance, the following lists all contain embedded > zeros: > > a={0.98,0.87,0.0,0.5,0.25} > b={0.9,0.0,0.0,0.0,0.0,0.0,0.05} > c={0.75,0.42,0.10,0.0,0.03} > > while this list does not d={0.0,0.90,0.75,0.42,0.25,0.0} > > By way of background, I am working on a problem involving estimating > generators for Markov transition matrices. One condition that ensures > that a generator *does not* exist is the presence of inaccessible states > in any row of the matrix. Thus one need only find a single occurance of > an inaccessible state to show that a generator does not exist. Hence the > code need only locate one such state, not all of them. > > The Mathematica code I've written for this problem does work, but it is > hardly > "elegant". > > Any help would be much appreciated! > > Best regards, > > -Mark > > > >