def _recon_lcs(x, y):
    """
    Returns the Longest Subsequence between x and y.
    Source: http://www.algorithmist.com/index.php/Longest_Common_Subsequence

    Args:
      x: sequence of words
      y: sequence of words

    Returns:
      sequence: LCS of x and y
    """
    i, j = len(x), len(y)
    table = _lcs(x, y)

    def _recon(i, j):
        """private recon calculation"""
        if i == 0 or j == 0:
            return []
        elif x[i - 1] == y[j - 1]:
            return _recon(i - 1, j - 1) + [(x[i - 1], i)]
        elif table[i - 1, j] > table[i, j - 1]:
            return _recon(i - 1, j)
        else:
            return _recon(i, j - 1)

    recon_tuple = tuple(map(lambda x: x[0], _recon(i, j)))
    return recon_tuple
def _recon_lcs ( x , y ) : i , j = len ( x ) , len ( y ) table = _lcs ( x , y ) def _recon ( i , j ) : if i == 0 or j == 0 : return [ ] elif x [ i - 1 ] == y [ j - 1 ] : return _recon ( i - 1 , j - 1 ) + [ ( x [ i - 1 ] , i ) ] elif table [ i - 1 , j ] > table [ i , j - 1 ] : return _recon ( i - 1 , j ) else : return _recon ( i , j - 1 ) recon_tuple = tuple ( map ( lambda x : x [ 0 ] , _recon ( i , j ) ) ) return recon_tuple
Returns the Longest Subsequence between x and y.
    Source: http://www.algorithmist.com/index.php/Longest_Common_Subsequence

    Args:
      x: sequence of words
      y: sequence of words

    Returns:
      sequence: LCS of x and y