DeepRest

1683. Maximum Number of Ones

Jun 15th, 2021 (edited)
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.24 KB | None | 0 0
  1. import numpy as np
  2.  
  3. height=3
  4. width=3
  5. sidelength=2
  6. maxones=1
  7.  
  8. key = [[0]*sidelength for _ in range(sidelength)]
  9.  
  10. def countOnes(rows=sidelength, cols=sidelength):
  11. ans = 0
  12. for i in range(rows):
  13. for j in range(cols):
  14. ans += key[i][j]
  15. return ans
  16.  
  17. if height%sidelength != 0 and width%sidelength != 0:
  18. count = maxones
  19.  
  20. for b in range(sidelength):
  21. x = 0
  22. y = b
  23. while(True):
  24. if count == 0: break
  25. if count == 1:
  26. key[x][y] = 1
  27. count = 0
  28. break
  29. if x==y:
  30. key[x][y] = 1
  31. count-=1
  32. break
  33. if x-y==-1:
  34. key[x][y] = key[y][x] = 1
  35. count-=2
  36. break
  37.  
  38. key[x][y] = key[y][x] = 1
  39. count -= 2
  40. x+=1
  41. y-=1
  42.  
  43. if count == 0:
  44. break
  45.  
  46. if count > 0:
  47. for a in range(1, sidelength):
  48. x = a
  49. y = sidelength - 1
  50. while(True):
  51. if count == 0: break
  52. if count == 1:
  53. key[x][y] = 1
  54. count = 0
  55. break
  56. if x==y:
  57. key[x][y]=1
  58. count-=1
  59. break
  60. if x-y==-1:
  61. key[x][y]=key[y][x]=1
  62. count-=2
  63. break
  64.  
  65. key[x][y] = key[y][x] = 1
  66. count -= 2
  67. x+=1
  68. y-=1
  69.  
  70. if count == 0:
  71. break
  72. else:
  73. temp = [1] * maxones + [0] * (sidelength*sidelength - maxones)
  74. if sidelength%width==0:
  75. for i in range(sidelength):
  76. for j in range(sidelength):
  77. key[i][j] = temp[i*sidelength+j]
  78. else:
  79. for i in range(sidelength):
  80. for j in range(sidelength):
  81. key[j][i] = temp[i*sidelength+j]
  82.  
  83. res1 = (height//sidelength)*(width//sidelength)*maxones
  84. res2 = (height//sidelength)*countOnes(cols=width%sidelength)
  85. res3 = (width//sidelength)*countOnes(rows=height%sidelength)
  86. res4 = countOnes(rows=height%sidelength, cols=width%sidelength)
  87.  
  88. res = res1+res2+res3+res4
  89. ans = key
  90.  
  91. temp=key
  92. for i in range(width//sidelength-1):
  93. ans = np.append(ans, temp, axis=1)
  94. ans = np.append(ans, np.array(temp)[:,:width%sidelength], axis=1)
  95.  
  96. temp=ans
  97. for i in range(height//sidelength-1):
  98. ans = np.append(ans, temp, axis=0)
  99. ans = np.append(ans, np.array(temp)[:height%sidelength], axis=0)
  100.  
  101. print(ans)
  102. print(res)
Add Comment
Please, Sign In to add comment