import random
import os
def generate_matrix():
return [[random.choice([0, 1]) for _ in range(3)] for _ in range(3)]
def matrix_to_string(matrix):
return '\n'.join(''.join(str(x) for x in row) for row in matrix)
def parse_matrices_from_file(filename):
matrices = []
with open(filename, 'r') as f:
lines = f.readlines()
i = 0
while i < len(lines):
if 'T[i]' not in lines[i]:
matrix = [list(map(int, list(lines[j].strip()))) for j in range(i, i+3)]
matrices.append(matrix)
i += 4 # 3行矩阵加1行T[i]
else:
i += 1
return matrices
def Check2(filename="ds.txt"):
C = [
[1, 0, 1],
[0, 1, 1],
[1, 1, 1]
]
matrices = parse_matrices_from_file(filename)
for index, matrix in enumerate(matrices):
if matrix_exists(matrix, [C]):
return index + 1 # +1是因为索引从1开始计数
return -1
#------------------------
def matrix_exists_in_file(matrix, filename):
with open(filename, 'r') as f:
content = f.read()
matrix_str = matrix_to_string(matrix)
return matrix_str in content
def matrix_exists(matrix, matrix_list):
return any(all(matrix[row][col] == m[row][col] for col in range(3) for row in range(3)) for m in matrix_list)
def main():
if not os.path.exists('ds.txt'):
with open('ds.txt', 'w') as f:
pass
A = []
count = 0
Check2("ds.txt")
while count < 514:
matrix = generate_matrix()
if matrix_exists(matrix, A):
count += 1
continue
if matrix_exists_in_file(matrix, 'ds.txt'):
count += 1
continue
if Check2()<0:
count +=1
continue
count = 0
A.append(matrix)
print(matrix_to_string(matrix))
target = input("请输入对应的target标签:")
with open('ds.txt', 'a') as f:
f.write(matrix_to_string(matrix) + '\n')
f.write(f'T[i]={target}\n')
print("完成!")
if __name__ == "__main__":
print(Check2()) # 添加此行以测试Check2函数
main()
数据集的例子如下:
011
110
011
T[i]=c
101
011
111
T[i]=]
100
001
111
T[i]=>
101
110
111
T[i]=C
011
100
101
T[i]=c
101
000
111
T[i]==
011
001
101
T[i]=)
011
000
111
T[i]==
001
111
100
T[i]=+
011
010
010
T[i]=1
001
010
111
T[i]=2
111
001
000
T[i]=7
010
101
011
T[i]=0
010
100
111
T[i]=l
000
111
100
T[i]=2
010
011
101
T[i]=+
111
111
010
T[i]=9
101
100
010
T[i]=1
110
000
110
T[i]==
111
010
000
T[i]=7
010
100
010
T[i]=1
001
101
110
T[i]=j
100
101
101
T[i]=U
010
110
001
T[i]=1
111
010
010
T[i]=7
011
111
001
T[i]=7
001
010
011
T[i]=1
100
111
100
T[i]=+
000
100
011
T[i]=_
110
000
111
T[i]==
101
010
001
T[i]=Y
100
010
001
T[i]=\
000
001
110
T[i]=,
110
110
000
T[i]=@
000
001
010
T[i]=,
011
111
100
T[i]=f
111
110
100
T[i]=【
101
110
101
T[i]=C
100
001
100
T[i]=!
000
011
011
T[i]=。
011
011
101
T[i]=#
110
001
010
T[i]=7
000
110
111
T[i]=z
001
101
011
T[i]=J
011
100
011
T[i]=C
010
111
001
T[i]=+
110
101
011
T[i]=O
110
101
000
T[i]=n
101
010
000
T[i]=v
111
011
110
T[i]=7
000
100
001
T[i]=\
101
011
110
T[i]=Y
111
100
110
T[i]=c
110
111
010
T[i]=+
010
000
110
T[i]==
111
100
100
T[i]=C
101
000
101
T[i]=x
010
010
001
T[i]=1
110
010
100
T[i]=7
001
100
100
T[i]=1
010
010
111
T[i]=┴