def __iterate_line(self):
        """
            basic idea is that we generate progressively smaller h and t arrays
            and try and match these to the test line, based on match properties
            complexity of this might appear O(n^2) however in practice the number
            of checks is very small
            
        """
        
        if self.n == 0 or self.n == 1:
            if self.is_verbose: 
                print '*********enter line size >= 1, and not 0.'
            return
        # start with same size and iterate down in size.
        # seems unlikely that we will match from start, but possible for smaller run lengths.
        for y in np.arange(self.n, 0, -1):
                #value = self.check(y, np.array([1 for a in np.arange(0,y,1)]), t = np.array([0 for a in np.arange(0,y,1)]))
                value = self.check_with_tolerance(y, \
                np.array([1 for a in np.arange(0,y,1)]), \
                np.array([0 for a in np.arange(0,y,1)]), self.tolerance)
                if value[0]:
                    self.prettyprintparam(value[1],value[2].shape[0])
                    break

            basic idea is that we generate progressively smaller h and t arrays
            and try and match these to the test line, based on match properties
            complexity of this might appear O(n^2) however in practice the number
            of checks is very small
            
        
recipes/Python/578779_Find_largest_run_Heads_or_Tails/recipe-578779.py