summaryrefslogtreecommitdiff
path: root/connected.py
diff options
context:
space:
mode:
authorJoe Anderson <jandew+dev@gmail.com>2014-07-01 11:40:24 -0500
committerJoe Anderson <jandew+dev@gmail.com>2014-07-01 11:40:24 -0500
commit863c2cfce870c294b2c7c0c5e6b5e530a5378928 (patch)
treec0564fdb566bd4382b5ebf3704a7cbf9f6f261db /connected.py
parentd47352c92f20fe7ec4c6edf30efee7b298eeb04e (diff)
downloadcapset-863c2cfce870c294b2c7c0c5e6b5e530a5378928.tar.gz
capset-863c2cfce870c294b2c7c0c5e6b5e530a5378928.zip
Python scripts for analysis
Diffstat (limited to 'connected.py')
-rwxr-xr-xconnected.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/connected.py b/connected.py
new file mode 100755
index 0000000..ee3ae70
--- /dev/null
+++ b/connected.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+from sys import argv
+if len(argv) == 1: NUM = 1
+if len(argv) == 2: NUM = int(argv[1])
+
+def is_connected(capset0, capset1):
+ count = 0
+ for card in capset0:
+ if card in capset1:
+ continue
+ count += 1
+ return count <= NUM
+
+def next_connected(disconnected):
+ newly_connected = [disconnected.pop()]
+ connected = []
+ while newly_connected:
+ check_capsets = iter(newly_connected[:])
+ connected.extend(newly_connected)
+ newly_connected = []
+ for con_capset in check_capsets:
+ for index, dis_capset in reversed(list(enumerate(disconnected[:]))):
+ if is_connected(con_capset, dis_capset):
+ newly_connected.append(disconnected.pop(index))
+ return connected
+
+def main():
+ capsets = []
+ capset_file = open("capset.out", "r")
+ for line in capset_file:
+ capsets.append(tuple(line[1:-2].split(" ")))
+ capset_file.close()
+
+ connecteds = []
+ while capsets:
+ connecteds.append(next_connected(capsets))
+ #for connected in connecteds:
+ # print("\nThe following are connected:")
+ # for capset in connected:
+ # print(capset)
+ print("\nThere are", len(connecteds), "partitions.")
+ lengths = list(map(len, connecteds))
+ for length in sorted(set(lengths)):
+ print("There are", lengths.count(length), "with length", length)
+
+if __name__ == "__main__": main()