diff options
author | Joe Anderson <jandew+dev@gmail.com> | 2014-07-01 11:40:24 -0500 |
---|---|---|
committer | Joe Anderson <jandew+dev@gmail.com> | 2014-07-01 11:40:24 -0500 |
commit | 863c2cfce870c294b2c7c0c5e6b5e530a5378928 (patch) | |
tree | c0564fdb566bd4382b5ebf3704a7cbf9f6f261db /connected.py | |
parent | d47352c92f20fe7ec4c6edf30efee7b298eeb04e (diff) | |
download | capset-863c2cfce870c294b2c7c0c5e6b5e530a5378928.tar.gz capset-863c2cfce870c294b2c7c0c5e6b5e530a5378928.zip |
Python scripts for analysis
Diffstat (limited to 'connected.py')
-rwxr-xr-x | connected.py | 46 |
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() |