70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
"""Simple test script to check that the defined conditions go over all swapping pairs.
|
|
|
|
This is just to help me reason."""
|
|
|
|
import argparse
|
|
|
|
if __name__ == "__main__":
|
|
doclines = __doc__.splitlines()
|
|
description = doclines[0]
|
|
epilog = "\n".join(doclines[1:])
|
|
|
|
parser = argparse.ArgumentParser(description=description, epilog=epilog)
|
|
parser.add_argument(
|
|
"<outputs>", type=int, help="Number of outputs for both parties."
|
|
)
|
|
parser.add_argument("<inputs>", type=int, help="Number of inputs for both parties.")
|
|
# parser.add_argument(
|
|
# "--overwrite", action="store_true", help="Overwrite an existing file."
|
|
# )
|
|
args = vars(parser.parse_args())
|
|
out = args["<outputs>"]
|
|
in_ = args["<inputs>"]
|
|
|
|
marked = list(
|
|
"x" if (a_in == b_in and a_out == b_out) else "-"
|
|
for a_in in range(in_)
|
|
for a_out in range(out)
|
|
for b_in in range(in_)
|
|
for b_out in range(out)
|
|
)
|
|
|
|
def idx(a_out, b_out, a_in, b_in):
|
|
return b_out + out * (b_in + in_ * (a_out + out * a_in))
|
|
|
|
def swap(a_out_i, b_out_i, a_in_i, b_in_i):
|
|
u = idx(a_out_i, b_out_i, a_in_i, b_in_i)
|
|
v = idx(b_out_i, a_out_i, b_in_i, a_in_i)
|
|
#print(f"({a_out_i}, {b_out_i} | {a_in_i}, {b_in_i})")
|
|
#print(u, v)
|
|
|
|
if marked[u] != "-" or marked[v] != "-":
|
|
print(f"FAILED for ({a_out_i}, {b_out_i} | {a_in_i}, {b_in_i})")
|
|
print(marked)
|
|
exit(1)
|
|
|
|
marked[u] = "x"
|
|
marked[v] = "x"
|
|
|
|
for a_in_i in range(in_):
|
|
for b_in_i in range(a_in_i):
|
|
for a_out_i in range(out):
|
|
for b_out_i in range(out):
|
|
swap(a_out_i, b_out_i, a_in_i, b_in_i)
|
|
|
|
for a_out_i in range(out):
|
|
for b_out_i in range(a_out_i):
|
|
swap(a_out_i, b_out_i, a_in_i, a_in_i)
|
|
|
|
if not all(x == "x" for x in marked):
|
|
print("FAILED missing entries")
|
|
for a_out_i in range(out):
|
|
for b_out_i in range(out):
|
|
for a_in_i in range(in_):
|
|
for b_in_i in range(in_):
|
|
if marked[idx(a_out_i, b_out_i, a_in_i, b_in_i)] == "-":
|
|
print(f"({a_out_i}, {b_out_i} | {a_in_i}, {b_in_i})")
|
|
exit(1)
|
|
|
|
print("SUCCESS")
|