python - python3中将整数除以 "as symmetric array as possible"

标签 python python-3.x symmetric

我试图在 python3 中将整数拆分为“尽可能对称的数组”,但似乎不太正确。

所需的输入/输出可以通过此数据模式表进行描述。

# data pattern TABLE
# INPUT (int) => OUTPUT (len(array), array )
# 1 => 1 1
# 2 => 1 2
# 3 => 2 2,1
# 4 => 2 2,2
# 5 => 2 3,2
# 6 => 2 3,3
# 7 => 3 3,2,2
# 8 => 3 3,3,2
# 9 => 3 3,3,3
# 10 => 3 4,3,3
# 11 => 3 4,4,3
# 12 => 3 4,4,4
# 13 => 4 4,3,3,3
# 14 => 4 4,4,3,3
# 15 => 4 4,4,4,3
# 16 => 4 4,4,4,4
# 17 => 4 5,4,4,4
# 18 => 4 5,5,4,4
# 19 => 4 5,5,5,4
# 20 => 4 5,5,5,5

到目前为止,我通过在 stackoverflow 上查看一些内容得到了这段代码。

def splitnum(a, n):
    num, div = a, n
    return (num // div + (1 if x < num % div else 0)  for x in range (div))

x =20
print(list(splitnum(x, int(x/2))))

但是它会导致数组被分成两部分。我真的只是想正确理解该模式,如果有人知道一些巧妙的技巧来解决这个问题,那将非常有帮助!

感谢任何帮助!

干杯!

最佳答案

我认为这是一个很好的提议:

import math
def squarit(n: int):
  size = int(math.floor(math.sqrt(n)))
  ans = [n//size]*size
  for i in range(n-n//size*size):
    ans[i] += 1
  return size, ans

for i in range(4, 25):
  print(f'{i}: {squarit(i)}')

结果:

4: (2, [2, 2])
5: (2, [3, 2])
6: (2, [3, 3])
7: (2, [4, 3])
8: (2, [4, 4])
9: (3, [3, 3, 3])
10: (3, [4, 3, 3])
11: (3, [4, 4, 3])
12: (3, [4, 4, 4])
13: (3, [5, 4, 4])
14: (3, [5, 5, 4])
15: (3, [5, 5, 5])
16: (4, [4, 4, 4, 4])
17: (4, [5, 4, 4, 4])
18: (4, [5, 5, 4, 4])
19: (4, [5, 5, 5, 4])
20: (4, [5, 5, 5, 5])
21: (4, [6, 5, 5, 5])
22: (4, [6, 6, 5, 5])
23: (4, [6, 6, 6, 5])
24: (4, [6, 6, 6, 6])

关于python - python3中将整数除以 "as symmetric array as possible",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60380316/

相关文章:

python - 使用 CSS/HTML/Python/SASS(但没有 JS)根据值更改表格单元格的背景颜色?不需要动态

python - 了解每一层的Keras权重矩阵

python - 检查多个列的值是否相同(python)

python - 如何通过单击按钮重新执行我的 Python 程序

java - 检查对称数

python - 从 Python 运行 Stata 并确保没有错误

Python程序,方便用户查询

python-3.x - 如何使用boto和python3在CloudFront中使对象无效?

python - 如何在Python中高效地仅计算此操作的上三角形?

java - 对称矩阵Java构造错误