Bu arada aşağıdaki fonksiyonu,
def intersection(x, y):
result = {i: False for i in x}
for i, j in enumerate(x):
for k, m in enumerate(y):
if j == m and all(n in y[k:] for n in x[i:]):
result[j] = True
return all(result.values())
şu şekilde değiştirmeniz gerekiyor.
def intersection(x, y):
result = {i: False for i in x}
if len(result) == 1 and y.count(x[0]) < x.count(x[0]):
return False
for i, j in enumerate(x):
for k, m in enumerate(y):
if j == m and all(n in y[k:] for n in x[i:]):
result[j] = True
return all(result.values())
Sadece True
veren değerleri almak için de şöyle yapabilirsiniz.
def get_true_values(array):
return [i for i in array if i[0]]
true_data = get_true_values(data)
for i in true_data:
print(i)
Çıktı:
[True, [2, 1], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 2], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 4], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 4], [14, 8, 4, 12, 13, 5, 14, 4, 1, 7, 4, 8, 9]]
[True, [1, 5], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 7], [14, 8, 4, 12, 13, 5, 14, 4, 1, 7, 4, 8, 9]]
[True, [1, 8], [14, 8, 4, 12, 13, 5, 14, 4, 1, 7, 4, 8, 9]]
[True, [1, 9], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 9], [14, 8, 4, 12, 13, 5, 14, 4, 1, 7, 4, 8, 9]]
[True, [2, 10], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 10], [10, 7, 12, 11, 7, 8, 6, 13, 6, 3, 2, 12, 10]]
[True, [2, 12], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 12], [10, 7, 12, 11, 7, 8, 6, 13, 6, 3, 2, 12, 10]]
[True, [1, 1], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 2], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 4], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 5], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 7], [14, 8, 4, 12, 13, 5, 14, 4, 1, 7, 4, 8, 9]]
[True, [2, 9], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 10], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 10], [10, 7, 12, 11, 7, 8, 6, 13, 6, 3, 2, 12, 10]]
[True, [1, 12], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 1], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 2], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 4], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 5], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 7], [14, 8, 4, 12, 13, 5, 14, 4, 1, 7, 4, 8, 9]]
[True, [2, 9], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 10], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 10], [10, 7, 12, 11, 7, 8, 6, 13, 6, 3, 2, 12, 10]]
[True, [1, 12], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 1], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 2], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 4], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 4], [14, 8, 4, 12, 13, 5, 14, 4, 1, 7, 4, 8, 9]]
[True, [2, 5], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 9], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [1, 9], [14, 8, 4, 12, 13, 5, 14, 4, 1, 7, 4, 8, 9]]
[True, [1, 10], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 12], [9, 12, 8, 10, 7, 2, 1, 10, 4, 1, 9, 12, 5, 2]]
[True, [2, 12], [10, 7, 12, 11, 7, 8, 6, 13, 6, 3, 2, 12, 10]]
Kodun tam hali:
from random import randint
from json import dump, load
def write_file(filename: str, nl: bool):
with open(filename, "w") as f:
for i in range(56):
if nl:
if i and i % 14 == 0:
f.write("\n")
else:
f.write(f"{randint(1, 14):<10}")
else:
if i >= 14:
i %= 14
f.write(f"{randint(1, 2)}{i + 1:>10}\n")
def read_file(filename: str):
with open(filename) as f:
return [list(map(int, i.split())) for i in f.readlines()]
def intersection(x, y):
result = {i: False for i in x}
if len(result) == 1 and y.count(x[0]) < x.count(x[0]):
return False
for i, j in enumerate(x):
for k, m in enumerate(y):
if j == m and all(n in y[k:] for n in x[i:]):
result[j] = True
return all(result.values())
def check_intersection(filename1, filename2):
return [
(intersection(i, j), i, j)
for i in read_file(filename1)
for j in read_file(filename2)
]
def get_true_values(array):
return [i for i in array if i[0]]
def to_json(filename, data):
with open(filename, "w") as f:
dump(data, f)
def from_json(filename):
with open(filename) as f:
return load(f)
def main():
write_file("file1.txt", False)
write_file("file2.txt", True)
to_json("test.json", check_intersection("file1.txt", "file2.txt"))
data = from_json("test.json")
true_data = get_true_values(data)
for i in true_data:
print(i)
if __name__ == "__main__":
main()