1 2 3 4 5 6 7 8 9 from itertools import combinations def permutations (n): ones = list(combinations (list (range(n)),n//2)) ans = [] for o in ones: case = [] for i in range(n): if (i in o): case.append(1) 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 else: case.append(0) ans.append(case) return ans 28 29 30 31 32 33 34 35 36 37 def check(mat): n = len(mat[0]) for j in range(n): acc0, acc1 = 0, o for i in range(len(mat)): if (mat[i][j] == 1): acc1 += 1 elif (mat[i][j] == 0): acc0 += 1 if (acce> (n//2)) or (acc1 > n//2): return False return True def layer(r, mat, perm, ans): for p in perm: mat.append(p) if check(mat): if (r+1 == len(p)): else: ans += 1 ans = layer (r+1, mat, perm, ans) mat.pop() 38 return ans 39 40 def balanced01mat(n): 41 perm = permutations (n) 42 ans = layer (0, [], perm, 0) 43 return ans 44 45 import cProfile 46 cProfile.run('print ("Balanced matrices of order 6 is", balanced01mat (6))') Balanced matrices of order 6 is 297200 49582063 function calls (49198183 primitive calls) in 39.456 seconds Ordered by: standard name 7677620 0.000 Incalls tottime percall cumtime percall filename: lineno (function) 39.456 :1() 0.000 balanced01mat.py:16(check) balanced01mat.py:29(layer) balanced01mat.py:3(permutations) 1 31.690 0.000 39.456 0.000 33.616 383881/1 4.361 0.000 1 0.000 0.000 1 0.000 0.000 39.456 0.000 39.456 1 0.000 0.000 26165176 1.979 1 0.000 7677760 0.705 39.456 0.000 1.979 0.000 0.000 0.000 0.705 0.000 0.000 7677620 0.721 0.000 0.000 0.721 39.456 0.000 39.456 balanced01mat.py:40 (balanced01mat) 39.456 (built-in method builtins.exec} 0.000 (built-in method builtins.len} 0.000 (built-in method builtins.print} 0.000 (method 'append' of 'list' objects} 0.000 (method 'disable' of '_lsprof.Profiler' objects} 0.000 (method 'pop' of 'list' objects}

Programming Logic & Design Comprehensive
9th Edition
ISBN:9781337669405
Author:FARRELL
Publisher:FARRELL
Chapter8: Advanced Data Handling Concepts
Section: Chapter Questions
Problem 9RQ
icon
Related questions
Question
Considering the code below and the obtained output, which function would you consider
optimizing? Explain your choice. Limit your answer to no less than 2 lines and to
no more than 10 lines (soft limits).
 
 
 
1
2
3
4
5
6
7
8
9
from itertools import combinations
def permutations (n):
ones = list(combinations (list (range(n)),n//2))
ans = []
for o in ones:
case = []
for i in range(n):
if (i in o):
case.append(1)
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
else:
case.append(0)
ans.append(case)
return ans
28
29
30
31
32
33
34
35
36
37
def check(mat):
n = len(mat[0])
for j in range(n):
acc0, acc1 = 0, o
for i in range(len(mat)):
if (mat[i][j] == 1):
acc1 += 1
elif (mat[i][j] == 0):
acc0 += 1
if (acce> (n//2)) or (acc1 > n//2):
return False
return True
def layer(r, mat, perm, ans):
for p in perm:
mat.append(p)
if check(mat):
if (r+1 == len(p)):
else:
ans += 1
ans = layer (r+1, mat, perm, ans)
mat.pop()
38
return ans
39
40
def balanced01mat(n):
41
perm = permutations (n)
42
ans = layer (0, [], perm, 0)
43
return ans
44
45
import cProfile
46
cProfile.run('print ("Balanced matrices of order 6 is", balanced01mat (6))')
Transcribed Image Text:1 2 3 4 5 6 7 8 9 from itertools import combinations def permutations (n): ones = list(combinations (list (range(n)),n//2)) ans = [] for o in ones: case = [] for i in range(n): if (i in o): case.append(1) 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 else: case.append(0) ans.append(case) return ans 28 29 30 31 32 33 34 35 36 37 def check(mat): n = len(mat[0]) for j in range(n): acc0, acc1 = 0, o for i in range(len(mat)): if (mat[i][j] == 1): acc1 += 1 elif (mat[i][j] == 0): acc0 += 1 if (acce> (n//2)) or (acc1 > n//2): return False return True def layer(r, mat, perm, ans): for p in perm: mat.append(p) if check(mat): if (r+1 == len(p)): else: ans += 1 ans = layer (r+1, mat, perm, ans) mat.pop() 38 return ans 39 40 def balanced01mat(n): 41 perm = permutations (n) 42 ans = layer (0, [], perm, 0) 43 return ans 44 45 import cProfile 46 cProfile.run('print ("Balanced matrices of order 6 is", balanced01mat (6))')
Balanced matrices of order 6 is 297200
49582063 function calls (49198183 primitive calls) in 39.456 seconds
Ordered by: standard name
7677620
0.000
Incalls tottime percall cumtime percall filename: lineno (function)
39.456 <string>:1(<module>)
0.000 balanced01mat.py:16(check)
balanced01mat.py:29(layer)
balanced01mat.py:3(permutations)
1
31.690
0.000 39.456
0.000 33.616
383881/1
4.361
0.000
1
0.000
0.000
1
0.000
0.000
39.456
0.000
39.456
1
0.000
0.000
26165176
1.979
1
0.000
7677760
0.705
39.456
0.000 1.979
0.000 0.000
0.000 0.705
0.000
0.000
7677620
0.721
0.000
0.000
0.721
39.456
0.000
39.456 balanced01mat.py:40 (balanced01mat)
39.456 (built-in method builtins.exec}
0.000 (built-in method builtins.len}
0.000 (built-in method builtins.print}
0.000 (method 'append' of 'list' objects}
0.000 (method 'disable' of '_lsprof.Profiler' objects}
0.000 (method 'pop' of 'list' objects}
Transcribed Image Text:Balanced matrices of order 6 is 297200 49582063 function calls (49198183 primitive calls) in 39.456 seconds Ordered by: standard name 7677620 0.000 Incalls tottime percall cumtime percall filename: lineno (function) 39.456 <string>:1(<module>) 0.000 balanced01mat.py:16(check) balanced01mat.py:29(layer) balanced01mat.py:3(permutations) 1 31.690 0.000 39.456 0.000 33.616 383881/1 4.361 0.000 1 0.000 0.000 1 0.000 0.000 39.456 0.000 39.456 1 0.000 0.000 26165176 1.979 1 0.000 7677760 0.705 39.456 0.000 1.979 0.000 0.000 0.000 0.705 0.000 0.000 7677620 0.721 0.000 0.000 0.721 39.456 0.000 39.456 balanced01mat.py:40 (balanced01mat) 39.456 (built-in method builtins.exec} 0.000 (built-in method builtins.len} 0.000 (built-in method builtins.print} 0.000 (method 'append' of 'list' objects} 0.000 (method 'disable' of '_lsprof.Profiler' objects} 0.000 (method 'pop' of 'list' objects}
Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Recommended textbooks for you
Programming Logic & Design Comprehensive
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning
EBK JAVA PROGRAMMING
EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT
New Perspectives on HTML5, CSS3, and JavaScript
New Perspectives on HTML5, CSS3, and JavaScript
Computer Science
ISBN:
9781305503922
Author:
Patrick M. Carey
Publisher:
Cengage Learning
Systems Architecture
Systems Architecture
Computer Science
ISBN:
9781305080195
Author:
Stephen D. Burd
Publisher:
Cengage Learning
Microsoft Visual C#
Microsoft Visual C#
Computer Science
ISBN:
9781337102100
Author:
Joyce, Farrell.
Publisher:
Cengage Learning,