File: gen_xor_pb.py

package info (click to toggle)
cryptominisat 5.11.21%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 4,488 kB
  • sloc: cpp: 55,562; ansic: 7,786; python: 7,485; sh: 813; sql: 403; xml: 34; makefile: 22; javascript: 17
file content (50 lines) | stat: -rwxr-xr-x 1,518 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Copyright (C) 2009-2020 Authors of CryptoMiniSat, see AUTHORS file
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; version 2
# of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.


from __future__ import with_statement  # Required in 2.5
from __future__ import print_function
import sys
import random

if len(sys.argv) !=4:
    print("ERROR: You must give 3 arguments: vars, Numxors and K")
    exit(-1)

vs = int(sys.argv[1])
numxors = int(sys.argv[2])
k = int(sys.argv[3])

print("c Will generate %d variable, %d XORs and then all variables's values sum will be at least %d" % (vs, numxors, k))

for i in range(numxors):
    thisxor = []
    for x in range(vs):
        if random.choice([True, False]):
            thisxor.append(x)
    print("c XOR:", thisxor)

    out = "x"
    if random.choice([True, False]):
        out += "-"
    for x in thisxor:
        out += "%d " % (x+1)
    out+="0\nc "
    print(out)