diff options
Diffstat (limited to 'challenge-191/sgreen/python/ch-2.py')
| -rwxr-xr-x | challenge-191/sgreen/python/ch-2.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/challenge-191/sgreen/python/ch-2.py b/challenge-191/sgreen/python/ch-2.py new file mode 100755 index 0000000000..6c610e6d88 --- /dev/null +++ b/challenge-191/sgreen/python/ch-2.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 + +import sys + +def find_solutions(front, back): + '''Recursive function to find possible solutions. Front is the numbers we + have processed, back is what remains''' + if len(back) == 0: + return 1 + + # Iterate over the next value + count = 0 + for i in back[0]: + # Call the recursive function if we haven't used this number already + if i not in front: + count += find_solutions([*front, i], back[1:]) + + # Return the number of matches up the recursive function + return count + +def main(n): + '''Main function''' + # Generate a list of list with a possible value for each number + possible = [] + for i in range(1, n+1): + possible.append([j for j in range(1, n+1) if j % i == 0 or i % j == 0]) + + print(find_solutions([], possible)) + + +if __name__ == '__main__': + main(int(sys.argv[1])) |
