def binary_projective_two_weight_27_6_12():
    """
    Return the binary projective two-weight [27,6,12] codes as published by Tonchev.

    Return a tuple that encodes the generator matrices
    of the binary projective two-weight [27,6,12] codes,
    listed as codes 1, 2, 3a, 3b and 4 in Table 1 of Tonchev [Ton1996]_,
    and repeated as codes 1 to 5 in Table 1.155 of Tonchev [Ton2007]_.

    INPUT:

    - None.

    OUTPUT:

    A tuple of tuples of strings. Each tuple of strings encodes a generator matrix
    of a binary projective two-weight code.

    EXAMPLES:

    ::

        sage: from boolean_cayley_graphs.binary_projective_two_weight_codes import binary_projective_two_weight_27_6_12
        sage: c27=binary_projective_two_weight_27_6_12()
        sage: c27[0]
        ('000000000001111111111111111',
        '000000011110000000011111111',
        '000001100110000111100001111',
        '000111111110011001100110011',
        '011010101010111011101110100',
        '101010101100001110111011101')

    REFERENCES:

    Tonchev [Ton1996]_ [Ton2007]_.
    """
    c1 = ('000000000001111111111111111', '000000011110000000011111111',
        '000001100110000111100001111', '000111111110011001100110011',
        '011010101010111011101110100', '101010101100001110111011101')
    c2 = ('000000000000000111111111111', '000000000111111000000111111',
        '000111111000011000011000011', '001000111011101000101000101',
        '010001011101110011101011101', '100010101000101001111101000')
    c3 = ('000000000000000111111111111', '000000011111111000011111111',
        '000001100001111001100001111', '001110100010001010101110001',
        '010110101110111110000110110', '100011100110011111110010011')
    c4 = ('000000000000000111111111111', '000000011111111000000001111',
        '000001100001111000011110011', '001110100010111011101110101',
        '010110101110001100100110000', '111010010100011001101010000')
    c5 = ('000000000000000111111111111', '000000000111111000000111111',
        '000000111000111000111000111', '000111001001001011011000011',
        '011001011010110001101001000', '101010110011010000010010101')
    return c1, c2, c3, c4, c5
